¿Cuáles son algunos proyectos simples de PNL basados ​​en un documento de conferencia (no demasiado complejo) que un estudiante de informática puede probar? Necesito hacer un proyecto de compilador basado en PNL como parte de mi curso.

Cuando dices ‘Compiladores’ y ‘PNL’, lo primero que me sorprende de inmediato es ‘ Analizador de lenguaje natural’.

Por lo tanto, le sugiero que cree un analizador / compilador de lenguaje natural para su proyecto.

En cuanto a la literatura / documentos de la Conferencia, se han realizado muchas investigaciones en este campo durante la última década.

Como escribió que no sabe mucho sobre PNL, explicaré brevemente:

  1. ¿En qué se diferencia el análisis de los lenguajes de programación del lenguaje natural?
  2. Cómo puede usar los conceptos que aprende sobre el análisis de lenguajes de programación para crear un analizador de lenguaje natural.

En su curso de ‘Compiladores’, aprenderá sobre varias técnicas de análisis, divididas en términos generales en ‘Análisis de arriba hacia abajo’ y ‘Análisis de abajo hacia arriba’.

Las técnicas anteriores (de arriba abajo / de abajo hacia arriba) son técnicas generales. Sin embargo, en un curso general de ‘Compiladores’, se enseñan en el contexto de lenguajes de programación.

Los lenguajes de programación tienen una estructura / sintaxis fija. Entonces, si un compilador intenta analizar un lenguaje de programación, puede llegar a una respuesta determinista que diga ‘La sintaxis es correcta’ o ‘La sintaxis tiene errores y no se puede compilar’. Además, si la sintaxis es correcta, identificará correctamente la sintaxis. Por ejemplo: qué llaves se unen, qué expresión se ejecutará primero y cómo será el flujo del programa y demás.

Por lo tanto, el uso de estas técnicas para analizar lenguajes de programación suele ser sencillo. Según el idioma, puede definir un conjunto de reglas que debe seguir y luego seguir una serie de pasos para analizarlo.

Pero el lenguaje natural no tiene ninguna estructura fija. Considere un idioma natural, diga “inglés”. Considere la siguiente oración:

Tribunal para juzgar al acusado de disparos

Digamos que queremos entender esta oración. Puede tener al menos los siguientes significados:

  1. el tribunal intentará dispararle a un acusado
  2. el tribunal va a celebrar un juicio por un acusado de disparos

Entonces la afirmación es ambigua. Además, la interpretación depende de la “estructura” de la oración.

Puede tener al menos las siguientes dos estructuras:
1)
—————— Disparos (verbo) ————————-
El | El | El |
Juzgado (sustantivo) juzgado (verbo de apoyo) Demandado (sustantivo)
El | to (verbo de apoyo)

2)
——– Probar (verbo) —————————————–
El | El | El |
Tribunal (Sustantivo) a (verbo de apoyo) Demandado (Sustantivo)
El |
Disparos (adjetivo)

Ahora, si construye un analizador para esta oración, su trabajo es descubrir esta estructura. Pero digamos que mi analizador da Estructura 1. como respuesta y su analizador da Estructura 2. como respuesta. En ese caso, interpretaremos las declaraciones de manera diferente.
Pero ninguno de nosotros está equivocado. Ambas son interpretaciones legítimas.

Esa es la razón por la que los analizadores de lenguaje natural no son deterministas. Un analizador de NL no presentaría una estructura como respuesta. Más bien, trataría de observar todas las estructuras posibles (es posible un número exponencial de estructuras si considera las estructuras ‘correctas’ e ‘incorrectas’). Para todas esas estructuras, proporcionaría una confianza / probabilidad. La estructura con la mayor probabilidad generalmente se elige como la respuesta.

Nota: Vería las estructuras correctas e incorrectas porque en el lenguaje natural, además de definir algunas reglas muy estrictas, nada más se considera “incorrecto”. Porque una oración que no sigue todas las reglas de gramática sigue siendo una oración legítima hasta que transmite su significado.

