首页 > 解决方案 > SpaCy Lemmatizer 对直接字符串和标记化字符串的工作方式不同

问题描述

我有两个句子,其中一个是用一个完整的字符串发送到 lemmatizer 的。另一个以标记化版本发送到以下函数。

    nlp = spacy.load("en_core_web_lg")

    def lemmatize(text: str):
        

        doc = nlp(text.lower())
        lemmas = []

        for token in doc:
            lemmas.append(token.lemma_)

        return lemmas
    
    def tokenize(text: str):

        doc = nlp(text.lower())
        tokens = [token.text for token in doc if not token.is_punct]
        return tokens


因此,当我运行以下代码时,

text  = "Testing and Coding"
tokens = lemmatize(text)  
print(tokens)

它返回

>>> ['testing', 'and', 'code']

但是当我运行以下代码时,


tokens = tokenize(text) 

tokens = [lemmatize(token)[0] for token in tokens]
print(tokens)

它返回

>>> ['test', 'and', 'code']

我不确定为什么会这样。谁能解释一下?

谢谢!

标签: tokenizespacylemmatization

解决方案


推荐阅读