So why is it finding all these combinations which are not really noun +noun?

Because guessing the word's part-of-speech is error-prone, so we return all readings. A disambiguator can sometimes be used to remove the invalid readings (http://languagetool.wikidot.com/developing-a-disambiguator).