如何使用Spacy统计语料每句指定token的出现次数并生成对应结果列表
代码问题分析
- 追加计数的位置错误:你将
nb_and.append(i)写在了单token匹配and的判断分支内,每匹配到一次and就会立刻向列表追加当前的计数,而不是遍历完整个句子、拿到该句的总and次数后再追加。 - 无
and的句子不会生成计数:如果某句中完全没有and,就不会触发if分支的代码,自然不会把0的计数追加到列表中,导致最终列表缺少对应句子的计数项。
修复后代码
如果你需要的是字符串类型的计数结果(和示例输出格式一致),可以用以下写法:
doc = nlp(corpus) nb_and = [] for sent in doc.sents: i = 0 for token in sent: if token.text == "and": i += 1 # 遍历完当前句子所有token后,统一追加该句的计数 nb_and.append(str(i))
如果需要数值类型的结果,去掉str()包裹即可。也可以用更简洁的推导式写法:
doc = nlp(corpus) nb_and = [str(sum(1 for token in sent if token.text == "and")) for sent in doc.sents]
内容的提问来源于stack exchange,提问作者Artemis
相关产品推荐
相关产品推荐

