Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用malletapi从描述特征值对的文件创建实例?_Java_Lda_Topic Modeling_Mallet - Fatal编程技术网

Java 如何使用malletapi从描述特征值对的文件创建实例?

Java 如何使用malletapi从描述特征值对的文件创建实例?,java,lda,topic-modeling,mallet,Java,Lda,Topic Modeling,Mallet,我尝试运行LDA从txt文件生成一些主题,如下所示: 文件1标签1森林=3.4树木=5木材=2.85锤子=1颜色=1树叶=1.5 文件2标签2森林=10树木=5木材=2.75锤=1颜色=4叶=1 文件3 label3 forest=19 tree=0.90 wood=2 hammer=2 Color=9 leaf=4.3 文件4标签4森林=4树=5木=10锤=1色=6叶=3 文件中的每个数值表示每个特征(如森林、树木)的出现次数乘以给定惩罚 要从这样的文件生成实例,我使用以下Java代码: S

我尝试运行LDA从txt文件生成一些主题,如下所示:

文件1标签1森林=3.4树木=5木材=2.85锤子=1颜色=1树叶=1.5

文件2标签2森林=10树木=5木材=2.75锤=1颜色=4叶=1

文件3 label3 forest=19 tree=0.90 wood=2 hammer=2 Color=9 leaf=4.3

文件4标签4森林=4树=5木=10锤=1色=6叶=3

文件中的每个数值表示每个特征(如森林、树木)的出现次数乘以给定惩罚

要从这样的文件生成实例,我使用以下Java代码:

String lineRegex=“^(\\S*)[\\S,]*(\\S*)[\\S,]*(.*)$”;
字符串dataRegex=“[\\p{L}([0-9]*\\.[0-9]+[0-9]+)\\=]+”;
InstanceList generateInstances(字符串数据路径)引发UnsupportedEncodingException、FileNotFoundException{
ArrayList管道列表=新的ArrayList();
添加(新的Target2Label());
添加(新的CharSequenceLowercase());
添加(新的Input2CharSequence());
add(新的CharSequence2TokenSequence(Pattern.compile(dataRegex));
/*添加(新TokenSequenceRemoveStopwords)(新文件(stopwordListPath),“UTF-8”,
假,假,假),*/
添加(新的TokenSequenceParseFeatureString(true,true,“=”));
添加(新的PrintInputTarget());
InstanceList实例=新InstanceList(新的串行管道(管道列表));
Reader fileReader=new InputStreamReader(new FileInputStream(new File(dataPath)),
“UTF-8”);
addThruPipe(新的CsvIterator(文件读取器,模式.compile(lineRegex)),
3, 2, 1)); 
返回实例;

}
以下是mallet使用的输入格式:

您的数据某种程度上是Svmlight格式,如下所示:“目标特征:值特征:值…”

但不幸的是,您不能将此格式用于主题建模,LDA!!它使用featureSequence,而不是featureVector。所以你可以做的是将你的输入转换成一袋单词,例如,如果你有 Document2 label2 forest=3 tree=2。。。
将其转换为:Document2 label2 forest tree

几天前有人告诉我。无论如何,非常感谢你的回复。这真的很有帮助:)