Как найти общие фразы в большом тексте
Я работаю над проектом в тот момент, когда мне нужно выбрать самые распространенные фразы в огромном тексте. Например, у нас есть три предложения, например:
- Собака прыгнула над женщиной.
- Собака прыгнула в машину.
- Собака прыгнула вверх по лестнице.
Из приведенного выше примера я хотел бы извлечь "собаку вскочил", поскольку это самая распространенная фраза в тексте. Сначала я подумал: "Ох позволяет использовать ориентированный граф [с повторяющимися узлами]":
ориентированный граф http://img.skitch.com/20091218-81ii2femnfgfipd9jtdg32m74f.png
РЕДАКТИРОВАТЬ. Извиняюсь, я допустил ошибку, сделав эту диаграмму "сверху", "в" и "вверх", чтобы все связывались с "the" .
Я собирался подсчитать, сколько раз было слово в каждом объекте node ( "the" было бы "6", "собака" и "подпрыгнувшая", 3 и т.д.), но, несмотря на многие другие проблемы, главный из них появился, когда мы добавили еще несколько примеров (пожалуйста, игнорируйте плохую грамматику:-)):
- Собака прыгнула вверх и вниз.
- Собака прыгнула, как ни одна собака никогда не прыгала раньше.
- Собака прыгнула счастливо.
Теперь у нас есть проблема, так как "собака" запускает новый корень node (на том же уровне, что и "the" ), и мы не будем идентифицировать "собаку в прыжке", как теперь наиболее распространенную фразу. Итак, теперь я думаю, что, возможно, я мог бы использовать неориентированный граф для сопоставления отношений между всеми словами и в конечном итоге выбрать общие фразы, но я не уверен, как это будет работать, поскольку вы теряете важную взаимосвязь между слова.
У кого-нибудь есть общие идеи о том, как определить общие фразы в большом тексте и какую структуру данных я буду использовать.
Спасибо,
Бен
Ответы
Ответ 1
Проверьте этот связанный вопрос: Какие методы/инструменты существуют для обнаружения общих фраз в кусках текста? Также связано с самая длинная общая проблема подстроки.
Я разместил это раньше, но я использую R для всех моих задач по добыче данных и хорошо подходит для этого вид анализа. В частности, посмотрите на пакет tm
. Вот некоторые релевантные ссылки:
В общем случае существует большое количество пакетов интеллектуального анализа текста в представлении "Обработка естественного языка" на CRAN.