Recursos linguísticos no spaCy

Processamento de Linguagem Natural com spaCy

Azadeh Mobasher

Principal Data Scientist

Marcação de POS

  • Classificar palavras gramaticalmente, com base na função e no contexto na frase
POS Descrição Exemplo
VERB Verbo run, eat, ate, take
NOUN Substantivo man, airplane, tree, flower
ADJ Adjetivo big, old, incompatible, conflicting
ADV Advérbio very, down, there, tomorrow
CONJ Conjunção and, or, but
Processamento de Linguagem Natural com spaCy

Marcação de POS com spaCy

 

  • A marcação de POS confirma o sentido de uma palavra
  • Algumas palavras, como watch, podem ser substantivo ou verbo
  • spaCy registra as tags de POS no recurso pos_ do pipeline nlp
  • spacy.explain() explica uma tag de POS

Componente POS Tagger

Processamento de Linguagem Natural com spaCy

Marcação de POS com spaCy

verb_sent = "I watch TV."

print([(token.text, token.pos_, spacy.explain(token.pos_)) for token in nlp(verb_sent)])
[('I', 'PRON', 'pronoun'), 
('watch', 'VERB', 'verb'), 
('TV', 'NOUN', 'noun'), 
('.', 'PUNCT', 'punctuation')]

noun_sent = "I left without my watch."

print([(token.text, token.pos_, spacy.explain(token.pos_)) for token in nlp(noun_sent)])
[('I', 'PRON', 'pronoun'), 
('left', 'VERB', 'verb'), 
('without', 'ADP', 'adposition'), 
('my', 'PRON', 'pronoun'),
('watch', 'NOUN', 'noun'),
('.', 'PUNCT', 'punctuation')]
Processamento de Linguagem Natural com spaCy

Reconhecimento de entidades nomeadas

  • Uma entidade nomeada é uma palavra ou expressão que se refere a uma entidade específica
  • O reconhecimento de entidades nomeadas (NER) classifica entidades em categorias predefinidas
Tipo de entidade Descrição
PERSON Pessoa nomeada ou família
ORG Empresas, instituições etc.
GPE Entidade geopolítica: países, cidades etc.
LOC Locais que não são GPE: cadeias de montanhas etc.
DATE Datas ou períodos absolutos ou relativos
TIME Tempo menor que um dia
Processamento de Linguagem Natural com spaCy

NER e spaCy

 

  • Modelos do spaCy extraem entidades pelo componente NER do pipeline
  • As entidades ficam disponíveis em doc.ents
  • O spaCy também marca cada entidade com seu rótulo (.label_)

Componente NER

Processamento de Linguagem Natural com spaCy

NER e spaCy

 

import spacy
nlp = spacy.load("en_core_web_sm")
text = "Albert Einstein was genius."
doc = nlp(text)

print([(ent.text, ent.start_char, ent.end_char, ent.label_) for ent in doc.ents])
>>> [('Albert Einstein', 0, 15, 'PERSON')]
Processamento de Linguagem Natural com spaCy

NER e spaCy

  • Também dá para acessar os tipos de entidade de cada token em um contêiner Doc

 

import spacy
nlp = spacy.load("en_core_web_sm")
text = "Albert Einstein was genius."
doc = nlp(text)

print([(token.text, token.ent_type_) for token in doc])
>>> [('Albert', 'PERSON'), ('Einstein', 'PERSON'),
('was', ''), ('genius', ''), ('.', '')]
Processamento de Linguagem Natural com spaCy

displaCy

 

  • O spaCy tem um visualizador moderno: displaCy
  • O visualizador de entidades displaCy destaca as entidades e seus rótulos
import spacy
from spacy import displacy

text = "Albert Einstein was genius."
nlp = spacy.load("en_core_web_sm")
doc = nlp(text)

displacy.serve(doc, style="ent")

Saída do displaCy NER

Processamento de Linguagem Natural com spaCy

Vamos praticar!

Processamento de Linguagem Natural com spaCy

Preparing Video For Download...