Алгоритм сходства (по теме) новостей - PullRequest
3 голосов
/ 09 апреля 2009

Я хочу определить сходство содержания двух новостных элементов, сходных с новостями Google, но отличающихся в том смысле, что я хочу иметь возможность определить основные темы, а затем определить связанные темы.

Так что, если статья была о Саддаме Хусейне, то алгоритм мог бы порекомендовать что-нибудь о деловых отношениях Дональда Рамсфелда в Ираке.

Если вы можете просто бросить ключевые слова, такие как k-ближайшие соседи, и немного объяснить, почему они работают (если можете), я сделаю остальную часть исследования и настрою алгоритм. Просто ищу место для начала, так как я знаю, что кто-то там уже пробовал нечто подобное раньше.

Ответы [ 2 ]

5 голосов
/ 09 апреля 2009

Первые мысли:

  • выбрасывать шумовые слова (а вы, некоторые, ...).
  • подсчитать все остальные слова и отсортировать по количеству.
  • для каждого слова в двух статьях, добавить оценку в зависимости от суммы (или продукта или какой-либо другой формулы) количеств.
  • оценка представляет сходство.

Похоже, что статья, в первую очередь о Дональде Рамсфелде, содержала бы эти два слова совсем немного, поэтому я и взвешиваю их в статье.

Однако может быть одна статья, в которой упоминается Уоррен Баффет много раз с Биллом Гейтсом, а в другой - Билл Гейтс и Microsoft много раз. Корреляция там будет минимальной.

На основании вашего комментария:

Так что, если статья была о Саддаме Хусейне, то алгоритм мог бы порекомендовать что-нибудь о деловых отношениях Дональда Рамсфелда в Ираке.

этого не произошло бы, если бы в статье Саддама также не упоминался Ирак (или Дональд).

Вот с чего бы я начал, и я уже вижу потенциальные дыры в теории (статья о Билле Гейтсе будет очень похожа на статью о Билле Клинтоне, если их имена будут часто упоминаться). Об этом вполне могут позаботиться все остальные слова (Microsoft для одного Билла, Хиллари для другого).

Я бы, возможно, попробовал выполнить тест, прежде чем пытаться внедрить функцию близости слов, поскольку это очень усложнит ее (может быть, излишне).

Еще одним возможным улучшением было бы поддержание «жестких» ассоциаций (например, всегда добавлять слово «Афганистан» в статьи с Усамой бен Ладеном в них). Но опять же, это требует дополнительного обслуживания для, возможно, сомнительной ценности, поскольку в статьях об Усаме почти наверняка упоминается и Афганистан.

0 голосов
/ 09 апреля 2009

В данный момент я думаю о чем-то подобном.

Каждое нешумовое слово является измерением. Каждая статья представлена ​​вектором, в котором слова, которые не появляются, представлены нулем, а те, которые появляются, получают значение, равное количеству появившихся слов, деленное на общее количество слов на странице. Тогда я могу взять евклидово расстояние между каждой из точек в этом пространстве, чтобы получить сходство любых двух статей.

Следующим шагом будет определение кластеров статей, а затем определение центральной точки для каждого кластера. Затем вычислите евклидово расстояние между любыми двумя кластерами, которое дает сходство тем.

Baaah Я думаю, напечатав это, я решил свою собственную проблему. Конечно, только на очень высоком уровне, я уверен, что когда я приступлю к этому, я найду проблемы ... дьявол всегда в деталях.

Но комментарии и улучшения по-прежнему высоко ценятся.

...