You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Counter统计Spacy Token列表为何得到非唯一字典?

问题原因解析

这是因为spaCy的Token是独立的对象实例——哪怕两个Token的文本内容完全一样(比如两个hello),它们在内存里也是两个不同的对象,哈希值完全不同。

而Python的Counter是靠对象的哈希值和相等性判断来识别重复项的:只有哈希值相同且==判断为真的对象,才会被当成同一个键统计。你列表里的每个Token都是单独创建的实例,哪怕文本内容一致,它们的哈希值也不相同,所以Counter会把它们当成完全不同的键,自然每个计数都是1。看起来像是有重复键,其实只是这些不同的Token对象打印出来的文本内容一样而已。

如果要统计文本内容的出现次数,你得先把每个Token转换成字符串(比如取token.text),再传给Counter,示例代码如下:

from collections import Counter
import spacy

nlp = spacy.load("en_core_web_sm")
doc = nlp("hello how are you hello")
token_texts = [token.text for token in doc]
counts = Counter(token_texts)
print(counts)  # 输出: Counter({'hello': 2, 'how': 1, 'are': 1, 'you': 1})

内容的提问来源于stack exchange,提问作者Typo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:31:18