关于使用Stanford NLP报错json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)解决办法
Posted Peppermint
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于使用Stanford NLP报错json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)解决办法相关的知识,希望对你有一定的参考价值。
总结:如果不是系统的问题,就检查自己的代码,务必是逐句输入!而不是一整篇文章输入!
前情提要:
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))
以上是关于关于使用Stanford NLP报错json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)解决办法的主要内容,如果未能解决你的问题,请参考以下文章
NLP干货!Python NLTK结合stanford NLP工具包进行文本处理
运行 Stanford.NLP.CoreNLP 示例时出现 TypeInitializationException
NLP干货!Python NLTK结合stanford NLP工具包进行文本处理