Как найти общие фразы в большом тексте

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

  • Собака прыгнула над женщиной.
  • Собака прыгнула в машину.
  • Собака прыгнула вверх по лестнице.

Из приведенного выше примера я хотел бы извлечь "собаку вскочил", поскольку это самая распространенная фраза в тексте. Сначала я подумал: "Ох позволяет использовать ориентированный граф [с повторяющимися узлами]":

ориентированный граф http://img.skitch.com/20091218-81ii2femnfgfipd9jtdg32m74f.png

РЕДАКТИРОВАТЬ. Извиняюсь, я допустил ошибку, сделав эту диаграмму "сверху", "в" и "вверх", чтобы все связывались с "the" .

Я собирался подсчитать, сколько раз было слово в каждом объекте node ( "the" было бы "6", "собака" и "подпрыгнувшая", 3 и т.д.), но, несмотря на многие другие проблемы, главный из них появился, когда мы добавили еще несколько примеров (пожалуйста, игнорируйте плохую грамматику:-)):

  • Собака прыгнула вверх и вниз.
  • Собака прыгнула, как ни одна собака никогда не прыгала раньше.
  • Собака прыгнула счастливо.

Теперь у нас есть проблема, так как "собака" запускает новый корень node (на том же уровне, что и "the" ), и мы не будем идентифицировать "собаку в прыжке", как теперь наиболее распространенную фразу. Итак, теперь я думаю, что, возможно, я мог бы использовать неориентированный граф для сопоставления отношений между всеми словами и в конечном итоге выбрать общие фразы, но я не уверен, как это будет работать, поскольку вы теряете важную взаимосвязь между слова.

У кого-нибудь есть общие идеи о том, как определить общие фразы в большом тексте и какую структуру данных я буду использовать.

Спасибо, Бен

Ответы

Ответ 1

Проверьте этот связанный вопрос: Какие методы/инструменты существуют для обнаружения общих фраз в кусках текста? Также связано с самая длинная общая проблема подстроки.

Я разместил это раньше, но я использую R для всех моих задач по добыче данных и хорошо подходит для этого вид анализа. В частности, посмотрите на пакет tm. Вот некоторые релевантные ссылки:

В общем случае существует большое количество пакетов интеллектуального анализа текста в представлении "Обработка естественного языка" на CRAN.