Análisis de dependencia en NLP [Explicado con ejemplos]
Publicado: 2021-03-10El 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:
- 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.
- 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.