인수를 스탠포드 CoreNLP (버전 stanford-corenlp-full-2015-12-09
)에 추가하면 모든 토큰의 출력 NER 값이 O가됩니다 (= not 명명 된 엔티티).스탠포드 CoreNLP : -nthreads 플래그로 인해 모든 ner 값이 0보다 크게됩니다.
간단한 예로, sample-file.txt
이라는 파일을 만들고 그 내용을 Samuel Huntington
이라고 말합니다. 그런 다음 실행
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": "PERSON",
"before": "",
"after": " "
}, ...
것은, 그러나, 출력이 사무엘을 표시하지 않습니다 사람이야. 전체 명령을 생성
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. 그냥 "사무엘 텍스트가 포함 된 샘플 file.txt를 가진
java -Xmx6g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner -file sample-file.txt -outputFormat json
:이 명령을 실행 /Users/dduhaime/Desktop/everett/wiki_facts/stanford-corenlp-full-2015-12-09/*:
감사합니다. @StanfordNLPHelp! 명령이 예상대로 작동하지만 명령에'-nthreads 8 '을 추가하면 sample-file.txt의 ner 토큰이 모두 "O"를 표시합니다. 그 이유를 아시나요, 아니면 제가 위의 명령에 대해하는 것처럼이 정교한 명령에 대해 동일한 출력을 얻으려면 어떻게해야합니까? 어떤 도움이라도 대단히 감사합니다! – duhaime
이것은 멀티 스레딩 코드의 버그 인 것 같습니다. 이것을 지적 해 주셔서 감사합니다. – StanfordNLPHelp
많은 감사합니다! 나는 그것이 발견하기 매우 쉽기 때문에 기쁘다. – duhaime