Алгоритм поиска связанных слов в тексте - PullRequest
6 голосов
/ 25 сентября 2011

Я хотел бы иметь слово (например, «Apple») и обработать текст (или, может быть, больше). Я хотел бы придумать связанные термины. Например: обработать документ для Apple и найти тот iPod, iPhone, Mac - это термины, связанные с «Apple».

Есть идеи, как это решить?

Ответы [ 5 ]

10 голосов
/ 27 сентября 2011

В качестве отправной точки: ваш вопрос относится к интеллектуальному анализу текста .

Существует два способа: статистический подход и обработка форм на естественном языке (nlp).

Я не знаю много о nlp, но могу кое-что сказать о статистическом подходе:

  1. Вам нужно представление ваших документов в векторном пространстве, см. http://en.wikipedia.org/wiki/Vector_space_model http://en.wikipedia.org/wiki/Document-term_matrix http://en.wikipedia.org/wiki/Tf%E2%80%93idf

  2. Чтобы выучить семантику, то есть: разные слова означают одно и то же, или одно слово может иметь разные значения, вам нужен большой текстовый корпус для изучения. Как я уже сказал, это статистический подход, поэтому вам нужно много образцов. http://www.daviddlewis.com/resources/testcollections/

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

  3. Вы должны извлечь скрытые факторы из этого корпуса. Наиболее распространенными являются:

    Эти методы включают в себя много математики. Либо вы его копаете, либо вам нужно найти хорошие библиотеки.

Я могу порекомендовать следующие книги:

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

Что я хотел бы сделать, это получить все слова в тексте и составить список частот (как часто каждое слово появляется).Возможно также добавить к этому эвристический фактор на том, как далеко слово от "Apple".Затем прочитайте несколько документов и вычеркните слова, которые встречаются не во всех документах.Затем установите приоритеты на основе частоты и расстояния от ключевого слова.Конечно, вы получите много мусора и, возможно, пропустите некоторые подходящие слова, но, регулируя эвристику, вы должны получить хотя бы несколько приличных совпадений.

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

Как и весь ИИ, это очень сложная проблема. Вы должны изучить обработку естественного языка , чтобы узнать о некоторых проблемах.

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

1 голос
/ 26 сентября 2011

Техника, которую вы ищете, называется Скрытый семантический анализ (LSA).Это также иногда называют скрытой семантической индексацией.Техника основана на идее, что связанные понятия встречаются вместе в тексте.Это использует статистику, чтобы построить отношения слова.Учитывая достаточно большой объем документов, это определенно решит вашу проблему с поиском связанных слов.

0 голосов
/ 26 сентября 2011
...