Recursos linguísticos

Processamento de Linguagem Natural com spaCy

Azadeh Mobasher

Principal Data Scientist

Marcação de POS

  • Tags de POS dependem do contexto, das palavras ao redor e de suas tags
import spacy
nlp = spacy.load("en_core_web_sm")
text = "My cat will fish for a fish tomorrrow in a fishy way."
print([(token.text, token.pos_, spacy.explain(token.pos_)) 
        for token in nlp(text)])

Exemplo de marcação POS

Processamento de Linguagem Natural com spaCy

Qual é a importância de POS?

 

  • Melhor precisão em muitas tarefas de PLN

 

I will fish tomorrow.

I ate fish.

 

  • Caso de uso em tradução

 

verb -> pescaré

noun -> pescado
Processamento de Linguagem Natural com spaCy

Qual é a importância de POS?

 

  • Desambiguação de sentido de palavras (WSD) é decidir em qual sentido uma palavra é usada na frase.
  • Determinar o sentido pode ser crucial em tradução automática etc.

Exemplo de WSD

Processamento de Linguagem Natural com spaCy

Desambiguação de sentido de palavras

import spacy
nlp = spacy.load("en_core_web_sm")

verb_text = "I will fish tomorrow."
noun_text = "I ate fish."


print([(token.text, token.pos_) for token in nlp(verb_text) if "fish" in token.text], "\n") print([(token.text, token.pos_) for token in nlp(noun_text) if "fish" in token.text])
[('fish', 'VERB', 'verb')] 
[('fish', 'NOUN', 'noun')]
Processamento de Linguagem Natural com spaCy

Análise de dependências

  • Explora a sintaxe da frase
  • Ligações entre dois tokens
  • Gera uma árvore

Exemplo de análise de dependências

Processamento de Linguagem Natural com spaCy

Análise de dependências e spaCy

 

  • O rótulo de dependência descreve o tipo de relação sintática entre dois tokens

 

Dependency label Description
nsubj Sujeito nominal
root Raiz
det Determinante
dobj Objeto direto
aux Auxiliar
Processamento de Linguagem Natural com spaCy

Análise de dependências e displaCy

  • displaCy pode desenhar árvores de dependência
doc = nlp("We understand the differences.")

spacy.displacy.serve(doc, style="dep")

Exemplo de parser de dependências com displaCy

Processamento de Linguagem Natural com spaCy

Análise de dependências e spaCy

  • Atributo .dep_ para acessar o rótulo de dependência de um token

 

doc = nlp("We understand the differences.")
print([(token.text, token.dep_, spacy.explain(token.dep_)) for token in doc])
[('We', 'nsubj', 'nominal subject'), ('understand', 'ROOT', 'root'),
('the', 'det', 'determiner'), ('differences', 'dobj', 'direct object'),
('.', 'punct', 'punctuation')]
Processamento de Linguagem Natural com spaCy

Vamos praticar!

Processamento de Linguagem Natural com spaCy

Preparing Video For Download...