Cómo encontrar frases comunes en un gran cuerpo de texto

Estoy trabajando en un proyecto en el momento en el que necesito seleccionar las frases más comunes en un gran cuerpo de texto. Por ejemplo, digamos que tenemos tres frases como la siguiente:

El perro saltó sobre la mujer.El perro saltó en el coche.El perro saltó subiendo las escaleras.

Del ejemplo anterior me gustaría extraer "el perro saltó"ya que es la frase más común en el texto. Al principio pensé," oh, vamos a usar un gráfico dirigido [con nodos repetidos] ":

gráfico dirigido http://img.skitch.com/20091218-81ii2femnfgfipd9jtdg32m74f.png

EDITAR: Disculpas, cometí un error al hacer este diagrama "sobre", "en" y "arriba", todos deberían vincularse de nuevo a "el".

Iba a mantener un recuento de cuántas veces aparecía una palabra en cada objeto de nodo ("el" sería 6; "perro" y "saltó", 3; etc.) pero a pesar de muchos otros problemas, surgió el principal cuando agregamos algunos ejemplos más (por favor, ignore la gramática incorrecta :-)):

Perro saltó arriba y abajo.Perro saltó como ningún perro había saltado antes.Perro saltó alegremente.

Ahora tenemos un problema ya que "perro"iniciaría un nuevo nodo raíz (al mismo nivel que" el ") y no lo identificaríamos"perro saltó"como ahora es la frase más común. Ahora estoy pensando que tal vez podría usar un gráfico no dirigido para mapear las relaciones entre todas las palabras y, finalmente, seleccionar las frases comunes, pero tampoco estoy seguro de cómo va a funcionar esto, A medida que pierdes la importante relación de orden entre las palabras.

Entonces, ¿alguien tiene alguna idea general sobre cómo identificar frases comunes en un gran cuerpo de texto y qué estructura de datos usaría?

Gracias ben

Respuestas a la pregunta(1)

Su respuesta a la pregunta