NLTK WordNet Lemmatizer:难道它不能使单词的所有词形变化吗?
nlp
nltk
python
5
0

我将NLTK WordNet Lemmatizer用于词性标记项目,方法是首先将训练语料库中的每个单词修改为其词干(就地修改),然后仅对新语料库进行训练。但是,我发现lemmatizer不能按预期运行。

例如,字loves是lemmatized到love这是正确的,但这个词loving遗体loving甚至词形还原后。这里的loving就像句子“我爱它”。

是不是love拐折字的干loving ?类似地,在残词化之后,许多其他“ ing”形式仍然保留。这是正确的行为吗?

还有其他一些准确的词条修饰词吗? (不需要在NLTK中)在确定单词词干时,是否有形态分析仪或词义分析程序也考虑到单词的词性标签?例如,字killing应该kill的干,如果killing被用作动词,但它应该killing的干,如果它被用作名词(如the killing was done by xyz )。

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

比枚举更清晰,更有效:

from nltk.corpus import wordnet

def get_wordnet_pos(self, treebank_tag):
    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 ''

def penn_to_wn(tag):
    return get_wordnet_pos(tag)
收藏
评论

解决此问题的最佳方法是实际在Wordnet中查找。在这里看看: 喜欢wordnet 。如您所见,Wordnet中实际上存在一个形容词“喜爱”。实际上,甚至在Wordnet中有副词“ lovelyly”: lovely 。由于wordnet实际上并不知道您真正想要的语音部分,因此它默认为名词(在Wordnet中为“ n”)。如果您使用的是Penn Treebank标签集,则可以使用以下便捷功能将Penn转换为WN标签:

from nltk.corpus import wordnet as wn

def is_noun(tag):
    return tag in ['NN', 'NNS', 'NNP', 'NNPS']


def is_verb(tag):
    return tag in ['VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ']


def is_adverb(tag):
    return tag in ['RB', 'RBR', 'RBS']


def is_adjective(tag):
    return tag in ['JJ', 'JJR', 'JJS']


def penn_to_wn(tag):
    if is_adjective(tag):
        return wn.ADJ
    elif is_noun(tag):
        return wn.NOUN
    elif is_adverb(tag):
        return wn.ADV
    elif is_verb(tag):
        return wn.VERB
    return None

希望这可以帮助。

收藏
评论

WordNet lemmatizer 确实考虑了POS标签,但是并不能神奇地确定它:

>>> nltk.stem.WordNetLemmatizer().lemmatize('loving')
'loving'
>>> nltk.stem.WordNetLemmatizer().lemmatize('loving', 'v')
u'love'

没有POS标签,它将假定您提供的所有内容都是一个名词。因此,这里认为您正在为它传递名词“ loving”(如“ sweet love”)。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号