python - 自定义词形还原词并附加到 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)
解决方案
查看此处找到的实现,您可能可以执行类似的操作
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)这是一个小数字。这显然不能扩展
推荐阅读
- stream - Elixir:如何跨多个管道维护 Stream 状态?
- java - 在 REST API 中使用不同的路径访问相同的资源
- date - Google表格中的动态日期功能-如何实现?
- barbajs - Barba.js 和 locomotive-scroll 不兼容?
- c# - 如何在 csproj 中检查条件编译符号
- sql - 在 Postgresql 中使用列值上的 where 子句更新表
- django - 如何在 django rest 框架中传递多个 authentication_classes?
- regex - 正则表达式超过 n 个字符,不包括计数中的模式
- event-handling - 一个平台的 UI 框架是否为你提供了主循环的行话?
- javascript - 如何通过 keydown 事件在插入符号上插入元素?