Первые мысли:
- выбрасывать шумовые слова (а вы, некоторые, ...).
- подсчитать все остальные слова и отсортировать по количеству.
- для каждого слова в двух статьях, добавить оценку в зависимости от суммы (или продукта или какой-либо другой формулы) количеств.
- оценка представляет сходство.
Похоже, что статья, в первую очередь о Дональде Рамсфелде, содержала бы эти два слова совсем немного, поэтому я и взвешиваю их в статье.
Однако может быть одна статья, в которой упоминается Уоррен Баффет много раз с Биллом Гейтсом, а в другой - Билл Гейтс и Microsoft много раз. Корреляция там будет минимальной.
На основании вашего комментария:
Так что, если статья была о Саддаме Хусейне, то алгоритм мог бы порекомендовать что-нибудь о деловых отношениях Дональда Рамсфелда в Ираке.
этого не произошло бы, если бы в статье Саддама также не упоминался Ирак (или Дональд).
Вот с чего бы я начал, и я уже вижу потенциальные дыры в теории (статья о Билле Гейтсе будет очень похожа на статью о Билле Клинтоне, если их имена будут часто упоминаться). Об этом вполне могут позаботиться все остальные слова (Microsoft для одного Билла, Хиллари для другого).
Я бы, возможно, попробовал выполнить тест, прежде чем пытаться внедрить функцию близости слов, поскольку это очень усложнит ее (может быть, излишне).
Еще одним возможным улучшением было бы поддержание «жестких» ассоциаций (например, всегда добавлять слово «Афганистан» в статьи с Усамой бен Ладеном в них). Но опять же, это требует дополнительного обслуживания для, возможно, сомнительной ценности, поскольку в статьях об Усаме почти наверняка упоминается и Афганистан.