There are several factors which should be taken into consideration:
-->The visitor may come across the ads which are different from those which you see.The ads may look relevant for him inspite of the fact that you are able to see just those irrelevant ads.
-->The ads may be appearing because the advertiser is ready to pay more.
-->Some words included in your content can misguide the Adsense bot.The words like RSS, blog, post etc. may make it feel that the website is about blogging.
How to get targeted ads in Adsense?
Here are some ways to make sure that you always get relevant ads:
1.Keyword density:Concentrate on the topic you want to share with the readers.Find out the words about which you want the ads to appear.Try to use those words more in your posts.
2.Competitive ad filter:This feature introduced by Google will help you to keep the irrelevant ads away from your website.Right click on the ad, select "Copy Shortcut" and paste in notepad.Copy the part between "adurl= " and "&client" and paste it in the competitive filter.This will block that ad.
3.Section targetting: This is the feature provided by Google itself.Google allows us to ask their bots to serve the ads which are related to some specific section (like post title, post content).To implement section targetting, refer the post: How to implement adsense section targetting?
4.Add Meta tags
4.Add Meta tags
The <meta> tag provides metadata about the HTML document. Metadata will not be displayed on the page, but will be machine parsable.
Meta elements are typically used to specify page description, keywords, author of the document, last modified, and other metadata.
The <meta> tag always goes inside the head element.
The metadata can be used by browsers (how to display content or reload page), search engines (keywords), or other web services.
<head>
<meta name="description" content="Free Web tutorials" />
<meta name="keywords" content="HTML,CSS,XML,JavaScript" />
</head>