NLTK: lemmatizer y pos_tag [duplicado]
Esta pregunta ya tiene una respuesta aquí:
lematización de wordnet y etiquetado pos en python 6 respuestasConstruyo un Corpus de texto plano y el siguiente paso es lematizar todos mis textos. Estoy usando elWordNetLemmatizer y necesita elpos_tag para cada token para no obtener el problema que, p. amar -> lemma = amar y amar -> lemma = amar ...
El WordNetLemmatizer-POS-Tag predeterminado es n (= Sustantivo), creo, pero ¿cómo puedo usar la pos_tag? Creo que el WordNetLemmatizer-POS-Tag esperado es diferente al pos_tag que obtengo. ¿Hay alguna función o algo que me pueda ayudar?
en esta línea creo que word_pos está mal y esa es la razón del error
lemma = wordnet_lemmatizer.lemmatize (word, word_pos)
import nltk
from nltk.corpus import PlaintextCorpusReader
from nltk import sent_tokenize, word_tokenize, pos_tag
from nltk.stem import WordNetLemmatizer
wordnet_lemmatizer = WordNetLemmatizer()
corpus_root = 'C:\\Users\\myname\\Desktop\\TestCorpus'
lyrics = PlaintextCorpusReader(corpus_root,'.*')
for fileid in lyrics.fileids():
tokens = word_tokenize(lyrics.raw(fileid))
tagged_tokens = pos_tag(tokens)
for tagged_token in tagged_tokens:
word = tagged_token[0]
word_pos = tagged_token[1]
print(tagged_token[0])
print(tagged_token[1])
lemma = wordnet_lemmatizer.lemmatize(word,pos=word_pos)
print(lemma)
Pregunta adicional: ¿Pos_tag es suficiente para mi lematización o necesito otro etiquetador? Mis textos son letras ...