2016-07-20 1 views
0

인수를 스탠포드 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/*:

답변

0

-nthreads {int} 대신 을 사용하면 예상되는 NER 출력이 생성됩니다.

0

: 여기에 내가 지난 주 다운로드에만 스탠포드 CoreNLP 분포를 포함 (echo $CLASSPATH에서 얻은) 내 CLASSPATH,이다 Huntington "이라고 불렀고 두 토큰이 모두 PERSON 인 것으로 나타났습니다.

내 CLASSPATH에는 배포의 모든 병이 포함되어 있습니다.

시작해야 할 두 가지 사항은 2015-12-09 배포판을 다시 다운로드하는 것입니다 (최종 버전을 만들기 전에이 기능을 약간 변경하기 만합니다). 최신 버전을 갖고 있는지 확인하고 Python 코드에서 CLASSPATH가 있습니다. 아마도 java 명령을 실행하기 전에 "echo $ CLASSPATH;"를 추가하십시오. java 명령을 보면 CLASSPATH가 설정되지 않으므로 사용중인 CLASSPATH가 무엇인지 명확하게 알 수 없습니다.

+0

감사합니다. @StanfordNLPHelp! 명령이 예상대로 작동하지만 명령에'-nthreads 8 '을 추가하면 sample-file.txt의 ner 토큰이 모두 "O"를 표시합니다. 그 이유를 아시나요, 아니면 제가 위의 명령에 대해하는 것처럼이 정교한 명령에 대해 동일한 출력을 얻으려면 어떻게해야합니까? 어떤 도움이라도 대단히 감사합니다! – duhaime

+1

이것은 멀티 스레딩 코드의 버그 인 것 같습니다. 이것을 지적 해 주셔서 감사합니다. – StanfordNLPHelp

+0

많은 감사합니다! 나는 그것이 발견하기 매우 쉽기 때문에 기쁘다. – duhaime

관련 문제