divisor de frases python spacy
Sep 23 2020
Eu gostaria de usar spacypara extrair as frases de um texto.
nlp = English() # just the language with no model
sentencizer = nlp.create_pipe("sentencizer")
nlp.add_pipe(sentencizer)
doc = nlp("This is a sentence. This is another sentence.")
for sent in doc.sents:
print(sent.text)
É possível aumentar a confiabilidade do divisor de frases ignorando as regras, por exemplo, nunca divide uma frase após uma sigla como "não".
Claro que tenho um monte de siglas muito técnicas e particulares.
Como você procederia?
Respostas
3 thorntonc Sep 23 2020 at 22:36
Você pode escrever uma função customizada que altera o comportamento padrão usando uma abordagem baseada em regras de divisão em sentenças. Por exemplo:
import spacy
text = "The formula is no. 45. This num. represents the chemical properties."
nlp = spacy.load("en_core_web_sm")
doc = nlp(text)
print("Before:", [sent.text for sent in doc.sents])
def set_custom_boundaries(doc):
pattern_a = ['no', 'num']
for token in doc[:-1]:
if token.text in pattern_a and doc[token.i + 1].text == '.':
doc[token.i + 2].is_sent_start = False
return doc
nlp.add_pipe(set_custom_boundaries, before="parser")
doc = nlp(text)
print("After:", [sent.text for sent in doc.sents])
Isso lhe dará a divisão de frase desejada.
Before: ['The formula is no.', '45.', 'This num.', 'represents the chemical properties.']
After: ['The formula is no. 45.', 'This num. represents the chemical properties.']
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas