2014-03-25 10 views
0

포터 알고리즘과 같은 단어 형태소 분석 알고리즘을 살펴 봤지만 지금까지 입력으로 파일을 처리 한 모든 것을 다뤘습니다.입력을위한 문자열로 간단한 형태소 분석 알고리즘

줄임표에 문자열을 단순히 전달하고 줄기가있는 문자열을 반환하도록하는 기존 알고리즘이 있습니까? 같은

뭔가 :

String toBeStemmed = "The man worked tirelessly"; 
Stemmer s = new Stemmer(); 

String stemmed = s.stem(toBeStemmed); 
+1

을 포터 줄기에 관한 훌륭한 사이트는 http://tartarus.org/martin/PorterS입니다. 온도계 / – aloisdg

답변

0

알고리즘 자체가 파일을하지 않습니다. 이 코드는 파일을 받아 일련의 문자열로 읽습니다.이 문자열은 알고리즘에 제공됩니다. 파일에서 문자열을 읽는 코드 부분을보고 비슷한 방식으로 문자열을 전달하면됩니다.

0

예에서 toBeStemmed은 토큰화할 문장입니다. 그런 다음 '작업 한'또는 '지칠 줄 모르는 사람'과 같은 개별 토큰/단어를 줄 것입니다.

내 프로젝트의 일부에서 형태소 분석기로 사용되는 훌륭한 형태소 분석기입니다.

형태소 분석기 JAR : https://code.google.com/p/hunglish-webapp/source/browse/trunk/#trunk%2Flib%2Fnet%2Fsf%2Fjhunlang%2Fjmorph%2F1.0
형태소 분석기 소스 : https://code.google.com/p/j-morph/source/checkout
언어 리소스 파일 : https://code.google.com/p/hunglish-webapp/source/browse/trunk/#trunk%2Fsrc%2Fmain%2Fresources%2Fresources-lang%2Fjmorph
내가 루씬와 함께 사용 방법 : https://code.google.com/p/hunglish-webapp/source/browse/trunk/src/main/java/hu/mokk/hunglish/jmorph/
등록 정보 파일 : https://code.google.com/p/hunglish-webapp/source/browse/trunk/src/main/resources/META-INF/spring/stemmer.properties

사용 예제 :

import net.sf.jhunlang.jmorph.lemma.Lemma; 
import net.sf.jhunlang.jmorph.lemma.Lemmatizer; 
import net.sf.jhunlang.jmorph.analysis.Analyser; 
import net.sf.jhunlang.jmorph.analysis.AnalyserContext; 
import net.sf.jhunlang.jmorph.analysis.AnalyserControl; 
import net.sf.jhunlang.jmorph.factory.Definition; 
import net.sf.jhunlang.jmorph.factory.JMorphFactory; 
import net.sf.jhunlang.jmorph.parser.ParseException; 
import net.sf.jhunlang.jmorph.sample.AnalyserConfig; 
import net.sf.jhunlang.jmorph.sword.parser.EnglishAffixReader; 
import net.sf.jhunlang.jmorph.sword.parser.EnglishReader; 
import net.sf.jhunlang.jmorph.sword.parser.SwordAffixReader; 
import net.sf.jhunlang.jmorph.sword.parser.SwordReader; 

AnalyserConfig acEn = new AnalyserConfig(); 
//TODO: set path to the English affix file 
String enAff = "src/main/resources/resources-lang/jmorph/en.aff"; 
Definition affixDef = acEn.createDefinition(enAff, "utf-8", EnglishAffixReader.class); 
//TODO set path to the English dict file 
String enDic = "src/main/resources/resources-lang/jmorph/en.dic"; 
Definition dicDef = acEn.createDefinition(enDic, "utf-8", EnglishReader.class); 
int enRecursionDepth = 3; 
acEn.setRecursionDepth(affixDef, enRecursionDepth); 
JMorphFactory jf = new JMorphFactory(); 
Analyser enAnalyser = jf.build(new Definition[] { affixDef, dicDef }); 
AnalyserControl acEn = new AnalyserControl(AnalyserControl.ALL_COMPOUNDS); 
AnalyserContext analyserContextEn = new AnalyserContext(acEn); 
boolean enStripDerivates = true; 
Lemmatizer enLemmatizer = new net.sf.jhunlang.jmorph.lemma.LemmatizerImpl(enAnalyser, enStripDerivates, analyserContextEn); 


//After somewhat complex initializing, here we go 
List<Lemma> lemmas = enLemmatizer.lemmatize("worked"); 
for (Lemma lemma : lemmas) { 
    System.out.println(lemma.getWord()); 
}