Stanfordnlp中TypeError: argument of type 'NoneType' is not iterable 问题解决方法

18 篇文章 0 订阅
3 篇文章 0 订阅

问题描述:用StanfordSegmenter进行中文分词,输入如下代码后报错TypeError: argument of type 'NoneType' is not iterable

from nltk.tokenize import StanfordSegmenter
segmenter = StanfordSegmenter( 
    path_to_sihan_corpora_dict="E:\stanford_nlp\stanford-segmenter-2018-10-16\data",        
    path_to_model="E:\stanford_nlp\stanford-segmenter-2018-10-16\data\pku.gz",  
    path_to_dict="E:\stanford_nlp\stanford-segmenter-2018-10-16\data\dict-chris6.ser.gz")
str=u"语料库以电子计算机为载体承载语言知识的基础资源,但并不等于语言知识。"
result = segmenter.segment(str)
print(result)

详细的报错信息为:

                              

解决方法:

StanfordSegmenter()中传参java_class, 因为https://github.com/nltk/nltk/blob/develop/nltk/tokenize/stanford_segmenter.py的第153行self._java_class = 'edu.stanford.nlp.ie.crf.CRFClassifier'指定了中文模型时的java_class参数。如果是阿拉伯语,java_class则为edu.stanford.nlp.international.arabic.process.ArabicSegmenter 。

另外,在Stanfordnlp的官网https://github.com/stanfordnlp/CoreNLP/issues/484解决了该问题。

修改后的结果如下:

                              


 

参考文章:

1. http://www.52nlp.cn/Python自然语言处理实践-在NLTK中使用斯坦福中文分词器 

2. https://stackoverflow.com/questions/44793697/python-3-5-nltk-stanford-segmenter-windows-10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值