tokenize - 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']
我不确定为什么会这样。谁能解释一下?
谢谢!
解决方案
推荐阅读
- php - 检查产品是否存在于购物车中 - Cakephp 3
- python - python更新csv文件,其中column2以column1开头
- markdown - Pandoc 4 级 Markdown 标头
- mysql - Sql Query 从混合数据中获取唯一值
- javascript - 如何使用 Google Apps 脚本将平面 JSON 数组转换为嵌套 JSON?
- python - 注销反向 url 不适用于下一页
- python - Selenium Python:无法在 Google Hangouts 上获取聊天元素的路径
- c++ - 为什么在 C++ 中的 get() 之前使用 getchar() 函数?
- python - 如何返回所有正则表达式的结果?我需要从“描述”和“产品”返回所有安卓手机的结果
- ios - 完成后如何重新启动 CABasicAnimation