我有这个代码来导入文件.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文件,则必须使用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。