Análise de dependência em PNL [Explicado com exemplos]
Publicados: 2021-03-10O Processamento de Linguagem Natural é um conceito interdisciplinar que utiliza os fundamentos da linguística computacional e da Inteligência Artificial para entender como as linguagens humanas interagem com a tecnologia.
A PNL requer uma compreensão profunda de várias terminologias e conceitos para aplicá-los de forma tangível a cenários do mundo real. Alguns desses conceitos básicos incluem marcação de parte de fala (POS), modelagem estatística de linguagem, análise sintática, semântica e de sentimento, normalização, tokenização, análise de dependência e análise de grupo, entre outros.
Neste artigo, veremos os fundamentos da Análise de Dependência para obter uma perspectiva de como ela é implementada na PNL.
Índice
Análise de dependência
Dependency Parsing (DP) refere-se a examinar as dependências entre as palavras de uma frase para analisar sua estrutura gramatical. Com base nisso, uma frase é dividida em vários componentes. O mecanismo baseia-se no conceito de que existe uma ligação direta entre cada unidade linguística de uma frase. Esses links são chamados de dependências.
Tomemos como exemplo a frase “ prefiro o voo matinal por Denver”.
O diagrama abaixo explica a estrutura de dependência da sentença:

Fonte
As relações entre cada unidade linguística, ou palavra, da sentença, são indicadas usando arcos direcionados em uma estrutura de dependência tipada. Conforme rotulado no diagrama, a raiz da árvore “preferir” forma o cabeçalho da frase acima.
A relação entre quaisquer duas palavras é marcada por uma tag de dependência. Por exemplo, a palavra “voo” modifica o significado do substantivo “Denver”. Portanto, você pode notar uma dependência de voo -> Denver onde o voo é o chefe e Denver é o filho ou dependente. É denotado por nmod que representa um modificador nominal.
Isso forma o caso de dependência entre cada duas palavras, onde uma atua como cabeça e a outra é o dependente. Atualmente, a taxonomia Universal Dependency V2 consiste em 37 relações sintáticas universais conforme especificado na tabela abaixo:
Etiqueta de dependência | Descrição |
acl | modificador de oração de um substantivo (oração adnominal) |
acl:relcl | modificador de cláusula relativa |
advcl | modificador de cláusula adverbial |
advmod | modificador adverbial |
advmod:emph | palavra de ênfase, intensificador |
advmod:lmod | modificador adverbial locativo |
amod | modificador de adjetivo |
appos | modificador aposicional |
auxiliar | auxiliar |
aux:pass | auxiliar passivo |
caso | marcação de caixa |
cc | conjunção coordenativa |
cc:preconj | pré-conjunção |
comp | complemento oracional |
clf | classificador |
composto | composto |
composto:lvc | construção do verbo leve |
composto:prt | partícula do verbo frasal |
composto: redup | compostos reduplicados |
composto:svc | compostos verbais seriais |
conj | conjunto |
policial | cópula |
csubj | sujeito de oração |
csubj:passar | sujeito passivo oracional |
dep | dependência não especificada |
det | determinante |
det:numgov | quantificador pronominal que rege o caso do substantivo |
det:nummod | quantificador pronominal concordando no caso com o substantivo |
det:poss | determinante possessivo |
discurso | elemento do discurso |
deslocado | elementos deslocados |
exp | palavrão |
exp:imper | palavrão impessoal |
exp: passar | pronome reflexivo usado na passiva reflexiva |
exp: pv | clítico reflexivo com um verbo inerentemente reflexivo |
fixo | expressão multipalavra fixa |
apartamento | expressão multipalavra plana |
plano: estrangeiro | palavras estrangeiras |
apartamento: nome | nomes |
Vai com | Vai com |
iobj | objeto indireto |
Lista | Lista |
marca | marcador |
nmod | modificador nominal |
nmod:poss | modificador nominal possessivo |
nmod:tmod | modificador temporal |
nsubj | sujeito nominal |
nsubj:passar | sujeito nominal passivo |
nummod | modificador numérico |
nummod:gov | modificador numérico que rege o caso do substantivo |
obj | objeto |
obl | nominal oblíquo |
obl:agente | modificador de agente |
obl:arg | argumento oblíquo |
obl:lmod | modificador locativo |
obl:tmod | modificador temporal |
órfão | órfão |
parataxe | parataxe |
punção | pontuação |
reparandum | disfluência substituída |
raiz | raiz |
vocativo | vocativo |
xcomp | complemento de oração aberto |
Análise de dependência usando NLTK
A Análise de Dependência pode ser realizada usando o pacote Natural Language Toolkit (NLTK), que é uma coleção de bibliotecas e códigos usados no processamento estatístico de linguagem natural (NLP) da linguagem humana.

