Лучшее программное обеспечение IR для моего использования? - PullRequest
1 голос
/ 19 сентября 2011

Я хочу взять то, о чем люди болтают в чате, и выполнить следующий поиск информации:

  1. Получить ключевые слова
  2. Игнорировать все шумовые слова, в основном глагол и существительные.
  3. Выполните обработку ключевых слов, чтобы я не сохранял одно и то же ключевое слово во многих формах.
  4. Если ключевое слово синонима уже сохранено в моем хранилище, то вместо существующего синонима следует использовать существующий.новое ключевое слово
  5. Сохранение обработанного ключевого слова в постоянном хранилище со ссылкой на сообщение чата, в котором оно находилось, и пользователем, который его произнес

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

У меня к вам следующий вопрос: что является лучшим C / C ++ или.NET инструменты для выполнения вышеуказанного?

1 Ответ

2 голосов
/ 20 сентября 2011

Я частично согласен с комментарием @larsmans.Ваш вопрос на практике может действительно быть более сложным, чем вопрос, который вы разместили.

Однако, упрощая вопрос / проблему, я думаю, что ответ на ваш вопрос может быть одним из вариантов реализации Lucene: Lucene (Java), Lucene.Net (C #) или CLucene (C ++).

Следуя пунктам в вашем вопросе:

Luceneпозаботился бы о пункте 1, используя токенайзеры строк (вы можете настроить или использовать свой собственный).Для пункта 2 вы можете использовать TokenFilter подобно StopFilter , чтобы Lucene мог прочитать список стоп-слов ("the", "a", "an" ...), которые он не должениспользовать.Для пункта 3 вы можете использовать PorterStemFilter .Точка 4 немного сложнее, но ее можно выполнить с помощью настроенного TokenFilter .Пункты с 1 по 4 выполняются на этапе анализа / токенизации, за который отвечает Анализатор .

Что касается пункта 5, в Lucene вы можете хранить документы с полями.Документ может иметь произвольное количество и сочетание полей.Таким образом, вы можете создать один Документ для каждой комнаты чата со всем объединенным текстом, а другое поле документа будет ссылаться на комнату чата, из которой он был извлечен.Вы получите кучу документов Lucene, которые вы можете сравнить .Таким образом, вы можете сравнить свою текущую комнату чата с другими, чтобы увидеть, какая из них больше похожа на ту, в которой вы находитесь.

Если вам нужен только набор лучших ключевых слов для описания чата, ваши потребности ближе кизвлечение информации / автоматическое обобщение / определение темы, как сказал @larsmans.Но вы можете по-прежнему использовать Lucene для фазы синтаксического анализа / токенизации .

* Я ссылался на документы Java, но CLucene и Lucene.Net имеют очень похожие API, поэтому проблем не будетчтобы выяснить различия.

...