NLTK: лемматизатор и pos_tag [дубликаты]
На этот вопрос уже есть ответ здесь:
лемматизация в Wordnet и теги pos в python 6 ответовЯ создаю текстовый корпус, и следующим шагом является лемматизация всех моих текстов. Я используюWordNetLemmatizer и нужноpos_tag для каждого токена, чтобы не получить проблему, например, любить -> лемма = любить и любить -> лемма = любить ...
Я думаю, что по умолчанию WordNetLemmatizer-POS-Tag - это n (= существительное), но как я могу использовать pos_tag? Я думаю, что ожидаемый WordNetLemmatizer-POS-Tag отличается от pos_tag, который я получаю. Есть ли функция или что-то, что может мне помочь?!?!
в этой строке я думаю, что word_pos неправильно, и это причина ошибки
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)
Дополнительный вопрос: Достаточно ли pos_tag для моей лемматизации или нужен другой тегер? Мои тексты - лирика ...