Mallet 中 csvIterator 的参数是什么意思?
What do the parameters of the csvIterator mean in Mallet?
我正在使用 mallet 主题建模示例代码,虽然它运行良好,但我想知道这个语句的参数实际上是什么意思?
instances.addThruPipe(new CsvIterator(new FileReader(dataFile),
"(\w+)\s+(\w+)\s+(.*)",
3, 2, 1) // (data, target, name) field indices
);
This iterator, perhaps more properly called a Line Pattern Iterator, reads through a file and returns one instance per line, based on a regular expression.
If you have data of the form
[name] [label] [data]
您感兴趣的电话是
CsvIterator(java.io.Reader input, java.lang.String lineRegex,
int dataGroup, int targetGroup, int uriGroup)
第一个参数是数据的读入方式,如文件reader或字符串reader。第二个参数是用于从从 reader 读取的每一行中提取数据的正则表达式。在您的示例中,您有 (\w+)\s+(\w+)\s+(.*)
转换为:
- 1个或多个字母数字字符(捕获组,这是实例的名称),后跟
- 1 个或多个白色space 字符(制表符、space、..),后跟
- 1个或多个字母数字字符(捕获组,这是label/target),后跟
- 1 个或多个白色space 字符(制表符、space、..),后跟
- 0个或更多字符(这是数据)
数字3, 2, 1
表示数据在后,目标在后,名字在前。正则表达式基本上确保每行的格式如文档中所述:
test1 spam Wanna buy viagra?
test2 not-spam Hello, are you busy on Sunday?
CsvIterator
是一个糟糕的名字,因为这个 class 读入的实际上不是逗号分隔的值,它是白色 space 分隔的(space , tab, ...) 值。
上面回答的解释太好了。
但是缺少一分。 Line 正则表达式中输入实例的每个数据、标签和名称字段的正则表达式(regex)序列需要与输入文件中提供实例的方式相对应,即如果说您提供名称作为第一个字段,数据作为输入文件中的第二个字段和标签作为第三个字段,那么您必须首先提供名称的正则表达式,然后是数据的正则表达式,最后是标签的正则表达式。例子如下:
输入实例:Mail67(tab space)TCC 问题。您好,出于某种原因,古典大师绘画部门的管理员无法从 TCC 获得信息。它似乎正在 JDE 上进行,但在 TCC 上搜索时没有任何显示。您可以为 f....(tab space)Inc
提供任何帮助或指导
CsvIterator 参数:CsvIterator(new FileReader(文件路径), "(\w+)\t(.*)\t(\w+)",2,3,1)
我正在使用 mallet 主题建模示例代码,虽然它运行良好,但我想知道这个语句的参数实际上是什么意思?
instances.addThruPipe(new CsvIterator(new FileReader(dataFile),
"(\w+)\s+(\w+)\s+(.*)",
3, 2, 1) // (data, target, name) field indices
);
This iterator, perhaps more properly called a Line Pattern Iterator, reads through a file and returns one instance per line, based on a regular expression.
If you have data of the form
[name] [label] [data]
您感兴趣的电话是
CsvIterator(java.io.Reader input, java.lang.String lineRegex,
int dataGroup, int targetGroup, int uriGroup)
第一个参数是数据的读入方式,如文件reader或字符串reader。第二个参数是用于从从 reader 读取的每一行中提取数据的正则表达式。在您的示例中,您有 (\w+)\s+(\w+)\s+(.*)
转换为:
- 1个或多个字母数字字符(捕获组,这是实例的名称),后跟
- 1 个或多个白色space 字符(制表符、space、..),后跟
- 1个或多个字母数字字符(捕获组,这是label/target),后跟
- 1 个或多个白色space 字符(制表符、space、..),后跟
- 0个或更多字符(这是数据)
数字3, 2, 1
表示数据在后,目标在后,名字在前。正则表达式基本上确保每行的格式如文档中所述:
test1 spam Wanna buy viagra?
test2 not-spam Hello, are you busy on Sunday?
CsvIterator
是一个糟糕的名字,因为这个 class 读入的实际上不是逗号分隔的值,它是白色 space 分隔的(space , tab, ...) 值。
上面回答的解释太好了。
但是缺少一分。 Line 正则表达式中输入实例的每个数据、标签和名称字段的正则表达式(regex)序列需要与输入文件中提供实例的方式相对应,即如果说您提供名称作为第一个字段,数据作为输入文件中的第二个字段和标签作为第三个字段,那么您必须首先提供名称的正则表达式,然后是数据的正则表达式,最后是标签的正则表达式。例子如下:
输入实例:Mail67(tab space)TCC 问题。您好,出于某种原因,古典大师绘画部门的管理员无法从 TCC 获得信息。它似乎正在 JDE 上进行,但在 TCC 上搜索时没有任何显示。您可以为 f....(tab space)Inc
提供任何帮助或指导CsvIterator 参数:CsvIterator(new FileReader(文件路径), "(\w+)\t(.*)\t(\w+)",2,3,1)