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