한 줄기가 여러 단어에 공통적 일 수 있으므로 줄기에서 특정 단어를 복구하는 것은 이론적으로 불가능합니다. . 하나의 가능성은 응용 프로그램에 따라 여러 줄의 배열로 매핑 된 줄기 데이터베이스를 만드는 것입니다. 그러나 당신은 그 단어들 중 어느 것이 재 변환 할 줄기가 주어 졌는지 예측할 필요가 있습니다. 당신이 단어 태그를 알고있는 경우에이 문제에 매우 순진 솔루션으로
는, 당신은 당신의 데이터베이스에 태그 단어를 저장하는 시도 할 수 있습니다 : 다음
run:
NN: runner
VBG: running
VBZ: runs
, 줄기 "실행"및 태그 지정 "NN", 당신은 "러너"가 그 맥락에서 가장 가능성있는 단어라고 판단 할 수 있습니다. 물론, 그 해결책은 완벽하지 않습니다. 특히, 동일한 단어 형식이 다른 상황에서 다르게 태그 될 수 있다는 사실을 처리해야합니다. 그러나이 문제를 해결하려는 시도는 기껏해야 근사치라는 것을 기억하십시오.
편집 : 아래 주석에서 아마 형태소 분석 대신에 lemmatization을 사용하려는 것 같습니다. Stanford Core NLP tools을 사용하여 단어의 보조 정리를 얻는 방법은 다음과 같습니다.
import java.util.*;
import edu.stanford.nlp.pipeline.*;
import edu.stanford.nlp.ling.*;
import edu.stanford.nlp.ling.CoreAnnotations.*;
Properties props = new Properties();
props.put("annotators", "tokenize, ssplit, pos, lemma");
pipeline = new StanfordCoreNLP(props, false);
String text = "Hello, world!";
Annotation document = pipeline.process(text);
for(CoreMap sentence: document.get(SentencesAnnotation.class)) {
for(CoreLabel token: sentence.get(TokensAnnotation.class)) {
String word = token.get(TextAnnotation.class);
String lemma = token.get(LemmaAnnotation.class);
}
}
줄기를 사용하여 잘 작동하는 단어. 나는 효율성과 같은 말을하고있다. 형태소 분석의 효율성은 의미가없는 효능이된다. 내가 동행 할 계획이라면 효능을 생산 한 효율성 (효율성/다른 단어)에 관계없이 효율을 효율성으로 전환하는 것입니다. – CTsiddharth
다음으로 아마도 lemmatization (단어의 "기본"형태를 찾는 것 - 사전에 나열 될 내용) (단어의 "뿌리"를 찾는) 형태소 분석이 아닙니다. 줄기는 "효율적인"-> "효율"-> "효율성"과 같은 많은 기본 단어를 가질 수 있습니다. 하나의 보조 정리는 "효율적인"-> "효율적", "효율성"-> "효율성", "효율성"-> "효율성"과 같은 하나의 기본어에 해당합니다. 형태소 분석에서는 굴절과 기본 단어를 모두 잃게됩니다. 음표 화에서, 당신은 단지 억압을 잃게됩니다. 게시물에 방금 추가 한 코드는 Stanford 언어 화 도구로 시작해야합니다. – user2398029
안녕하세요.이 [질문] (http://stackoverflow.com/questions/9528080/error-in-stanford-nlp-core#comment12070615_9528080)을 살펴보고 도와주세요! – CTsiddharth