Podemos usar o NLTK para obter a análise de dependência por meio de um dos seguintes métodos:
- Analisador de dependência projetiva e probabilística : Esses analisadores usam o conhecimento da linguagem humana obtido de sentenças analisadas manualmente para prever novas sentenças. Eles são conhecidos por cometer erros e trabalhar com um conjunto restrito de dados de treinamento.
- Analisador de Stanford : Este é um analisador de linguagem natural implementado em Java. Você precisa do analisador Stanford CoreNLP para executar a análise de dependência. O analisador inclui vários idiomas, incluindo inglês, chinês, alemão e árabe.
Veja como você pode usar o analisador:
de nltk.parse.stanford import 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(
path_to_jar = path_jar, path_to_models_jar = path_models_jar
)
resultado = dep_parser.raw_parse('Eu atirei em um elefante enquanto dormia')
dependência = resultado.next()
list(dependency.triples())
A saída do programa acima é a seguinte:
[
((u'shot', u'VBD'), u'nsubj', (u'I', u'PRP')),
((u'shot', u'VBD'), u'dobj', (u'elephant', u'NN')),
((u'elephant', u'NN'), u'det', (u'an', u'DT')),
((u'shot', u'VBD'), u'prep', (u'in', u'IN')),
((u'in', u'IN'), u'pobj', (u'sleep', u'NN')),
((u'dormem', u'NN'), u'poss', (u'meu', u'PRP$'))
]
Análise de grupo
A Análise de Constituinte é baseada em gramáticas livres de contexto. Aqui, a árvore de análise sintática inclui frases divididas em subfrases, cada uma pertencente a uma categoria gramatical. Cada unidade linguística ou palavra em uma frase atua como um nó terminal, que tem seu nó pai e uma tag de parte da fala.
Por exemplo, a frase “a cat” e “a box under the bed” são frases nominais, enquanto “write a letter” e “drive a car” são frases verbais.
Vamos considerar uma frase de exemplo “ Eu atirei em um elefante de pijama”. Aqui está uma representação gráfica da árvore de análise do eleitorado:
Fonte
A árvore sintática à esquerda refere-se a fotografar um elefante de pijama e a árvore sintática à direita indica o sujeito atirando em um elefante de pijama.
A frase inteira é dividida em subfases até que restem palavras terminais. VP denota uma frase verbal e NP denota frases nominais.

Análise de Dependência x Análise de Grupo Constituinte
A análise de grupos constituintes também pode ser implementada usando o analisador de Stanford. Essencialmente, ele analisa uma determinada frase de acordo com o analisador de constituintes e, posteriormente, converte a árvore de análise de constituintes em uma árvore de dependência.
Se o seu objetivo é dividir uma frase em subfrases, você deve implementar a análise de grupos constituintes. No entanto, se você deseja explorar as dependências entre as palavras em uma frase, deve usar a análise de dependência.
Confira: ideias e tópicos de projetos de PNL
Conclusão
Se você achou este artigo útil, confira a Certificação PG de 6 meses do upGrad em Machine Learning e PNL , que oferece orientação personalizada de especialistas do setor de Flipkart, Gramener e Zee5.
O programa foi desenvolvido para engenheiros, software/TI, dados e outros profissionais que desejam se firmar em Ciência de Dados e Aprendizado de Máquina. Esta certificação de pós-graduação do IIIT BBangalorethe possui um aumento salarial médio de 58% é tudo o que você precisa para obter posições avançadas de analista de dados, cientista de dados, engenheiro de ML e engenheiro de PNL nas principais empresas. Bloqueie seu assento hoje por apenas Rs. 3.034 por mês!
Qual é o uso da análise de dependência na PNL?
No processamento de linguagem natural, a análise de dependência é uma técnica usada para identificar relações semânticas entre palavras em uma frase. Os analisadores de dependência são usados para mapear as palavras em uma frase para papéis semânticos, identificando assim as relações sintáticas entre as palavras. A análise de dependência é uma abordagem bem conhecida para análise sintática de textos em linguagem natural no nível da estrutura da superfície. Neste método, a estrutura sintática de uma frase é recuperada a partir de uma sequência linear de tokens de palavras, analisando as dependências sintáticas entre as palavras e identificando a categoria sintática de cada palavra.
Quais são as aplicações da análise de dependência?
Aqui está uma lista de várias áreas de aplicativos onde a análise de dependência é usada. Um dos principais usos da análise de dependência é na rotulagem de função semântica (SRL) e na extração de informações, que são componentes do processamento de linguagem natural. A análise de dependência também é usada para segmentação sintática e análise de constituintes fora das tarefas de NLP. A análise de dependência é fundamentalmente diferente da análise de estrutura de frase, que mapeia as palavras em uma frase para o marcador de frase ou estrutura de árvore correspondente.
Qual é a diferença básica entre análise sintática e análise de dependência?
A diferença entre o analisador sintático e o analisador de dependência é que, um analisador de dependência constrói uma árvore de análise sintática e um analisador sintático constrói uma árvore de sintaxe. A análise sintática envolve o uso de regras predefinidas para definir a sintaxe e um analisador de dependência, por outro lado, pode entender todos os tipos de frases e também pode lidar com entradas ambíguas. Um analisador de dependência pode ser usado para reconhecimento de frase, agrupamento, análise de dependência, agrupamento e análise.