Machine learning 在槌中,csvIterator的参数意味着什么?
我正在使用mallet主题建模示例代码,尽管它运行良好,但我想知道这条语句的参数实际上意味着什么Machine learning 在槌中,csvIterator的参数意味着什么?,machine-learning,nlp,topic-modeling,text-analysis,mallet,Machine Learning,Nlp,Topic Modeling,Text Analysis,Mallet,我正在使用mallet主题建模示例代码,尽管它运行良好,但我想知道这条语句的参数实际上意味着什么 instances.addThruPipe(new CsvIterator(new FileReader(dataFile), "(\\w+)\\s+(\\w+)\\s+(.*)", 3, 2, 1) // (data, target, name)
instances.addThruPipe(new CsvIterator(new FileReader(dataFile),
"(\\w+)\\s+(\\w+)\\s+(.*)",
3, 2, 1) // (data, target, name) field indices
);
从:
这个迭代器,也许更恰当地称为线模式迭代器,基于正则表达式,读取文件并每行返回一个实例
如果你有表格的数据
[姓名][标签][数据]
你感兴趣的电话是
CsvIterator(java.io.Reader input, java.lang.String lineRegex,
int dataGroup, int targetGroup, int uriGroup)
第一个参数是如何读入数据,如文件读取器或字符串读取器。第二个参数是regex,用于从读卡器读取的每行中提取数据。在您的示例中,您得到了(\\w+)\\s+(\\w+)\\s+(.*)
,转换为:
- 1个或多个字母数字字符(捕获组,这是实例的名称),后跟
- 1个或多个空白字符(制表符、空格、…),后跟
- 1个或多个字母数字字符(捕获组,这是标签/目标),后跟
- 1个或多个空白字符(制表符、空格、…),后跟
- 0个或更多字符(这是数据)
3,2,1
表示数据排在最后,目标排在第二位,名称排在第一位。正则表达式基本上确保了每行的格式如文档中所述:
test1 spam Wanna buy viagra?
test2 not-spam Hello, are you busy on Sunday?
CsvIterator
是一个糟糕的名称,因为该类实际上读取的不是逗号分隔的值,而是空格分隔的(空格、制表符等)值 以上答案中给出的解释太好了
然而,有一点遗漏了。regex行中输入实例的每个数据、标签和名称字段的正则表达式(regex)序列需要与输入文件中提供实例的方式一致,即,如果假设您提供名称作为第一个字段,数据作为输入文件中的第二个字段,标签作为第三个字段,然后必须首先提供名称的正则表达式,然后是数据的正则表达式,最后是标签的正则表达式。示例如下所示:
输入实例:Mail67(选项卡空间)TCC问题。您好,不知什么原因,老大师绘画部的管理员都无法从TCC获得信息。它似乎在JDE上运行,但在TCC上搜索时没有显示任何内容。您可以向f…(选项卡空间)公司提供的任何帮助或指导
CsvIterator参数:CsvIterator(新文件读取器(文件路径),“(\w+)\t(.*)\t(\w+)”,2,3,1)这是一个很好的解释。它是否支持每个like-One和Rest-type分类器的多个标签?