问题描述
我想对句子中的所有单词进行词形还原(CSV 文件,该文件包含推文),以实现我们减少单词出现频率的目标。通过使用 wordnet lemmatizer。我知道 lemmatizer 的 defult 是名词,但我想在许多 pos 标签上进行词形还原。
例如,所有这些词死,死,死成为他们的词根是死。 又如威胁不归根,恐怖、恐怖、恐怖主义归根。
我想,我想对单词而不是句子进行标记化并将其词形化。
我正在尝试使用此代码,但结果不如上面的示例好,并且轰炸不要返回炸弹等等。 ()
import nltk
from nltk.tokenize import word_tokenize
from nltk.stem.wordnet import WordNetLemmatizer
from nltk.corpus import wordnet
lemmatizer = nltk.stem.WordNetLemmatizer()
wordnet_lemmatizer = WordNetLemmatizer()
def nltk_tag_to_wordnet_tag(nltk_tag):
if nltk_tag.startswith('J'):
return wordnet.ADJ
elif nltk_tag.startswith('V'):
return wordnet.VERB
elif nltk_tag.startswith('N'):
return wordnet.NOUN
elif nltk_tag.startswith('R'):
return wordnet.ADV
else:
return None
def lemmatize_sentence(sentence):
#tokenize the sentence and find the POS tag for each token
nltk_tagged = nltk.pos_tag(nltk.word_tokenize(sentence))
#tuple of (token,wordnet_tag)
wordnet_tagged = map(lambda x: (x[0],nltk_tag_to_wordnet_tag(x[1])),nltk_tagged)
lemmatized_sentence = []
for word,tag in wordnet_tagged:
if tag is None:
#if there is no available tag,append the token as is
lemmatized_sentence.append(word)
else:
#else use the tag to lemmatize the token
lemmatized_sentence.append(lemmatizer.lemmatize(word,tag))
return " ".join(lemmatized_sentence)
# Lemmatizing
df['Lemmatize'] = df['text'].apply(lambda x: lemmatize_sentence(x))
print(df.head())
谢谢你的帮助
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)