У меня есть python скрипт, который должен выполнить лемматизацию для ввода данных (фрейм данных).
проблема в том, что когда я пытаюсь распечатать результат большинства существующих слов в фрейме данных, он отображает результат ниже .
Most common words:
[('**word**', 141), ('twitter', 47), ('pic', 46), ('**Portugal**', 37), ('**words**', 28), ('protest', 19), ('**Portuguese**', 19), ('country', 18), ('spread', 17), ('people', 15)]
где результат должен быть:
Most common words:
[('**word**', 141), ('twitter', 47), ('pic', 46), ('**Portugal**', 37), ('protest', 19), ('country', 18), ('spread', 17), ('people', 15)]
код:
from nltk.corpus import stopwords,wordnet
from nltk.stem.wordnet import WordNetLemmatizer
def get_wordnet_pos(word):
"""Map POS tag to first character lemmatize() accepts"""
tag = nltk.pos_tag([word])[0][1][0].upper()
tag_dict = {"J": wordnet.ADJ,
"N": wordnet.NOUN,
"V": wordnet.VERB,
"R": wordnet.ADV}
return tag_dict.get(tag, wordnet.NOUN)
ppt = '''...!@#$%^&*()....{}’‘ “” “[]|._-`/?:;"'\,~12345678876543'''
w_tokenizer = nltk.tokenize.WhitespaceTokenizer()
lemmatizer = nltk.stem.WordNetLemmatizer()
def lemmatize_text(text):
return (" ".join([lemmatizer.lemmatize(w, get_wordnet_pos(w)) for w in w_tokenizer.tokenize(text) if w not in ppt]))