2017-09-30 1 views
0

Je suis capable de marquer le texte non-dialogue en phrases mais lorsque j'ajoute des guillemets à la phrase, le tokenizer NLTK ne les sépare pas correctement. Par exemple, cela fonctionne comme prévu:NLTK tokenize texte avec le dialogue en phrases

import nltk.data 
tokenizer = nltk.data.load('tokenizers/punkt/english.pickle') 
text1 = 'Is this one sentence? This is separate. This is a third he said.' 
tokenizer.tokenize(text1) 

Il en résulte une liste de trois phrases différentes:

['Is this one sentence?', 'This is separate.', 'This is a third he said.'] 

Cependant, si je fais un dialogue, le même processus ne fonctionne pas.

text2 = '“Is this one sentence?” “This is separate.” “This is a third” he said.' 
tokenizer.tokenize(text2) 

Ce retourne comme une seule phrase:

['“Is this one sentence?” “This is separate.” “This is a third” he said.'] 

Comment puis-je faire le travail NLTK tokenizer dans ce cas?

Répondre

1

Il semble que le tokenizer ne sait pas quoi faire avec les citations dirigées. Remplacez-les par des guillemets ASCII réguliers et l'exemple fonctionne bien.

>>> text3 = re.sub('[“”]', '"', text2) 
>>> nltk.sent_tokenize(text3) 
['"Is this one sentence?"', '"This is separate."', '"This is a third" he said.']