Ich benutze NLTK, um ein paar klassische Texte zu analysieren, und ich renne in Probleme, die den Text für den Satz tokenisieren. Zum Beispiel, hier ist was ich für ein Snippet erhalten von Moby Dick:Wie man den NLTK-Satz-Tokenizer zwickt
import nltk
sent_tokenize = nltk.data.load('tokenizers/punkt/english.pickle')
'''
(Chapter 16)
A clam for supper? a cold clam; is THAT what you mean, Mrs. Hussey?" says I, "but
that's a rather cold and clammy reception in the winter time, ain't it, Mrs. Hussey?"
'''
sample = 'A clam for supper? a cold clam; is THAT what you mean, Mrs. Hussey?" says I, "but that\'s a rather cold and clammy reception in the winter time, ain\'t it, Mrs. Hussey?"'
print "\n-----\n".join(sent_tokenize.tokenize(sample))
'''
OUTPUT
"A clam for supper?
-----
a cold clam; is THAT what you mean, Mrs.
-----
Hussey?
-----
" says I, "but that\'s a rather cold and clammy reception in the winter time, ain\'t it, Mrs.
-----
Hussey?
-----
"
'''
Ich erwarte nicht, Perfektion hier, wenn man bedenkt, dass Melvilles Syntax etwas veraltet, aber NLTK sollte in der Lage sein Terminal doppelte Anführungszeichen zu handhaben und Titel wie "Frau" Da der Tokenizer jedoch das Ergebnis eines unbeaufsichtigten Trainingsalgorithmus ist, kann ich nicht herausfinden, wie man damit bastelt.
Hat jemand Empfehlungen für einen besseren Satz Tokenizer? Ich würde eine einfache Heuristik bevorzugen, die ich hacken kann, anstatt meinen eigenen Parser trainieren zu müssen.
Ah, gut zu wissen. Seltsamerweise funktioniert das nicht, wenn ich den kompletten Satz in meiner Frage durch Ihre Lösung ausführen lasse. Irgendeine Idee warum? –
Nur ein paar mehr Informationen in die Antwort hinzugefügt. – vpekar
Ich vermeide im Allgemeinen "Danke" Kommentare, aber hier ist es wirklich vor Ort: Danke! – Private