关于使用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工具包进行文本处理

python 配置nlp stanford python

NLPPython3.6.5中使用 Stanford NLP工具包进行词性标注

除了Keras和Spacy之外,我可以使用Stanford Core NLP进行深度学习吗?