首页 > 解决方案 > 自定义词形还原词并附加到 WordNetLemmatizer

问题描述

我想为词形还原结果附加一些例外情况。例如,当我测试时wnl.lemmatize('cookies'),我得到的结果是cooky而不是cookie. 如何将词形还原结果更新为cookie

import nltk
from nltk.tokenize import word_tokenize
from nltk import pos_tag
from nltk.stem import WordNetLemmatizer 
wnl = WordNetLemmatizer()

def text_cleaning(text):
  text = text.lower()
  tok_list = [wnl.lemmatize(w,tag[0].lower()) if tag[0].lower() in ['a','n','v'] else wnl.lemmatize(w) for w,tag in pos_tag(word_tokenize(text))]
return ' '.join(tok_list)

标签: pythonnltk

解决方案


查看此处找到的实现,您可能可以执行类似的操作

class WNWrapper(WordNetLemmatizer):
    def __init__(self, custom_transforms):
        self.custom_transforms = custom_transforms

    def lemmatize(self, word):
        if word in self.custom_transforms:
            return self.custom_transforms[word]
        super().lemmatize(word)

但这仅在

1)你知道你想改变/不改变哪些词

2)这是一个小数字。这显然不能扩展


推荐阅读