2010-01-18 25 views
7

Hay muchos analizadores y lexers para scripts (es decir, lenguajes informáticos estructurados). Pero estoy buscando uno que pueda romper un documento de texto (casi) no estructurado en secciones más grandes, p. capítulos, párrafos, etc.lexers/analizadores para documentos de texto (no) estructurados

Es relativamente fácil para una persona identificarlos: dónde se inicia el índice, los agradecimientos o dónde comienza el cuerpo principal y es posible construir sistemas basados ​​en reglas para identificar algunos de estos (tales como párrafos).

No espero que sea perfecto, pero ¿alguien sabe de un lexer/analizador tan amplio basado en bloques? ¿O podría dirigirme hacia la literatura que pueda ayudar?

Respuesta

1

Muchos lenguajes de marcado ligeros como markdown (que, por cierto, SO usa), reStructured text y (posiblemente) POD son similares a lo que está hablando. Tienen una sintaxis mínima y dividen la entrada en partes sintácticas analizables. Es posible que pueda obtener información leyendo acerca de sus implementaciones.

+0

Me había olvidado de POD! Lo que realmente necesito parece ser una combinación de POD, reducción y texto reestructurado. Definitivamente me dieron algunos consejos. Parece que voy a tener que construir el mío. – wilson32

+0

¿Ya tiene texto o quiere empezar desde cero? ¿Quizás pueda convertir su documento existente (si tiene uno) en ReSt o algo así y usar el analizador de stock? –

+0

El problema es que no tenemos idea de cómo será el nuevo documento entrante.Sabemos que el proceso que prevemos será solo semiautomático. Sospecho que será más fácil construir un documento analizable de una copia del original que luego podemos usar como fuente para cualquier formateador relevante – wilson32

0

La mayoría de los tipos de programas de lex/yacc funcionan con una gramática bien definida. si puede definir su gramática en términos de un formato similar al BNF (que la mayoría de los analizadores aceptan una sintaxis similar), puede usar cualquiera de ellos. Eso puede estar diciendo lo obvio. Sin embargo, todavía puede ser un poco borroso en torno a los "bloques" (tokens) de texto que serían parte de su gramática. Después de todo, defina las reglas para sus tokens.

He usado Parse-RecDescent Perl module en el pasado con diferentes niveles de éxito para proyectos similares.

Lo siento, puede que no sea una buena respuesta pero más compartir mis experiencias en proyectos similares.

+0

Lucene es un indexador ¿no? ¿Realmente 'analiza' algo? –

+0

Tienes razón. Creo que estaba pensando más en el tipo de funcionalidad que 'Lucene Analyzer' te daría ... y tal vez asumiendo demasiado detrás de la pregunta también. Avíseme si cree que es engañoso. – ziya

+0

Estaba llegando a esa conclusión, pero como último recurso, hice la pregunta. Es posible que podamos definir nuestros documentos en alguna forma de BNF, que luego podemos utilizar para analizarlos. – wilson32

0
  1. Define el estándar de anotación, que indica cómo quieres separar las cosas.
  2. Vaya a Amazon Mechanical Turk y solicite a las personas que etiqueten documentos 10K utilizando su estándar de anotación.
  3. Entrenar un CRF (que es como un HMM, pero mejor) en estos datos de entrenamiento.

Si de verdad quieres seguir esta ruta, puedo profundizar en los detalles. Pero esto será mucho de trabajo.

0

intento: pygments, geshi o prettify

Se puede manejar casi cualquier cosa que tirar de ellos y son muy indulgente con los errores en su gramática, así como sus documentos.

Referencias:
gitorius utiliza prettify,
github utiliza Pygments,
rosettacode utiliza geshi,

Cuestiones relacionadas