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

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

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

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

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

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

Я собирался вести подсчет того, сколько раз слово встречалось в каждом объекте узла («the» будет 6; «dog» и «jumped», 3; и т. Д.), Но, несмотря на множество других проблем, основная проблема возникла, когда мы добавим еще несколько примеров вроде (пожалуйста, не обращайте внимания на плохую грамматику :-)):

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

У нас сейчас проблема с тех порсобакаmsgstr "запустил бы новый корневой узел (на том же уровне, что и"), и мы бы не идентифицировали "собака прыгнула«как сейчас это самая распространенная фраза. Поэтому теперь я думаю, что, возможно, я мог бы использовать неориентированный график, чтобы отобразить отношения между всеми словами и в конечном итоге выбрать общие фразы, но я не уверен, как это будет работать, как вы теряете важные отношения порядка между словами.

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

Спасибо Бен

Ответы на вопрос(1)

Ваш ответ на вопрос