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

使用Python Natasha库分词时spans返回None无分词结果问题

Natasha Segmenter返回spans为None的原因及解决办法
  • 核心问题:你用错了组件。Natasha的Segmenter是用来拆分文本为独立句子的,不是做单词分词的。你的输入是单句文本,没有可拆分的多句子结构,所以不会生成句子级别的span,doc.spans自然为None。
  • 正确分词操作:如果要拆分单词,应该使用Natasha的Tokenizer组件,这才是专门处理单词分词的工具。

修正后的代码示例

from natasha import Tokenizer, Segmenter, NewsEmbedding, NewsNERTagger, Doc

tokenizer = Tokenizer()  # 初始化单词分词器
segmenter = Segmenter()
emb = NewsEmbedding()
ner_tagger = NewsNERTagger(emb)

text = "Какая погода в Москве?"

doc = Doc(text)

doc.segment(segmenter)  # 分句(单句场景下不影响最终分词结果)
doc.tokenize(tokenizer)  # 执行单词分词

# 输出单词分词结果
print(f"分词结果: {[token.text for token in doc.tokens]}")
# 查看句子span(单句情况下会返回整个文本的span)
print(f"Spans: {doc.spans}")
if doc.spans:
    print("识别到的句子段:")
    for span in doc.spans:
        print(span.text)
else:
    print("未识别到句子段。")

补充说明

运行修正后的代码,doc.tokens会返回拆解后的俄语单词列表,doc.spans也会包含整个输入文本的句子span(因为输入本身是单句)。Natasha的组件分工明确,Segmenter负责句子分割,Tokenizer负责单词分词,根据实际需求选择对应组件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 10:07:38