【问题标题】:Lemmainser using NLTK使用 NLTK 的 Lemminser
【发布时间】:2017-04-26 19:26:16
【问题描述】:

我目前有这样一句话:

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)

【问题讨论】:

标签: python text nltk text-processing


【解决方案1】:

你需要一本字典来将 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', '.']

【讨论】:

    猜你喜欢
    • 2011-06-05
    • 1970-01-01
    • 2016-05-18
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 2018-10-13
    相关资源
    最近更新 更多