2010-07-13 19 views
9

El siguiente texto no estructurado tiene tres temas distintos: Stallone, Filadelfia y la revolución americana. ¿Pero qué algoritmo o técnica usarías para separar este contenido en párrafos distintos?¿Cómo usar NLP para separar un contenido de texto no estructurado en párrafos distintos?

Los clasificadores no funcionarán en esta situación. También traté de usar el analizador de similitud de Jaccard para encontrar la distancia entre oraciones sucesivas y traté de agrupar oraciones sucesivas en un párrafo si la distancia entre ellas era menor que un valor dado. hay algun metodo mejor?

Este es mi texto de muestra:

Sylvester Stallone Gardenzio, apodado Sly Stallone, es un actor, director de cine y guionista. Stallone es conocido por su machismo y sus papeles de acción en Hollywood. La película de Stallone, Rocky, fue incluida en el Registro Nacional de Películas, además de tener sus accesorios para películas en el Museo Smithsonian. El uso de Stallone de la entrada principal del Museo de Arte de Filadelfia en la serie Rocky llevó al área a ser apodada Rocky Steps. Un centro comercial, educativo y cultural, Filadelfia fue una vez la segunda ciudad más grande del Imperio Británico (después de Londres).), y el centro social y geográfico de las 13 colonias americanas originales. Fue una pieza central de la historia de los Estados Unidos, sede de muchas de las ideas y acciones que dieron origen a la Revolución Americana y la independencia. La Revolución Americana fue la agitación política de la última mitad del siglo XVIII en la que se unieron trece colonias de Norteamérica juntos para liberarse del Imperio Británico, combinándose para convertirse en los Estados Unidos de América. Primero rechazaron la autoridad del Parlamento de Gran Bretaña para gobernarlos desde el extranjero sin representación, y luego expulsaron a todos los funcionarios reales. En 1774, cada colonia había establecido un Congreso Provincial, o una institución gubernamental equivalente, para formar estados autónomos individuales.

Respuesta

1

No sé mucho sobre esto, por lo que esta respuesta es un trozo para una mejor. Sin embargo, dos puntos

  1. Un nombre para este problema es la identificación tema y http://research.microsoft.com/en-us/um/people/cyl/download/papers/thesis97.pdf es un documento citado con frecuencia en esta área.
  2. Esto es probablemente muy difícil. No habría separado a Filadelfia de American Revolution si no me lo hubieras dicho.
14

Así que he trabajado en NLP durante mucho tiempo, y este es un problema realmente difícil que está tratando de abordar. Nunca podrá implementar una solución con un 100% de precisión, por lo que debe decidir de antemano si es mejor tomar decisiones falsas negativas (no encontrar un punto de segmentación de párrafo) o falsas positivas (insertar una segmentación espuria) puntos). Una vez que lo haga, ensamble un corpus de documentos y anote los puntos de segmentación reales que espera encontrar.

Una vez que hayas hecho eso, necesitarás un mecanismo para encontrar los puntos EOS (final de la oración). Luego, entre cada par de oraciones, necesitarás tomar una decisión binaria: ¿debería insertarse un límite de párrafo aquí?

Puede medir la cohesión de conceptos dentro de cada párrafo en función de diferentes puntos de segmentación. Por ejemplo, en un documento con cinco frases (ABCDE), hay dieciséis maneras diferentes para segmentar que:

ABCDE ABCD|E ABC|DE ABC|D|E AB|CDE AB|CD|E AB|C|DE AB|C|D|E 
A|BCDE A|BCD|E A|BC|DE A|BC|D|E A|B|CDE A|B|CD|E A|B|C|DE A|B|C|D|E 

Para medir la cohesión, se puede utilizar una similitud-oración a oración métrica (basado en alguna colección de características extraídas para cada oración). En aras de la simplicidad, si dos oraciones adyacentes tienen una similitud de 0.95, entonces hay un "costo" de 0.05 para combinarlos en el mismo párrafo. El costo total de un plan de segmentación de documentos es el agregado de todos los costos de unión de oraciones. Para llegar a la segmentación final, elija el plan con el costo total más bajo.

Por supuesto, para un documento con más de unas pocas frases, hay demasiadas posibles permutaciones de segmentación diferentes a la fuerza bruta para evaluar todos sus costos. Entonces necesitarás algo de heurística para guiar el proceso. La programación dinámica podría ser útil aquí.

En cuanto a la extracción de la función de frase real ... bueno, ahí es donde se vuelve realmente complicado.

Probablemente desee ignorar palabras altamente sintácticas (palabras conjuntivas como preposiciones, conjunciones, verbos de ayuda y marcadores de cláusulas) y basar su similitud en palabras más semánticamente relevantes (sustantivos y verbos, y en menor medida, adjetivos y adverbios)

Una implementación ingenua podría simplemente contar el número de instancias de cada palabra y comparar los recuentos de palabras en una oración con los recuentos de palabras en una oración adyacente. Si aparece una palabra importante (como "Filadelfia") en dos oraciones adyacentes, es posible que obtengan una puntuación alta de similitud.

Pero el problema es que dos oraciones adyacentes pueden tener temas muy similares, incluso si esas oraciones tienen conjuntos de palabras que no se superponen por completo.

Por lo tanto, debe evaluar el "sentido" de cada palabra (su significado específico, dado el contexto circundante) y generalizar ese significado para abarcar un dominio más amplio.

Por ejemplo, representar una oración con la palabra "verdoso" en ella. Durante el proceso de extracción de mi característica, ciertamente incluiría el valor léxico exacto ("verdoso") pero también aplicaría una transformación morfológica, normalizando la palabra a su forma raíz ("verde"). Luego busco esa palabra en una taxonomía y descubro que es un color, que puede generalizarse más como un descriptor visual. Entonces, basado en esa palabra, podría agregar cuatro características diferentes a mi colección de características de oraciones ("verdoso", "verde", "[color]", "[visual]"). Si la siguiente oración en el documento se refiere al color "verde" de nuevo, entonces las dos oraciones serían muy similares. Si la siguiente oración usa la palabra "rojo", entonces todavía tienen un grado de similitud, pero en menor medida.

Entonces, hay algunas ideas básicas. Podría elaborar estos ad infinitum y modificar el algoritmo para obtener un buen rendimiento en su conjunto de datos específico. Hay un millón de formas diferentes de atacar este problema, pero espero que algunas de estas sugerencias sean útiles para comenzar.

0

Para esta muestra, el mejor método es encontrar paradas completas que no estén seguidas de un espacio.

Cuestiones relacionadas