我想使用 lemmatize
from nltk import word_tokenize, sent_tokenize, pos_tag
from nltk.stem.wordnet import WordNetLemmatizer
from nltk.corpus import wordnet
lmtzr = WordNetLemmatizer()
POS = pos_tag(text)
def get_wordnet_pos(treebank_tag):
#maps pos tag so lemmatizer understands
from nltk.corpus import wordnet
if treebank_tag.startswith('J'):
return wordnet.ADJ
elif treebank_tag.startswith('V'):
return wordnet.VERB
elif treebank_tag.startswith('N'):
return wordnet.NOUN
elif treebank_tag.startswith('R'):
return wordnet.ADV
else:
return wordnet.NOUN
lmtzr.lemmatize(text[i], get_wordnet_pos(POS[i][1]))
问题是词性标注器得到“procaspases”是“NNS”,但我如何将 NNS 转换为 wordnet,因为“procaspases”即使在词形还原器之后仍然是“procaspaseS”。
最佳答案
NLTK 处理大多数复数形式,而不仅仅是删除结尾的“s”。
import nltk
from nltk.stem.wordnet import WordNetLemmatizer
Lem = WordNetLemmatizer()
phrase = 'cobblers ants women boys needs finds binaries hobbies busses wolves'
words = phrase.split()
for word in words :
lemword = Lem.lemmatize(word)
print(lemword)
输出: cobbler ant woman boy need find binary hobby bus wolf
关于python - 使用 nltk 和 wordnet 对复数名词进行词形还原,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31016540/