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));
4

1 回答 1

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));

部分示例取自此处

于 2017-09-18T18:47:10.453 回答