Java 如何使用malletapi从描述特征值对的文件创建实例?
我尝试运行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代码: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
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 几天前有人告诉我。无论如何,非常感谢你的回复。这真的很有帮助:)