Stanford CoreNLP无法生成实例对象

服务器上运行Stanford,今日无法启动"StanfordCoreNLP"了,就是运行下面代码一直在运行,不结束,不报错。

from stanfordcorenlp import StanfordCoreNLP
std_nlp = StanfordCoreNLP('/data/stanford-corenlp-4.2.0')

最后找到原因:后台启动的相关java服务太多了。

原因解释

StandordCoreNLP底层是Java编写的,在Python生成StanfordCoreNLP实例对象时,这个包会在后台启动一个java服务,供对象调用。但是,启动的服务不一定会被关掉,当服务启动的太多,到了一定数量时,就无法启动新的服务,也就出现不结束,不报错的奇怪现象。

解决方法

找到相关服务并杀死就好了,linux下,借助ps命令搜索相关的java服务,如下:

ps -ef | grep java

找到服务的进程ID,然后使用kill -9 进程ID杀死多余服务,OK!

  1. 也可以用下
wget "localhost:9000/shutdown?key=`cat /tmp/corenlp.shutdown`" -O -
  1. 最佳方式,开一个进程,每次都用这个进程就好
std_nlp = StanfordCoreNLP('http://localhost', port=9000)
posted @ 2021-08-01 12:30  契科夫列宁  阅读(110)  评论(0编辑  收藏  举报