Análisis de dependencia en NLP [Explicado con ejemplos]

Publicado: 2021-03-10

El procesamiento del lenguaje natural es un concepto interdisciplinario que toma los fundamentos de la lingüística computacional y la inteligencia artificial para comprender cómo interactúan los lenguajes humanos con la tecnología.

La PNL requiere una comprensión profunda de varias terminologías y conceptos para aplicarlos tangiblemente a escenarios del mundo real. Algunos de estos conceptos básicos incluyen etiquetado de parte del discurso (POS), modelado de lenguaje estadístico, análisis sintáctico, semántico y de sentimiento, normalización, tokenización, análisis de dependencia y análisis de distritos electorales, entre otros.

En este artículo, veremos los fundamentos del análisis de dependencias para obtener una perspectiva de cómo se implementa en NLP.

Tabla de contenido

Análisis de dependencia

El análisis de dependencia (DP) se refiere a examinar las dependencias entre las palabras de una oración para analizar su estructura gramatical. En base a esto, una oración se divide en varios componentes. El mecanismo se basa en el concepto de que existe un vínculo directo entre cada unidad lingüística de una oración. Estos enlaces se denominan dependencias.

Tomemos como ejemplo la oración " Prefiero el vuelo de la mañana a través de Denver".

El siguiente diagrama explica la estructura de dependencia de la oración:

Fuente

Las relaciones entre cada unidad lingüística, o palabra, de la oración, se indican usando arcos dirigidos en una estructura de dependencia mecanografiada. Como se indica en el diagrama, la raíz del árbol "preferir" forma el encabezado de la oración anterior.

La relación entre dos palabras está marcada por una etiqueta de dependencia. Por ejemplo, la palabra “vuelo” modifica el significado del sustantivo “Denver”. Por lo tanto, puede notar una dependencia de vuelo -> Denver donde el vuelo es el jefe y Denver es el hijo o dependiente. Se denota por nmod que representa un modificador nominal.

Esto forma el caso de la dependencia entre cada dos palabras donde una actúa como cabeza y la otra es la dependiente. Actualmente, la taxonomía Universal Dependency V2 consta de 37 relaciones sintácticas universales como se especifica en la siguiente tabla:

Etiqueta de dependencia Descripción
ac modificador de cláusula de un sustantivo (cláusula adnominal)
acl:relcl modificador de cláusula relativa
advcl modificador de cláusula adverbial
advmod Modificador adverbial
advmod:emph enfatizando palabra, intensificador
advmod:lmod modificador adverbial locativo
amod modificador de adjetivo
aplicaciones modificador aposicional
auxiliar auxiliar
auxiliar: pase auxiliar pasivo
caso marcado de casos
CC conjunción de coordinación
cc:preconj preconjunción
acompañante complemento de cláusula
clave clasificador
compuesto compuesto
compuesto:lvc construcción de verbos ligeros
compuesto:prt partícula de phrasal verb
compuesto:redup compuestos reduplicados
compuesto:svc compuestos de verbos en serie
conj conjunto
policía cópula
csubj sujeto de la cláusula
csubj: pasar sujeto pasivo clausal
dep dependencia no especificada
det determinante
det:numgov cuantificador pronominal que rige el caso del sustantivo
det:nummod cuantificador pronominal concordando en caso con el sustantivo
det:pos determinante posesivo
discurso elemento discursivo
dislocado elementos dislocados
exp expletivo
expl:impers improperio impersonal
Expl:pasar pronombre reflexivo usado en pasivo reflexivo
exp:pv clítico reflexivo con un verbo inherentemente reflexivo
reparado expresión fija de varias palabras
Departamento expresión plana de varias palabras
piso: extranjero palabras extranjeras
piso: nombre nombres
va con va con
iobj objeto indirecto
lista lista
marca marcador
nmod modificador nominal
nmod:pos modificador nominal posesivo
nmod:tmod modificador temporal
nsubj sujeto nominal
nsubj: pasar sujeto nominal pasivo
nummod modificador numérico
nummod:gov modificador numérico que rige el caso del sustantivo
objeto objeto
obl nominal oblicuo
obl:agente modificador de agente
obl:argumento argumento oblicuo
obl:lmod modificador locativo
obl:tmod modificador temporal
huérfano huérfano
parataxis parataxis
puntiagudo puntuación
reparandum disfluencia anulada
raíz raíz
vocativo vocativo
xcomp complemento de cláusula abierta

Análisis de dependencia usando NLTK

El análisis de dependencia se puede llevar a cabo utilizando el paquete Natural Language Toolkit (NLTK), que es una colección de bibliotecas y códigos utilizados en el procesamiento estadístico del lenguaje natural (NLP) del lenguaje humano.

Podemos usar NLTK para lograr el análisis de dependencia a través de uno de los siguientes métodos:

  1. Analizador de dependencia probabilístico y proyectivo : estos analizadores utilizan el conocimiento del lenguaje humano obtenido de oraciones analizadas a mano para predecir nuevas oraciones. Se sabe que cometen errores y trabajan con un conjunto restringido de datos de entrenamiento.
  2. Stanford parser : Este es un analizador de lenguaje natural implementado en Java. Necesita el analizador Stanford CoreNLP para realizar el análisis de dependencia. El analizador incluye varios idiomas, incluidos inglés, chino, alemán y árabe.

