本当に貧弱な答え (「理解」がないことを示しています) - しかし、クレイジーな刺し傷として、(コードを介して) (たとえば)「+Fishing +Sport」、「+Fishing +Cooking」などの google をヒットできます (つまり、各単語をクロス結合し、カテゴリ) - Google の戦いに勝利しましょう! つまり、「ヒット」が最も多い組み合わせが選択されます...
例 (結果が最初):
weather: fish
sport: ball
weather: hat
fashion: trousers
weather: snowball
weather: tornado
コードあり (TODO: スレッドを追加 ;-p):
static void Main() {
string[] words = { "fish", "ball", "hat", "trousers", "snowball","tornado" };
string[] categories = { "sport", "fashion", "weather" };
using(WebClient client = new WebClient()){
foreach(string word in words) {
var bestCategory = categories.OrderByDescending(
cat => Rank(client, word, cat)).First();
Console.WriteLine("{0}: {1}", bestCategory, word);
}
}
}
static int Rank(WebClient client, string word, string category) {
string s = client.DownloadString("http://www.google.com/search?q=%2B" +
Uri.EscapeDataString(word) + "+%2B" +
Uri.EscapeDataString(category));
var match = Regex.Match(s, @"of about \<b\>([0-9,]+)\</b\>");
int rank = match.Success ? int.Parse(match.Groups[1].Value, NumberStyles.Any) : 0;
Debug.WriteLine(string.Format("\t{0} / {1} : {2}", word, category, rank));
return rank;
}