Почему один и тот же вызов к серверу Stanford CoreNLP иногда> в 30 раз медленнее, чем предыдущие аналогичные вызовы?
Демонстрация (в этом случае каждый вызов ~ 12 API происходит в ~ 30 раз медленнее, даже если проанализированный текстто же самое):
Например, если я запускаю сервер Stanford CoreNLP с помощью:
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9001 -timeout 50000
и запускаю следующеекод, который делает 200 одинаковых вызовов API к серверу Stanford CoreNLP через пакет Python pycorenlp:
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-generic x86_64).
Кажетсячто проблема в основном затрагивает аннотатор ner
.Аннотатор parse
также затронут, но в меньшей степени.У аннотаторов tokenize,ssplit,pos,depparse,truecase
, похоже, нет этой проблемы.