Java 解释StringToWordVector()的输出-Weka
我正在尝试使用wekajavaapi进行文档分类 这是我的数据文件目录结构Java 解释StringToWordVector()的输出-Weka,java,text,machine-learning,classification,weka,Java,Text,Machine Learning,Classification,Weka,我正在尝试使用wekajavaapi进行文档分类 这是我的数据文件目录结构 +- text_example | +- class1 | | | 3 html files | +- class2 | | | 1 html file | +- class3 | 3 html files 我使用“TextDirectoryLoader”创建了“arff”文件。然后我在创建的arff文件上使用StringToWordVector过滤器,使用filter.setOutputW
+- text_example
|
+- class1
| |
| 3 html files
|
+- class2
| |
| 1 html file
|
+- class3
|
3 html files
我使用“TextDirectoryLoader”创建了“arff”文件。然后我在创建的arff文件上使用StringToWordVector
过滤器,使用filter.setOutputWordCounts(true)
下面是应用过滤器后的输出示例。我需要澄清一些事情
@attribute </form> numeric
@attribute </h1> numeric
.
.
@attribute earth numeric
@attribute easy numeric
为什么前3项没有class属性?(应该是1级)。
在{0 class2,…},{0 class3,…}中,前导0是什么意思。
例如,它说,在class3文件夹中的第三个html文件中,由整数32标识的单词出现了5次。只是想看看如何得到32所指的单词(令牌)
如何降低特征向量的维数?我们不需要使所有的特征向量大小相同吗?(例如,只考虑训练集中的100个最常见的术语,以后再考虑测试时,只考虑测试文档中100个术语的出现。因为,如果我们在测试阶段提出一个完全新的单词,那么分类器会忽略它吗?)p>
我是不是遗漏了什么?我是韦卡的新手
另外,如果有人能向我解释分类器如何使用通过StringToWordVector
filter创建的向量,我也非常感谢您的帮助。(比如用训练数据创建词汇表、降维,这些都是在Weka代码中发生的吗?)
@attribute
列表包含从您的输入派生的所有标记@data
部分采用稀疏格式,即对于每个属性,仅当值不同于零时才说明该值。对于前三行,class属性是class1,您无法看到它(如果它未知,您将在前三行的开头看到一个0?
)。为什么会这样?Weka在内部将标称属性(包括类)表示为双倍,并从零开始计数。所以你的三个类是内部的:class1=0.0,class2=1.0,class3=2.0。由于零值不是以稀疏格式表示的,所以在前三行中看不到该类。(另请参见上的“稀疏ARFF文件”一节)实例
对象,则在其上调用属性(n).name()
。因此,n
从0开始计数stringToWordVector.setWordsToKeep(100)
。请注意,这将尝试保留每个类的100个单词。如果不希望每个类保留100个单词,请使用stringToWordVector.setdonotoperateonperslassbasis(true)
。如果有几个词的频率相同,你会得到略高于100的值,所以100只是一种目标值stringToWordVector
所有实例交给你。不过,我不能100%确定这一点,因为我使用的是两类设置,我让StringToWordVector
在告诉分类器任何有关它的信息之前转换所有实例李>
我可以向您推荐,使用Weka KnowledgeFlow工具进行实验,学习如何使用不同的类。如果您知道如何在那里做事情,那么您可以很容易地将这些知识用于Java代码。
希望我能帮助您,尽管答案有点晚。是的,ans在我自学答案的地方有点晚。但是谢谢你的回答,我接受了。嘿,你们有在weka中使用libsvm(包装器)进行一类分类的经验吗?我有点受不了了it@user601不,对不起。我在Weka中从未使用过libsvm。出于好奇:你是在写一篇关于机器学习/数据挖掘主题的论文吗?是的,我正在写一篇涉及文本分类的高年级论文。你也在做类似的事情吗?我正在写我的学士论文,其中也涉及文本分类:)嘿,没关系。有一种方法可以在TextToDirectoryLoader筛选器中将文件名设置为不同的属性;如果我考虑的话,类似于setfilename(布尔)的东西。
@data
{1 2,3 2,4 1,11 1,12 7,..............}
{10 4,34 1,37 5,.......}
{2 1,5 6,6 16,...}
{0 class2,34 11,40 15,.....,4900 3,...
{0 class3,1 2,37 3,40 5....
{0 class3,1 2,31 20,32 17......
{0 class3,32 5,42 1,43 10.........