Актуальные темы: термины из одного слова против составных - PullRequest
3 голосов
/ 02 июня 2009

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

Моя следующая проблема: у меня есть термины (состоящие из 1-3 слов) в моей базе данных, связанные со временем, когда они были упомянуты. Но наиболее актуальными темами всегда являются термины, состоящие только из одного слова, поскольку одна часть термина ВСЕГДА упоминается чаще, чем полный термин. Пример: вчера были опубликованы 3 новостные статьи о «Бараке Обаме», а сегодня - 148. Затем «Барак Обама», конечно, растет. Но «Барак» тоже растет, и поэтому это актуальная тема.

Как я могу указать продолжительность семестра, когда вычисляю актуальные темы? Я не хочу использовать другой алгоритм, я полностью доволен алгоритмом выше. Могу ли я умножить оценку всех двухсловных терминов на 1,5 или около того?

Подробный пример: мои главные тренды: Microsoft, Китай, Хиллари Клинтон, Даллас Маверикс. Я хотел сказать, что «Хиллари Клинтон» и «Даллас Маверикс» никогда не ранжируются № 1 или № 2, потому что они являются терминами из двух слов. «Microsoft» и «Китай» - это термины, состоящие из одного слова, поэтому они всегда оцениваются лучше. Есть ли возможность решить эту проблему?

Я надеюсь, что вы можете мне помочь. Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 06 июня 2009

Говоря об Обаме, да, вы можете. :)

Может быть, вы могли бы проверить, содержатся ли ваши высокие тренды в более низких тенденциях, прежде чем выводить их. Я бы попробовал что-то вроде этого:

Пример: у вас есть

  1. Обама
  2. Air France
  3. 1012 * Barack *
  4. A330
  5. Барак Обама
  6. ...

Если список, который вы хотите вывести, не слишком длинный (например, вы набираете только 100 лучших результатов), вы выбираете только те, которые не содержатся в других, возможно добавляя бонус 50% к тому, который содержит другие. (Возможно, вам придется принять 150 первых значений, затем выполнить лечение, удалив избыточность, которая может составить что-то вроде 110, затем обрезать 10 последних значений, чтобы вернуть ваши 100 значений.)

«Барак Обама» содержит как «Барак», так и «Обама», так что вы можете дать ему бонус в 100%, и ваш список может составить:

  1. Air France
  2. Барак Обама
  3. A330
  4. ...

Надеюсь, это не сильно изменит ваш алгоритм, но на самом деле вы можете подключить эту обработку в конце, перед выводом.

РЕДАКТИРОВАТЬ:

Или, если вы действительно не перечисляете лучшие результаты, а вычисляете только один за другим, вы можете разделить свой тренд, чтобы вычислить взвешенную сумму его компонентов (например, тренд "Барака Обамы" - "Барак Обама "Барак" + 0,5 * "Обама" + 0,5 *)

0 голосов
/ 07 июня 2009

Опираясь на ответ @ subtenante, формула, которую вы должны искать, должна основываться на том факте, что «Барак Обама» всегда содержит «Барак», а также «Обама» ...
такая простая математика показала бы, что она должна быть:

"Barack"s + "Obama"s - "Barack Obama"s

... при условии, конечно, что ваши частичные термины присутствуют только в правильном контексте, либо индивидуально, либо в сочетании с полным термином - то есть «Барак» всегда будет означать «Барак Обама» (а не, например, « Эхуд Барак ").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...