software proyectos programacion procesamiento natural modelos lenguaje componentes articulos aplicaciones parsing nlp ocaml

parsing - proyectos - procesamiento de lenguaje natural software



¿Ideas para proyecto de procesamiento de lenguaje natural? (9)

  1. Filtrado de lenguaje detestable : creo que esto se reducirá a un proceso muy similar al filtrado de correo no deseado. Es decir, contando la frecuencia de un conjunto de palabras más o menos ''desagradables''. No parece que tengas la posibilidad de hacer algo particularmente inteligente, a menos que también utilices otras fuentes de información (por ejemplo, la estructura de los enlaces sociales compartidos entre el remitente y el destinatario, tal vez). Por otro lado, el acoso en línea es algo muy serio y puede apostar a que Facebook / Myspace y las otras redes sociales se preocupan mucho por abordarlo.

  2. Análisis estilístico : se ha realizado algún trabajo sobre esto en varias formas, a menudo bajo el nombre de análisis de autoría. Shlomo Argamon trabaja mucho en esta área y probablemente podrías descubrir mucho más de las referencias en sus artículos. Una de las mejores maneras de crear un perfil de autor es aprender a distribuir su uso de un conjunto de palabras clave (también conocidas como palabras funcionales), como ''y'', ''pero'', ''si'', etc. Creo que hay mucho más el alcance para hacer algo nuevo e interesante en esta área - el análisis de autoría en los datos de Internet es un problema difícil - pero también hay mucho más alcance para fallar.

  3. Chat bot : tienes razón, este es un proyecto bastante estándar. También es bastante difícil medir el éxito / el fracaso. Creo que el proyecto sería más convincente si fuera un chat-bot con algún tipo de propósito, como responder preguntas en un dominio limitado, pero eso es algo que es muy difícil de hacer bien.

El resto es realmente demasiado vago para hacer comentarios, lo siento.

No hay ninguna biblioteca de PNL que conozca en OCaml, simplemente no es un lenguaje de programación particularmente popular. Sin embargo, sí conozco una biblioteca de aprendizaje automático en Ocaml, llamada MEGAM , escrita por Hal Daume, que es un muy buen investigador de la PNL, que se ha utilizado para tareas de la PNL. Sin embargo, tengo la sensación de que descifrar MEGAM y usarlo para hacer alguna tarea de PNL podría ser un proyecto demasiado grande para emprender.

Algunas otras ideas:

  • Análisis del sentimiento - Un área de investigación muy de moda. Puede hacer esta tarea tan fácil o difícil como lo desee, desde calificar un documento como positivo / negativo hasta extraer temas específicos y generar una puntuación de sentimiento para cada uno.
  • Resolución de la referencia / anáfora : una tarea difícil pero muy importante. Algunos enfoques utilizan una representación gráfica (cada mención es un nodo con bordes entre ellos si se citanen) para aplicar cosas como la transitividad.
  • Clasificación de documentos : puede probar y aprender un sistema en el conjunto de datos de StackOverflow para sugerir etiquetas para una pregunta determinada. Es un problema bastante conocido con algunas técnicas establecidas, pero es un conjunto de datos interesantes y tiene una aplicación obvia y útil para el mundo real. También puede ver si puede encontrar las características específicas de una pregunta (selección de palabras, longitud, formato, puntuación, etc.) que hacen que sean altamente votadas.
  • Haiku Generation : una especie de tonto, pero siempre pensé que era una idea interesante. El conteo de sílabas se podría hacer con el diccionario de pronunciaciones de CMU . Debería ser muy divertido, si no particularmente útil.

Tengo que hacer un proyecto final para mi clase de lingüística computacional. Hemos estado usando OCaml todo el tiempo, pero también estoy familiarizado con Java. Hemos estudiado morfología, MFS, recolección de árboles de análisis, análisis de CYK, intentos, autómatas de empuje, expresiones regulares, teoría del lenguaje formal, algo de semántica, etc.

