关于使用Stanford NLP报错json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)解决办法

文章描述了一位用户在MacOS系统上使用StanfordCoreNLP进行分词、词性标注和命名实体识别时遇到的JSONDecodeError问题。经过尝试不同版本、处理特殊字符和超时设置等方法未能解决问题,最终发现是输入的多句文本导致的错误。通过断句后再进行NER分析,问题得到解决。

总结:如果不是系统的问题,就检查自己的代码,务必是逐句输入!而不是一整篇文章输入!

前情提要:

Mac OS 系统

分词和词性标注都可以顺利运行,但命名实体识别总是报错json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

已安装:

1:Java 1.8;
2:下载Stanford CoreNLP文件,解压; 

3: 下载英文模型jar文件并放到stanford-corenlp-full-2018-10-25根目录下;

前期遇到的报错以及解决方案:

1. AccessDenied: psutil.AccessDenied

解决方案:修改corenlp.py文件的端口

参考链接:

stanford-corenlp | psutil._exceptions.AccessDenied: psutil.AccessDenied #26 - CodeAntenna

2. json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

查遍全网试过但无效的方法有:

1)重新下载stanford-corenlp低版本(案例:先下载了4.0+版本,报错后改成3.9及以下版本后解决)

2)“%”的问题(案例:文本中的url字符%为特殊字符,StanfordCoreNLP进行ner操作时,发生错误。将%替换后解决)

3)超时问题(案例:将第232行参数properties中超时时长加长后解决。properties = {'timeout': '500000','annotators': annotators, 'outputFormat': 'json'})

但笔者试遍各历史版本,且切换到Windows端遇到更多问题(比如明明下载了1.8java版本并设置环境变量后依旧报错java not found等)后,痛定思痛,检查代码本身,意识到可能是文本输入出现了问题。

笔者的样本是一篇文章,里面有很多句话,后续想要进行依存分析则需要断句,因此先运行命令:

from stanfordcorenlp import StanfordCoreNLP
import nltk
from nltk.tokenize import sent_tokenize
# nltk.download('punkt') 注意这里如果没有下载punkt可能会报错,按指示下载一遍即可
sentence = sentence_token_nltk(text)

然后得到了一个断句后列表,然后再提取列表中的元素进行NER分析后顺利运行

for line in sentence:
    print(nlp.ner(line))
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值