用stanfordCoreNLP进行中文命名实体识别时,出现一直运行不报错,或者报错json编码错误的解决方案

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、针对问题 1
    • 1. 原因
    • 2. 解决方法
      • 2.1 解决方案一
      • 2.2 解决方案二
  • 二、针对问题 2
    • 1. 原因
    • 2. 解决方法
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

本文主要解决使用"stanfordcorenlp"包时遇到到的2个问题:
问题 1 :一直运行,但是不报错
问题 2 :用stanfordCoreNLP进行中文分词或者命名实体识别等工作时、时出现错误“json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)”

即使运行简单的代码都会报错,如下图:

from stanfordcorenlp import StanfordCoreNLP
zh_model = StanfordCoreNLP(r'X:\Anaconda3\envs\X\Lib\site-packages\stanford-corenlp-4.4', lang='zh')
s_zh = 'Pre ADS Portal存在多个SQL注入漏洞'
ner_zh = zh_model.ner(s_zh)
print(ner_zh)

提示:以下是本篇文章正文内容,下面案例可供参考

一、针对问题 1

1. 原因

可能的原因有两种:
第一种,是java版本没安装对,将版本调整为:JDK 1.8及以上版本,且是64为的(32位的运行不了)。
第二种,是"stanfordcorenlp"包配置不完整。

2. 解决方法

2.1 解决方案一

针对是“java版本”错误的情况,自己检查更新java的版本就可以解决了。可以参考这个帖子

2.2 解决方案二

针对"stanfordcorenlp"包配置不完整的情况,需要在官网下载两个文件:Download CoreNLP 4.4.0 (下载后需要解压到代码运行的根目录下)和 中文jar文件。
然后,将.jar文件放入解压好的文件夹,例如“stanford-corenlp-4.4”,注意文件名一般为“stanford-chinese-corenlp-YYYY-MM-DD-models.jar”的格式,如果没有包含年月日需要修改文件名。
可以参考这个帖子这里。
用stanfordCoreNLP进行中文命名实体识别时,出现一直运行不报错,或者报错json编码错误的解决方案_第1张图片

二、针对问题 2

1. 原因

主要原因是, CoreNLP的版本太新,所以还是更换成老版本的比较稳妥。问题 2 的报错截图如下。
用stanfordCoreNLP进行中文命名实体识别时,出现一直运行不报错,或者报错json编码错误的解决方案_第2张图片

2. 解决方法

下载更新3.9版本的CoreNLP,这是下载地址。
用stanfordCoreNLP进行中文命名实体识别时,出现一直运行不报错,或者报错json编码错误的解决方案_第3张图片

同样,依然是下载两个文件,然后解压,然后将。jar文件放入解压好的文件夹(针对问题一的“2.2 解决方案二”中已介绍)。

最终解决了,开篇提到是两个问题。


总结

记录使用"stanfordcorenlp"包时遇到的两个问题,最终得以解决,感谢以下两个帖子的提示:

  1. 用stanfordCoreNLP进行中文分词时出现json编码错误
  2. 用stanfordcorenlp生成解析树时报错json.decoder.JSONDecodeError:Expecting value:line 1 column 1 (char 0)

如有不妥,还请各位随时提醒。

你可能感兴趣的:(报错解决方案,java,开发语言,python,自然语言处理,nlp)