用n将“I'm”化为“I”

2024-05-19 23:25:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是nltk的wordnet\u词组。理想情况下,“我是”这个词应该变成“我”。在

我试过以下POS标签:

wordnet_lemmatizer.lemmatize("I'm", wordnet.ADV)
wordnet_lemmatizer.lemmatize("I'm", wordnet.ADJ)
wordnet_lemmatizer.lemmatize("I'm", wordnet.VERB)
wordnet_lemmatizer.lemmatize("I'm", wordnet.NOUN)enter code here

它们都返回“我是”而不是“我”, 你知道我会错过什么吗?在


Tags: pos情况code标签wordnetnounenterlemmatizer
1条回答
网友
1楼 · 发布于 2024-05-19 23:25:34

首先标记和POS标记,然后使用该标记作为pos参数输入WordNetLemmatizer.lemmatize()

>>> from nltk import pos_tag, word_tokenize
>>> from nltk.stem import WordNetLemmatizer
>>> 
>>> wnl = WordNetLemmatizer()
>>> 
>>> def penn2morphy(penntag):
...     """ Converts Penn Treebank tags to WordNet"""
...     morphy_tag = {'NN':'n', 'JJ':'a',
...                   'VB':'v', 'RB':'r'}
...     try:
...         return morphy_tag[penntag[:2]]
...     except:
...         return 'n' # default to Nouns.
...     
... 
>>> def lemmatize_sent(tokenized_sent):
...     return [wnl.lemmatize(word.lower(), penn2morphy(tag)) for word, tag in pos_tag(tokenized_sent)]
... 
>>> lemmatize_sent("I'm")
['i', "'", 'm']

相关问题 更多 >