Il tokenizer predefinito di NLTK, nltk.word_tokenizer, concatena due tokenizer, un tokenizer di frase e quindi un tokenizzatore di parole che opera sulle frasi. Fa un buon lavoro fuori dalla scatola.Come utilizzare il tokenizer predefinito di NLTK per ottenere span invece di stringhe?
>>> nltk.word_tokenize("(Dr. Edwards is my friend.)")
['(', 'Dr.', 'Edwards', 'is', 'my', 'friend', '.', ')']
Mi piacerebbe usare questo stesso algoritmo, tranne per averlo tornare tuple di compensazioni nella stringa originale invece di gettoni di stringa.
Per offset, intendo 2-ples che possono servire come indici nella stringa originale. Per esempio qui avrei
>>> s = "(Dr. Edwards is my friend.)"
>>> s.token_spans()
[(0,1), (1,4), (5,12), (13,15), (16,18), (19,25), (25,26), (26,27)]
perché s [0: 1] è "(", s [1: 4] è "Dr." e così via
C'è una sola NLTK. chiamare che fa questo, o devo scrivere il mio compensare l'aritmetica?
Cosa intendi per "offset". Forse l'indice delle stringhe sulla lista? cioè: "Dr." è indice 1 .. – felipsmartins
Modificato per chiarire cosa intendo per offset. –