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

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

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

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

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

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

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

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

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

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

Спасибо, Бени

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

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