Python nltk:如何将周围的词与上下文联系起来?

Python nltk:如何将周围的词与上下文联系起来?,python,machine-learning,nlp,nltk,lemmatization,Python,Machine Learning,Nlp,Nltk,Lemmatization,以下代码打印出leaf: from nltk.stem.wordnet import WordNetLemmatizer lem = WordNetLemmatizer() print(lem.lemmatize('leaves')) 这可能准确,也可能不准确,具体取决于周围环境,例如,玛丽离开房间与露珠从树叶上掉落。如何让NLTK在考虑周围环境的情况下对单词进行语法化?TL;博士 首先标记句子,然后使用POS标记作为柠檬化的附加参数输入 from nltk import pos_tag f

以下代码打印出
leaf

from nltk.stem.wordnet import WordNetLemmatizer

lem = WordNetLemmatizer()
print(lem.lemmatize('leaves'))
这可能准确,也可能不准确,具体取决于周围环境,例如,
玛丽离开房间
露珠从树叶上掉落
。如何让NLTK在考虑周围环境的情况下对单词进行语法化?

TL;博士 首先标记句子,然后使用POS标记作为柠檬化的附加参数输入

from nltk import pos_tag
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' 

def lemmatize_sent(text): 
    # Text input is string, returns lowercased strings.
    return [wnl.lemmatize(word.lower(), pos=penn2morphy(tag)) 
            for word, tag in pos_tag(word_tokenize(text))]

lemmatize_sent('He is walking to school')
有关如何以及为什么需要POS标签的详细演练,请参阅


或者,您可以使用
pywsd
tokenizer+lemmatizer,这是NLTK的
WordNetLemmatizer
的包装:

安装:

pip install -U nltk
python -m nltk.downloader popular
pip install -U pywsd
代码:


看看(“词干和柠檬化”部分),我对python非常陌生。你能解释一下这部分是怎么工作的吗。返回[wnl.lemmatize(word.lower(),pos=penn2morphy(tag)),在pos_标记(word_tokenize(text))]中标记,或者将其拆分查看,特别是会话2=)
>>> from pywsd.utils import lemmatize_sentence
Warming up PyWSD (takes ~10 secs)... took 9.307677984237671 secs.

>>> text = "Mary leaves the room"
>>> lemmatize_sentence(text)
['mary', 'leave', 'the', 'room']

>>> text = 'Dew drops fall from the leaves'
>>> lemmatize_sentence(text)
['dew', 'drop', 'fall', 'from', 'the', 'leaf']