Aquí hay algunas ideas que se me han ocurrido. ¿Tienes algo que crees que sería genial?

  1. Un script que escanea los hilos de Facebook en busca de comentarios desagradables * y los oculta silenciosamente con JS (esto se ejecutaría con el consentimiento del usuario, obviamente)

  2. Un análisis de una pieza de escritura utilizando semántica, sintaxis, uso de puntuación y otras métricas, para tratar de "huellas digitales" del autor. Podría usarse para determinar si dos obras probablemente estén escritas por el mismo autor. O bien, alguien podría escribir un montón de escritos que ha terminado con el tiempo y tener una idea de cómo ha cambiado su estilo.

  3. Un bot de chat (menos interesante / original)

Se me puede permitir usar bibliotecas preexistentes para hacer esto. ¿Existe alguna para OCaml? Sin una biblioteca / kit de herramientas, las tres ideas anteriores son probablemente inviables, a menos que las limite a un dominio muy específico.

Ideas de nivel inferior:

  1. Operaciones en máquinas de estados finitos: minimizando, componiendo transductores, demostrando que un FSM está en un estado mínimo posible. Estoy muy interesado en la teoría de grafos, por lo que cualquier superposición con FSM podría ser un buen lugar para explorar. (¿Qué más puedo hacer con FSMs?)

  2. ¿Algo genial con expresiones regulares?

  3. Algo genial con CYK?

¿Alguien más tiene ideas interesantes?

* detestable se define como tener ciertos patrones típicos de los estudiantes de secundaria. La vaguedad de este término no es un problema; para el crédito podría definir lo que quiera y apuntar a eso.


1 - Lo que sería genial para mí es cuando revises los trabajos académicos y necesito saber qué parte del trabajo es: -completamente original -lo que es puramente copiar / pegar -lo que es una paráfrasis pura -lo que dice exactamente lo opuesto a Una referencia previa. Idealmente, verificará las referencias dentro del documento + todo el trabajo anterior de los autores (y puede revisar las referencias del citario para buscar referencias que hayan sido potencialmente omitidas -voluntariamente-). Eso sería realmente útil.

2- Me gustaría una herramienta que compruebe todas las preguntas en SO, busque el mismo tipo de preguntas con un montón de respuestas y genere una respuesta que pueda ser adecuada.


1) Tome un cuerpo de texto y convierta todas las referencias de "ella" a "él" o "su". Básicamente, esta pregunta de SO , que parece un proyecto limpio.

2) Supongo que ha estudiado el enfoque de la gramática transformacional de los árboles (teoría de la barra X, etc.) Existe esta otra teoría sintáctica llamada Gramática de Estructura de Frases Dirigida por la Cabeza (HPSG) que no postula el uso de " jerarquía "para describir la sintaxis, pero también utiliza matrices de valor de atributo.

Una de las ventajas de usar este sistema es que puede describir la sintaxis como gráficos acíclicos dirigidos, en lugar de árboles. Su profesor podría ser capaz de señalarle a más / mejores recursos, pero esta página (vagamente) explica la idea. Desafortunadamente, mi experiencia ha sido que los recursos de HPSG en la red son bastante escasos.

Pero, una vez que tenga una idea de las estructuras de características de HPSG, puede buscar en la literatura personas (lingüistas y lingüistas computacionales) que hayan encontrado formas de usar las representaciones gráficas para cosas interesantes.

¿Tal vez podrías crear un convertidor de gráficos transformacional de árbol a HPSG? (Tendría que saber cómo cosas como "criar", "controlar", "pasivizaciones", etc. se transformarían en "SLASH", "REL", etc. de HPSG)


1a. script que escanea facebook ... ¿Cómo planeas definir ''desagradable''? eso suena bastante dificil

2a. semejanza. la sintaxis y la semántica, y otras cosas "lingüísticas" suenan difíciles. Sin embargo, las personas han hecho este tipo de cosas con otros métodos más numéricos con gran éxito, por ejemplo, utilizando la descomposición del valor singular. Creo que este método también se ha incorporado en el software utilizado para verificar si hay plagio. Este método también suele denominarse análisis semántico latente o mapeo semántico latente.

svdlibc: http://tedlab.mit.edu/~dr/svdlibc/

