如何使用Stanza在保留标点的情况下统计不含标点的词数?
使用Stanza统计不含标点的词数
你可以通过过滤掉Stanza标注为标点(POS标签为PUNCT)的token来实现需求,原代码里的doc.num_tokens会统计所有token(包括标点、符号),所以得到了8的结果。
修改后的代码如下:
import stanza # 初始化Stanza的英文nlp pipeline(如果还没初始化) nlp = stanza.Pipeline(lang='en') text = """ Q1 revenue reached €12 .7 billion .""" doc = nlp(text) # 过滤标点token,统计剩余有效token数量 word_count = sum(1 for token in doc if token.pos != 'PUNCT') print(word_count)
运行这段代码会输出6,对应文本里的Q1、revenue、reached、€12、.7、billion这几个非标点token。
简单说明:
- Stanza会给每个token自动标注词性(POS),所有标点符号的POS标签统一为
PUNCT - 遍历
doc中的所有token,只保留POS不为PUNCT的内容,统计它们的数量就是你需要的不含标点的词数
内容的提问来源于stack exchange,提问作者Limps
相关产品推荐
相关产品推荐

