首页 > 解决方案 > 如何将 NLTK 标签转换为 wordnet 标签

问题描述

我正在努力将 NLTK 标签转换为 wordnet 标签。我有一个名为“tokens”的系列对象,在“tokens”内部是一系列不同长度的包含标记化和 NLTK 标记的推文内容。例如:

[('sitting', 'VBG'), ('democrat', 'NN'), ('senator', 'NN'), ('trial', 'NN'), ('corruption', 'NN'), ('barely', 'RB'), ('heard', 'JJ'), ('peep', 'NN'), ('mainstream', 'NN'), ('media', 'NNS')]

下面是我试图用 wordnet 标签替换 NLTK 标签的代码,但出现错误:

太多值无法解包(预期 2)

tokens = tokens['tokens'].apply(lambda v: nltk.pos_tag(v))

lemmatizer = WordNetLemmatizer()

for tokenlist in tokens:
    for token in tokenlist:
        for (word, tag) in token:
            if tag.startswith('J'):
                tag = 'a'
            elif tag.startswith('V'):
                tag = 'v'
            elif tag.startswith('R'):
                tag = 'r'
            elif tag.startswith('N'):
                tag = 'n'
            else:
                tag = 'n'
            lemmatizer.lemmatize(word, pos=tag)

完整追溯:

Traceback (most recent call last):

  File "<ipython-input-122-0502b4ebc79b>", line 4, in <module>
    for (word, tag) in token:

ValueError: too many values to unpack (expected 2)

如果我的“if/elif/else”条件得到满足,我是否认为我可以简单地将“tag”的值设置为 wordnet 标签字母?

标签: python

解决方案


推荐阅读