Las técnicas de análisis del lenguaje natural a menudo utilizan enfoques de arriba hacia abajo / de abajo hacia arriba, pero:

  1. El uso es un poco más complejo. Por lo general, se basa en árboles en lugar de en pila / cola como en el caso de los lenguajes de programación
  2. Son probabilísticos y utilizan algunos conceptos de probabilidad.

Al final, diría que si no tiene antecedentes de PNL, puede llevarle un mes o incluso más lograr esto (si está escribiendo el analizador por su cuenta y no simplemente usando bibliotecas y API). También deberías ir a discutir con tu profesor antes de retomar esto.

Y simplemente visite scholar.google.com y busque ‘Análisis de lenguaje natural’ para obtener muchos buenos resultados.

Como eres estudiante de pregrado, creo que vale la pena que pruebes algo que mencionó Gupta. Hasta donde sé, muchos de los modelos de análisis se basan en la estructura de árbol que puede aplicar enfoques de arriba hacia abajo / de abajo hacia arriba.

Para simplificar, sugeriré que implemente algo que es una estructura lineal porque creo que la estructura de árbol o la estructura de gráfico arbitrario puede ser demasiado difícil para usted.

Algunos proyectos en los que creo que puedes trabajar dentro de tu capacidad (todos ellos son estructuras lineales):

  1. Reconocimiento de entidad con nombre usando el campo aleatorio condicional de cadena lineal (CRF) : esta tarea ya está bien estudiada por muchos investigadores y el uso del modelo de CRF de cadena lineal ya puede lograr un rendimiento bastante prometedor, aunque puede usar algunos otros modelos complicados.
  2. Clasificación de sentimientos por CRF de cadena lineal : esta tarea también se puede hacer por CRF de cadena lineal y puede usar algunos datos como el conjunto de datos de Twitter y creo que puede haber algún lugar donde pueda descargar los datos.
  3. Otras tareas / aplicaciones que puede buscar utilizando CRF de cadena lineal. Creo que muchas y muchas aplicaciones pueden usar. (Web Opinion Mining, Music Analysis, Relational Learning, etc.) CRF de cadena lineal puede hacer mucho.

Dado que creo que la estructura de cadena lineal podría ser más fácil para usted familiarizarse con el modelo CRF, también la idea de programación dinámica detrás. Además, es bueno saber sobre CRF. Aquí hay un tutorial muy agradable y limpio sobre CRF de cadena lineal. Ahí también comencé a aprender PNL.

Además, lo bueno es que realmente no necesita preocuparse por la implementación detallada (especialmente las matemáticas, aunque recomiendo conocer la idea) ya que hay muchas personas que ya han implementado una herramienta CRF de cadena lineal rápida y limpia. Puede usarlo directamente y desarrollar su propia aplicación.

Enumero algunos de ellos aquí:

  1. CRFSuite: una implementación rápida de CRF
  2. CRF ++: también un kit de herramientas de CRF.
  3. StatNLP: Dirigido al desarrollo de una herramienta para cualquier modelo gráfico. Pero este está más relacionado con el investigador que con el ingeniero. Todavía no han lanzado ninguna versión, pero escuché que será pronto.

Por favor deja tus comentarios. Vendré a responder sus preguntas.

Mire estos temas y encontrará un proyecto.

Word2vec

Lda2vec

Modelo CBOW

Modelo de salto de gramo

Bolsa de palabras

También busque el ‘tutorial de word2vec’ en google y mire el tutorial de Your Home for Data Science.

Además, busque ‘tutorial de tensorflow word2vec’ en google y busque en el sitio de flujo de tensor para aprenderlo.

gensim es una biblioteca de python NLP que necesitará.

Después de leer sobre estos, obviamente encontrarás un proyecto. También puedes preguntarme cualquier cosa personalmente si es necesario más adelante.

Hola,

Puedo contarte sobre mi proyecto, que hice en mi licenciatura y tú también lo intentas.

“Intenta predecir el género de una película basado en el resumen de la trama”.

saurabhbh21 / Artinex (no use el código ya que tiene algunos defectos, use el pdf adjunto)

Para este proyecto, necesita desguace web para extraer datos de imdb, use nlp y machine learning para lograr la tarea (para nlp use stanford corenlp / nltk, según su comodidad en java / python).