Así es como puede usar el analizador:

de nltk.parse.stanford importar StanfordDependencyParser

path_jar = 'path_to/stanford-parser-full-2014-08-27/stanford-parser.jar'

path_models_jar = 'path_to/stanford-parser-full-2014-08-27/stanford-parser-3.4.1-models.jar'

dep_parser = StanfordDependencyParser(

ruta_a_jar = ruta_jar, ruta_a_modelos_jar = ruta_modelos_jar

)

result = dep_parser.raw_parse('Le disparé a un elefante mientras dormía')

dependencia = resultado.siguiente()

lista(dependencia.triples())

La salida del programa anterior es la siguiente:

[

((u'disparo', u'VBD'), u'nsubj', (u'I', u'PRP')),

((u'tiro', u'VBD'), u'dobj', (u'elefante', u'NN')),

((u'elefante', u'NN'), u'det', (u'an', u'DT')),

((u'disparo', u'VBD'), u'prep', (u'in', u'IN')),

((u'in', u'IN'), u'pobj', (u'dormir', u'NN')),

((u'sleep', u'NN'), u'poss', (u'my', u'PRP$'))

]

Análisis de distrito electoral

El análisis de circunscripciones se basa en gramáticas independientes del contexto. Aquí, el árbol de análisis incluye oraciones divididas en subfrases, cada una de las cuales pertenece a una categoría gramatical. Cada unidad lingüística o palabra en una oración actúa como un nodo terminal, que tiene su nodo principal y una etiqueta de parte del discurso.

Por ejemplo, la frase "un gato" y "una caja debajo de la cama" son frases nominales, mientras que "escribir una carta" y "conducir un coche" son frases verbales.

Consideremos una oración de ejemplo " Le disparé a un elefante en pijama". Aquí hay una representación gráfica del árbol de análisis de distritos electorales:

Fuente

El árbol de análisis de la izquierda se refiere a dispararle a un elefante en pijama y el árbol de análisis de la derecha indica que el sujeto dispara a un elefante mientras está en pijama.

La oración completa se divide en subfases hasta que nos quedan palabras terminales. VP denota una frase verbal y NP denota frases nominales.

Análisis de dependencias frente a análisis de distritos electorales

El análisis de distritos electorales también se puede implementar mediante el analizador de Stanford. Esencialmente, analiza una oración dada según el analizador de circunscripción y, posteriormente, convierte el árbol de análisis de circunscripción en un árbol de dependencia.

Si su objetivo es dividir una oración en subfrases, debe implementar el análisis de distritos electorales. Sin embargo, si desea explorar las dependencias entre las palabras de una oración, debe utilizar el análisis de dependencia.

Checkout: Temas e ideas de proyectos de PNL

Conclusión

Si este artículo le resultó útil, debe consultar la Certificación PG de 6 meses de upGrad en Aprendizaje automático y PNL que ofrece tutoría personalizada de expertos de la industria de Flipkart, Gramener y Zee5.

El programa está diseñado para ingenieros, software/TI, datos y otros profesionales que buscan afianzarse en la ciencia de datos y el aprendizaje automático. Esta certificación de posgrado de IIIT BBangalore, que cuenta con un aumento salarial promedio del 58 %, es todo lo que necesita para obtener puestos avanzados de analista de datos, científico de datos, ingeniero de aprendizaje automático e ingeniero de PNL en las principales empresas. Bloquee su asiento hoy por solo Rs. 3,034 por mes!

¿Cuál es el uso del análisis de dependencia en NLP?

En el procesamiento del lenguaje natural, el análisis de dependencia es una técnica utilizada para identificar las relaciones semánticas entre las palabras de una oración. Los analizadores de dependencia se utilizan para asignar las palabras de una oración a los roles semánticos, identificando así las relaciones sintácticas entre las palabras. El análisis de dependencia es un enfoque bien conocido para el análisis sintáctico de textos en lenguaje natural en el nivel de estructura superficial. En este método, la estructura sintáctica de una oración se recupera a partir de una secuencia lineal de tokens de palabras, analizando las dependencias sintácticas entre palabras e identificando la categoría sintáctica de cada palabra.

¿Cuáles son las aplicaciones del análisis de dependencia?

Aquí hay una lista de varias áreas de aplicación donde se usa el análisis de dependencia. Uno de los principales usos del análisis de dependencias es el etiquetado de funciones semánticas (SRL) y la extracción de información, que son componentes del procesamiento del lenguaje natural. El análisis de dependencias también se utiliza para la fragmentación sintáctica y el análisis de constituyentes fuera de las tareas de NLP. El análisis de dependencia es fundamentalmente diferente del análisis de estructura de frase, que asigna las palabras de una oración al marcador de frase o estructura de árbol correspondiente.

¿Cuál es la diferencia básica entre el análisis sintáctico y el análisis de dependencia?

La diferencia entre el analizador sintáctico y el analizador de dependencia es que un analizador de dependencia construye un árbol de análisis y un analizador sintáctico construye un árbol de sintaxis. El análisis sintáctico implica el uso de reglas predefinidas para definir la sintaxis y un analizador de dependencias, por otro lado, puede comprender todo tipo de frases y también puede lidiar con entradas ambiguas. Un analizador de dependencias se puede utilizar para el reconocimiento de frases, la fragmentación, el análisis de dependencias, la fragmentación y el análisis.