Lemmainser使用NLTK

sta*_*ger 4 python text nltk python-textprocessing

我目前有这样一句话:

text = "This is a car."
Run Code Online (Sandbox Code Playgroud)

然后我使用一个tokeniser,然后像这样干它:

ps = PorterStemmer()
text = word_tokenize(text)
stemmed_words = []
for w in words:
    stemmed_words.append(ps.stem(w))
Run Code Online (Sandbox Code Playgroud)

但是,我现在希望使用NLTK的lemmainser来代替.要使用它,我需要给它一个像这样的单词的部分(在循环内):

lemmatizer = WordNetLemmatizer()
word = lemmatizer.lemmatize(w, pos=pos)
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何得到pos论证.我知道我可以使用它来获得演讲的一部分,但不接受作为参数:

pos = nltk.pos_tag(text)
Run Code Online (Sandbox Code Playgroud)

DYZ*_*DYZ 5

你需要一本字典来将NLTK POS标签翻译成WordNet标签:

pos_translate = {'J':'a', 'V':'v', 'N':'n', 'R':'r'}
Run Code Online (Sandbox Code Playgroud)

现在,提取POS标签,翻译每个标签,如果可能的话(如果可能的话,选择一个默认标签,比方说"n",和lematize:

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', '.']
Run Code Online (Sandbox Code Playgroud)