将源代码目录转换为ARFF(WEKA)

时间:2015-08-26 14:05:29

标签: weka

目前,我正在使用WEKA开展一个项目。作为天真和新手,有许多事情我并不熟悉。在我的上一个项目中,我使用文本文件作为使用WEKA的分类。我应用了TextDirectoryLoader转换器来转换包含此URL Text categorization with WEKA中提到的文本文件的目录。现在我想使用相同的stretagy来转换包含源代码(而不是文本)的目录。例如,我有一个包含Java源代码的Jedit源文件。我试图将其转换为ARFF文件,以便我可以在该ARFF文件上应用分类器或WEKA中存在的其他函数用于数据挖掘目的。我还尝试了以下网址ARFF files from Text Collections上提供的测试文件。我相信我可以使用相同的文件作为示例来转换源代码文件。但是,我不知道我应该在FastVector中定义什么属性?数据应采用何种格式(字符串或数字)。 ARFF文件可能包含哪些其他部分?

如在示例中作者已定义以下属性

FastVector atts = new FastVector(2);
atts.addElement(new Attribute("filename", (FastVector) null));
atts.addElement(new Attribute("contents", (FastVector) null));

我试图在Google上找到一些例子,但没有成功。

  1. 这里的任何人都可以建议我解决上述问题的任何解决方案或替代方案吗? (示例代码将受到高度赞赏)。
  2. 或至少可以给我一个简短的例子,它将源代码目录转换为ARFF文件。 (如果可能的话)。
  3. 如果不可能,那可能是什么原因
  4. 任何替代解决方案(WEKA除外),我可以在源代码上使用相同的功能集。

1 个答案:

答案 0 :(得分:0)

目前尚不清楚,你的目标是什么?您想要对源代码文件进行分类,还是找到包含任何错误的文件,或者是什么? 正如我想象的那样,您希望从每个源文件中提取功能,并使用实例表示它。然后,您可以应用任何基于机器学习的算法。 在这里,您可以找到一个java示例,如何从java构造一个arff文件: https://weka.wikispaces.com/Creating+an+ARFF+file 但是,您必须定义特定于任务的功能并从每个源代码文件中提取它。