使用 NLTK 的 Lemmainser
Lemmainser using NLTK
我目前有这样一句话:
text = "This is a car."
然后我使用一个分词器,然后像这样阻止它:
ps = PorterStemmer()
text = word_tokenize(text)
stemmed_words = []
for w in words:
stemmed_words.append(ps.stem(w))
但是,我现在希望使用 NLTK 的 lemmainser 来代替它。要使用它,我需要像这样(在循环内)给它词的词性:
lemmatizer = WordNetLemmatizer()
word = lemmatizer.lemmatize(w, pos=pos)
但是,我不确定如何获取 pos 参数。我知道我可以用它来获得演讲的一部分,但这不被接受为一个论点:
pos = nltk.pos_tag(text)
您需要字典才能将 NLTK POS 标签翻译成 WordNet 标签:
pos_translate = {'J':'a', 'V':'v', 'N':'n', 'R':'r'}
现在,提取 POS 标签,翻译每个标签,如果可能(如果不能,选择一个默认标签,比如 "n"
,然后进行词形还原:
text = ['This', 'is', 'a', 'car', '.']
[lemmatizer.lemmatize(w,\
pos=pos_translate[pos[0]] if pos[0] in pos_translate else 'n')\
for w,pos in nltk.pos_tag(text)]
# ['This', 'be', 'a', 'car', '.']
我目前有这样一句话:
text = "This is a car."
然后我使用一个分词器,然后像这样阻止它:
ps = PorterStemmer()
text = word_tokenize(text)
stemmed_words = []
for w in words:
stemmed_words.append(ps.stem(w))
但是,我现在希望使用 NLTK 的 lemmainser 来代替它。要使用它,我需要像这样(在循环内)给它词的词性:
lemmatizer = WordNetLemmatizer()
word = lemmatizer.lemmatize(w, pos=pos)
但是,我不确定如何获取 pos 参数。我知道我可以用它来获得演讲的一部分,但这不被接受为一个论点:
pos = nltk.pos_tag(text)
您需要字典才能将 NLTK POS 标签翻译成 WordNet 标签:
pos_translate = {'J':'a', 'V':'v', 'N':'n', 'R':'r'}
现在,提取 POS 标签,翻译每个标签,如果可能(如果不能,选择一个默认标签,比如 "n"
,然后进行词形还原:
text = ['This', 'is', 'a', 'car', '.']
[lemmatizer.lemmatize(w,\
pos=pos_translate[pos[0]] if pos[0] in pos_translate else 'n')\
for w,pos in nltk.pos_tag(text)]
# ['This', 'be', 'a', 'car', '.']