为什么对斯坦福CoreNLP服务器的同一呼叫有时比以前的相同呼叫慢50倍?

时间:2019-06-24 01:15:42

标签: python performance nlp stanford-nlp pycorenlp

为什么对斯坦福CoreNLP服务器的相同呼叫有时比以前的相同呼叫慢30倍?

演示(在这种情况下,即使解析的文本相同,每个〜12 API调用也要慢大约30倍):

enter image description here

例如,如果我使用以下命令启动Stanford CoreNLP服务器:

 java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9001 -timeout 50000

并运行以下代码,它通过Python包pycorenlp对Stanford CoreNLP服务器进行200个相同的API调用:

import os
import json
from pycorenlp import StanfordCoreNLP
import time
import sys
nlp = StanfordCoreNLP('http://localhost:9001')
total_start_time = time.time()

for i in range(200):
    text = 'without the dataset the paper {0} is useless'.format(i)
    print('text: {0}'.format(text))
    start_time = time.time()
    output = nlp.annotate(text, properties={
        'annotators': 'ner',
        'outputFormat': 'json'
    })
    elapsed_time = time.time() - start_time
    print('elapsed_time: {0:.4f} seconds'.format(elapsed_time))

print('total_start_time: {0:.4f} seconds'.format(time.time()-total_start_time))

我偶尔会发现API调用的速度比正常情况下慢30倍以上,例如请参见下面的两行强调内容:

  

文本:如果没有数据集,则纸张0是无用的
  经过时间:0.0199秒
  文字:没有数据集,论文1没用
  经过时间:0.0160秒
  文字:没有数据集,论文2毫无用处
  经过时间:0.0160秒
  文字:没有数据集,论文3毫无用处
  经过时间:0.0170秒
  文字:没有数据集,论文4没用
  经过时间:0.0160秒
  文字:如果没有数据集,则论文5毫无用处
  经过时间:0.0169秒
  文字:没有数据集,论文6没用
  经过时间:0.0170秒
  文字:没有数据集,论文7毫无用处
  经过时间:0.0180秒
  文字:如果没有数据集,则论文8毫无用处
  经过时间:0.0170秒
  文字:没有数据集,论文9没用
  经过时间:0.0190秒
  文字:没有数据集,论文10毫无用处
  经过时间:0.6911秒
  文字:没有数据集,论文11没用
  经过时间:0.0130秒
  文字:没有数据集,论文12毫无用处
  经过时间:0.0140秒
  文字:没有数据集,论文13毫无用处
  经过时间:0.0150秒
  文字:没有数据集,论文14没用
  经过时间:0.0170秒
  文字:没有数据集,论文15毫无用处
  经过时间:0.0179秒
  文字:没有数据集,论文16毫无用处
  经过时间:0.0160秒
  文字:没有数据集,论文17毫无用处
  经过时间:0.0140秒
  文字:如果没有数据集,则论文18毫无用处
  经过时间:0.0179秒
  文字:没有数据集,论文19没用
  经过时间:0.0170秒
  文字:没有数据集,论文20毫无用处
  经过时间:0.0150秒
  文字:如果没有数据集,则论文21毫无用处
  经过时间:0.0170秒
  文字:没有数据集,论文22毫无用处
  经过时间:0.0170秒
  文字:没有数据集,论文23毫无用处
  经过时间:0.0160秒
  文字:没有数据集,论文24毫无用处
  经过时间:0.6343秒
  文字:没有数据集,论文25毫无用处
  经过时间:0.0130秒
  文字:没有数据集,论文26毫无用处
  经过时间:0.0130秒
  文字:没有数据集,论文27没用
  经过时间:0.0160秒
  文字:没有数据集,论文28毫无用处
  经过时间:0.0150秒
  文字:没有数据集,论文29毫无用处
  经过时间:0.0170秒
  文字:没有数据集,论文30毫无用处
  经过时间:0.0167秒
  文字:没有数据集,论文31没用
  经过时间:0.0180秒
  […]

(我使用引号格式而不是代码块来增加重点。)

我使用python 3.6和Stanford CoreNLP版本3.9.2,即2018-10-05。我在运行Windows 7 SP1 x64 Ultimate,Microsoft Windows 18.03“ Professional”和Ubuntu 16.04.4 LTS 1(GNU / Linux 4.4.0-128-通用x86_64)的三台计算机上都观察到了这种行为。

该问题似乎主要影响ner注释者。 parse注释器也受到影响,但程度较小。注释者tokenize,ssplit,pos,depparse,truecase似乎没有这个问题。

0 个答案:

没有答案