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','code']

我不确定为什么会发生这种情况。谁能解释一下?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)