Análise de dependência em PNL [Explicado com exemplos]

Publicados: 2021-03-10

O 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:

  1. 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.
  2. 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.