1b. cosas fsm No estoy seguro de qué quiere decir con "demostrar que un transductor es mínimo". esta es una operación bastante estándar y está incluida en casi cualquier kit de herramientas que pueda encontrar. Si está interesado en fsms, eche un vistazo a la

Kit de herramientas de AT&T: http://www2.research.att.com/~fsmtools/fsm/

o el kit de herramientas OpenFST: http://www.openfst.org/

Las fsms están creciendo en popularidad como un método de principios y unificado para hacer el reconocimiento de voz. Mi trabajo de posgrado se centra en este tema, y ​​de hecho es muy interesante.

¿Qué hay de construir un analizador o chunker basado en hmm, o un simple decodificador viterbi? si reúne un conjunto de entrenamiento decente (para comenzar, tendría que etiquetarlo usted mismo) podría aproximarse a una versión simple de su etiquetador de ''comentarios desagradables'' y usarlo, tal vez con algún tipo de clasificador para ''censurar'' o eliminar Los comentarios desagradables.


No aconsejo el uso de Java, a menos que haya una biblioteca que necesite desesperadamente. Hice un proyecto final de PNL en Java una vez y descubrí que carece de mucha flexibilidad que a menudo se necesita (sistema de tipo estricto, sin funciones anónimas, etc.). Desafortunadamente, no conozco OCaml, pero en caso de que conozca Python, hay muchas bibliotecas de PNL disponibles para eso, por ejemplo, el NLTK muy completo y desarrollado activamente.


No sé que una gran parte del plan de estudios para su clase sea tan útil para los problemas 1 o 2. Algunas de las mejores técnicas para este tipo de problemas hacen cosas lingüísticas realmente simples (como parte del etiquetado del habla, simplemente eliminando palabras de paro, y mirando bigramas y trigramas, y tiene un componente de clasificación de texto de aprendizaje automático que no es demasiado sofisticado por sí solo (técnicas estándar como clasificadores bayesianos ingenuos, clasificadores de entropía máxima, máquinas de vectores de soporte son prácticamente cajas negras en términos de algoritmos y realizar bien). Eche un vistazo a estos documentos de encuesta sobre la clasificación de textos temáticos y la detección de autoría para tener una idea de dónde puede comenzar.

Algo mejor que se adapte al plan de estudios que ha descrito podría ser construir un analizador morfológico para un idioma extranjero con el que esté familiarizado, o construir un stemmer (la versión de un analizador morfológico de un hombre pobre) que asigne términos relacionados con morfología a la misma entrada en un índice, algo que pueden usar los motores de búsqueda.

Si no necesita crear una nueva técnica para su clase (es decir, si tiene una licenciatura), hay una gran cantidad de tareas NLP estándar que podría implementar en OCaml, por ejemplo, un analizador entrenado en Penn Treebank, un analizador de algunos otros formalismos gramaticales, un etiquetador de parte del discurso o, literalmente, docenas de otras aplicaciones.


Puedo sugerirle que busque en el lenguaje de programación Prolog. Es un lenguaje de programación de lógica declarativa con el procesamiento del lenguaje natural como uno de sus primeros objetivos. Alrededor de la mitad de la página de Wiki, se muestra un ejemplo de cómo puede usarlo como un analizador de idiomas. Puedes hacer que genere fácilmente miles de oraciones y frases gramaticalmente correctas. Es una herramienta muy poderosa. Creo que usarlo sería muy interesante.


Solo quería decir que me encanta tu segunda idea . Parece que tiene todo que ver con la PNL. Me parece muy interesante. OMI, me gustaría ir con este, seguro. Pero también debes considerar el que más te atraiga y no solo las opiniones de los demás.

En cuanto al idioma a elegir, creo que debes elegir el idioma con el que te sientas más cómodo. No estoy familiarizado con las bibliotecas, pero he visto muchas cosas de PNL realizadas en Python y Java.


Utilice la API de Twitter para extraer todos los tweets de una conversación social y combinar / resumir / publicar el contenido como un ensayo / artículo / blog / etc que alguien pueda leer en una sola pieza. Correlacionar conceptos e ideas, ampliar referencias, mejorar gramática. bettween.com como bettween.com pero bettween.com con PNL.