Я пытаюсь понять, почему добавление аргумента -nthreads {int}
к Stanford CoreNLP (версия stanford-corenlp-full-2015-12-09
) приводит к тому, что все токены имеют выходное значение NER для O (= not именованный объект).Stanford CoreNLP: -nthreads флаг вызывает все значения ner O
Как простой пример, создайте файл sample-file.txt
и произведите его содержимое Samuel Huntington
. Затем запустите:
java -Xmx6g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner -file sample-file.txt -outputFormat json
Это произведет ожидаемый результат, с «Самуила» признан как человек:
{
"sentences": [
{
"index": 0,
"parse": "SENTENCE_SKIPPED_OR_UNPARSABLE",
"tokens": [
{
"index": 1,
"word": "Samuel",
"originalText": "Samuel",
"lemma": "Samuel",
"characterOffsetBegin": 0,
"characterOffsetEnd": 6,
"pos": "NNP",
"ner": "PERSON",
"before": "",
"after": " "
}, ...
Если добавить -nthreads 8
в команду выше, однако, выход не указывает Самуилу это человек. Полная команда:
java -Xmx6g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner -file sample-file.txt -outputFormat json -nthreads 8
, который генерирует:
{
"sentences": [
{
"index": 0,
"parse": "SENTENCE_SKIPPED_OR_UNPARSABLE",
"tokens": [
{
"index": 1,
"word": "Samuel",
"originalText": "Samuel",
"lemma": "Samuel",
"characterOffsetBegin": 0,
"characterOffsetEnd": 6,
"pos": "NNP",
"ner": "O",
"before": "",
"after": " "
},
Для чего это стоит, -nthread {int}
(то есть нить, не с) решает эту проблему, так что я могу просто использовать эту команду. Я оставлю этот вопрос здесь, если другие попробуют использовать флаг -nthreads.
P.S. Вот мой CLASSPATH (получено из echo $CLASSPATH
), который содержит только распределение Stanford CoreNLP я скачал на прошлой неделе: /Users/dduhaime/Desktop/everett/wiki_facts/stanford-corenlp-full-2015-12-09/*:
Thanks @StanfordNLPПомощь! Ваша команда работает так, как ожидалось, но кажется, что добавление '-nthreads 8' к этой команде приводит к тому, что ner tokens для sample-file.txt указывают« O ». Вы знаете, почему это так, или что я могу сделать, чтобы получить тот же результат для этой разработанной команды, как и для вашей команды выше? Любая помощь очень ценится! – duhaime
Это, кажется, ошибка с многопоточным кодом. Спасибо за указание на это. – StanfordNLPHelp
Большое спасибо! Я рад, что это было довольно легко заметить. – duhaime