Maybe try to "fill" your pages with more text content, I got some sites with almost no text content, and adsense have a lot of trouble finding related topics.
The ads displayed depends on the contents. Target the keywords and write the contents without spamming. The bot will recognize it and display the suitable ads but it takes almost a day. Wait and watch
Implement section targeting, after putting more plain text in your page. http://www.dagsensecodes.com/2006/11/impleneting-section-targeting-to-get.html
Emphasize different words. Emphasize a sligntly broader scope of words. Use section targeting. <!-- google_ad_section_start --> relevant content <!-- google_ad_section_end --> Code (markup): Add domains from a dozen or so irrelevant ads to your competitive ad filter. Take a look at how many people are showing ads on the same subject matter as you, sometimes they just run out of targeted ads to show so they show generic ads instead of public service annoucements.