www tagger tag spanish pos_tag pos org español book python text nltk tokenize

python - tagger - obtener índices de texto original de nltk word_tokenize



pos tag nltk español (2)

Estoy tokenizando un texto usando nltk.word_tokenize y me gustaría también obtener el índice en el texto original sin formato al primer carácter de cada token, es decir,

import nltk x = ''hello world'' tokens = nltk.word_tokenize(x) >>> [''hello'', ''world'']

¿Cómo puedo obtener también la matriz [0, 7] correspondiente a los índices brutos de los tokens?


También puedes hacer esto:

def spans(txt): tokens=nltk.word_tokenize(txt) offset = 0 for token in tokens: offset = txt.find(token, offset) yield token, offset, offset+len(token) offset += len(token) s = "And now for something completely different and." for token in spans(s): print token assert token[0]==s[token[1]:token[2]]

Y obten:

(''And'', 0, 3) (''now'', 4, 7) (''for'', 8, 11) (''something'', 12, 21) (''completely'', 22, 32) (''different'', 33, 42) (''.'', 42, 43)


Creo que lo que estás buscando es el método span_tokenize() . Aparentemente esto no es compatible con el tokenizador predeterminado. Aquí hay un ejemplo de código con otro tokenizer.

from nltk.tokenize import WhitespaceTokenizer s = "Good muffins cost $3.88/nin New York." span_generator = WhitespaceTokenizer().span_tokenize(s) spans = [span for span in span_generator] print(spans)

Lo que da:

[(0, 4), (5, 12), (13, 17), (18, 23), (24, 26), (27, 30), (31, 36)]

acaba de obtener las compensaciones:

offsets = [span[0] for span in spans] [0, 5, 13, 18, 24, 27, 31]

Para obtener más información (sobre los diferentes tokenizadores disponibles), consulte tokensize api docs