Dear Jane ,
As far as I know Google has a unique algorithm that presents ads which are relevant to the content of your hub.
However , it seems to be that in some cases there is no relevancy.
If you see an offensive ad in your hub , you can use the Adsense's filters.In your case you can use the contextual filter.
All you need to do is to setup your preferences in your Google Adsense account.
If you are having trouble with doing it notify me and I will upload a tutorial with screenshots.