2014-06-07 10 views
3

내가 파일 .mallet 가져 오려면이 코드가 있습니다망치 주제 모델링 : 입력 문자열

File f=new File("/home/test/file.mallet"); 
InstanceList t=InstanceList.load(f); 

을하지만 수동으로 모든 단일 인스턴스를 전환하기를 원한다면, 내가 어떻게 할 수 있을까? 나는 이것을 시도했다 :

String str="Test for mallet."; 
InstanceList t=new InstanceList(); 
t.add(new Instance(str,"test","test",null)); 

그러나 그것은 나에게 오류를 준다!

편집

내가 그것을 시도하고 문자열의 배열을 작동하는 것 같다 :

ArrayList<String> aa =ArrayList<Pipe>(); 
aa.add("Test string 1."); 
aa.add("Test string 2."); 

String[] ob1=new String[aa.size]; 
ob1=aa.toArray(ob1); 

ArrayList<Pipe> pipeList=ArrayList<Pipe>(); 
pipeList.add(new CharSequenceLowerCase()); 
//.... 
pipeList.add(new TokenSequence2FeatureSequence()); 

InstanceList training=new InstanceList(new SerialPipes(pipeList)) 

training.addThruPipe(new StringArrayIterator(ob1)); 
+0

질문을 이해할 수 없습니다. –

+0

두 번째 예제와 같이 문자열을 전달하려면 일반적으로 항목 모델링을 위해 .mallet 파일로 전달됩니다. – Enzo

+0

답변으로 판을 게시 할 것입니다. – Klerisson

답변

0

당신이 문자열 목록을 사용하려면 나 대신 망치를위한 파일의 객체 경우, thrupipe에 대한 반복기를 사용해야합니다. 사용할 개체의 유형에 따라 StringArrayIterator 또는 간단히 ArrayIterator을 사용할 수 있습니다. StringArrayIterator는 문자열 배열을 필요로하며 ArrayIterator는 객체 목록이나 배열을 필요로합니다. API는 그다지 잘 설명되어 있지는 않지만 바로 사용할 수 있습니다.

ArrayList<Pipe> pipeList = new ArrayList<>(); 
pipeList.add(new CharSequenceLowercase()); 
pipeList.add(new CharSequence2TokenSequence(Pattern.compile("[\\p{L}\\p{N}_]+"))); 
pipeList.add(new TokenSequenceRemoveStopwords(false, false)); 
... 

InstanceList instances = new InstanceList(new SerialPipes(pipeList)); 

객체의 배열 또는 목록을 사용하는 중 하나를 선택 :

ArrayList<String> list = new ArrayList<>(); 
list.add("text1 text2 text3"); 
list.add("text4 text5"); 
list.add("text6 text7"); 
instances.addThruPipe(new ArrayIterator(list)); 

또는 문자열의 배열 : 예의

String[] array = new String[]{"text1","text2","text3"}; 
instances.addThruPipe(new StringArrayIterator(array)); 

일부는 here에서 가져옵니다.