分类存储在SQL记录中的文本
IngoRM
管理员、版主、员工、RapidMiner认证分析师、RapidMiner认证专家、社区经理、RMResearcher、会员、大学教授职位:1751年RM创始人
来自SourceForge论坛的原始消息http://sourceforge.net/forum/forum.php?thread_id=2044574&; forum_id = 390413
嗨
祝贺发布了RapidMiner 4.1!!
我试图分类存储在SQL记录的文本。每个文本都是我想要聚类的电子邮件交易(还没有监督学习)。我还没有找到一个简单的方法来获得文本进入分类器。
1- TextInput使用目录作为文档源,而不是单独的记录或文件。
2- DatabaseExampleSource -> StringTextInput没有提供一种方法来指定哪个字段是文本。我选择filternomalattributes,但我仍然有一个关于流输入的错误消息。
3-操作符->预处理->属性没有标称到字符串的转换器。有ChangeAttributeType操作符,但它似乎与ChangeAttributeRole相同。(Type不应该是字符串,布尔值,整数等吗?)
是否可以将文本字段直接移动到文本分类器中,或者我必须将它们导出并转换为RM格式(aml/dat)或导入?
< /操作符>
<列出关键= "名称空间”>
< / >列表
< /操作符>
< /操作符>
错误信息:
错误:StringTextInput (StringTextInput)输入示例集不包含任何值类型为string的属性。一些操作符需要具有特定值类型属性的示例集。有关详细信息,请参阅所使用操作符的文档。
输入示例集不包含任何值类型为字符串的属性。
谢谢你!
Ingo的回答:
你好,
你能给我们提供一个截图的结果正确(元数据视图和数据视图)后,加载它从你的数据库,即正确之后
< /操作符>
例如,你可以在这里上传截图:
http://tinypic.com/
并发布链接。如有需要,请考虑删除敏感内容。我只需要确保使用StringTextInput操作符一切正常。
提前感谢。欢呼,
Ingo
嗨
祝贺发布了RapidMiner 4.1!!
我试图分类存储在SQL记录的文本。每个文本都是我想要聚类的电子邮件交易(还没有监督学习)。我还没有找到一个简单的方法来获得文本进入分类器。
1- TextInput使用目录作为文档源,而不是单独的记录或文件。
2- DatabaseExampleSource -> StringTextInput没有提供一种方法来指定哪个字段是文本。我选择filternomalattributes,但我仍然有一个关于流输入的错误消息。
3-操作符->预处理->属性没有标称到字符串的转换器。有ChangeAttributeType操作符,但它似乎与ChangeAttributeRole相同。(Type不应该是字符串,布尔值,整数等吗?)
是否可以将文本字段直接移动到文本分类器中,或者我必须将它们导出并转换为RM格式(aml/dat)或导入?
< /操作符>
<列出关键= "名称空间”>
< / >列表
< /操作符>
< /操作符>
错误信息:
错误:StringTextInput (StringTextInput)输入示例集不包含任何值类型为string的属性。一些操作符需要具有特定值类型属性的示例集。有关详细信息,请参阅所使用操作符的文档。
输入示例集不包含任何值类型为字符串的属性。
谢谢你!
Ingo的回答:
你好,
你能给我们提供一个截图的结果正确(元数据视图和数据视图)后,加载它从你的数据库,即正确之后
< /操作符>
例如,你可以在这里上传截图:
http://tinypic.com/
并发布链接。如有需要,请考虑删除敏感内容。我只需要确保使用StringTextInput操作符一切正常。
提前感谢。欢呼,
Ingo
0
答案
下面是一个示例表,其中包含来自SQL数据库的一些文本字段。我使用DatabaseExample操作符链接到数据库并将文本字段拉入RM。
这些图片显示了初始设置和与文本字段的链接。我可以指定ID、标签和属性。我不能声明属性类型,比如字符串或整数。
http://tinypic.com/view.php?pic=n6ylud&; s = 3
http://tinypic.com/view.php?pic=app1d&; s = 3
已准备好数据库示例连接
http://tinypic.com/view.php?pic=25kkcr8&; s = 3
在数据库示例之后设置StringTextInput。“Database Example”输出为“Example Set”,“StringTextInput”输入为“Example Set”。但是,属性类型不是通过Example连接从SQL数据库携带的,因此我不能在第一步中声明它。
http://tinypic.com/view.php?pic=dxl538&; s = 3
元数据视图
http://tinypic.com/view.php?pic=2l9o3z9&; s = 3
数据视图
http://tinypic.com/view.php?pic=xfp7k0&; s = 3
错误消息
http://tinypic.com/view.php?pic=1z4czt0&; s = 3
http://tinypic.com/view.php?pic=vhzqwx&; s = 3
这些图片似乎不够清晰。如果你看不懂,我可以直接发给你。)
运营商链
< /操作符>
< /操作符>
<列出关键= "名称空间”>
< / >列表
< /操作符>
< /操作符>
谢谢你的帮助。
谢谢你的精彩图片和描述。因此,很容易找到这种行为的原因:StringTextInput操作符中有一个错误,因此只能处理String属性。由于没有操作符“nomal2string”或类似的东西可用,这当然只有在处理.aml文件时才有可能,而在从数据库加载数据时则不可能(正如您所注意到的)。
我们修复了文本插件并上传了一个新版本:
Windows安装程序:http://rapid-i.com/snapshot/rapidminer-text-4.1-installer.exe
其他平台:http://rapid-i.com/snapshot/rapidminer-text-4.1.jar
抱歉给您带来的不便,再次感谢您的报告和指出这个bug。
欢呼,
Ingo
感谢您的快速响应,并在Windows安装程序中发布更新。
现在,每条记录中的文本通过DatabaseExample进入RM,并传递给下一个操作符。当我设置filternomalattributes = On时,导入过程没有错误。该过程运行到最后,但StringTextInput不解析文本并创建向量(或者我错过了一些东西)。
另外,当我设置filternomalattributes = Off时,该进程将停止并生成一个错误。
我检查了安装,/lib/plugin文件的日期是5/29/2008。
下面是屏幕截图。
=========================
DatabaseExample从SQL数据库中提取。
1
http://tinypic.com/view.php?pic=2qjf57d&; s = 3
StringTextInput
2
Filter nomalattributes = On
http://tinypic.com/view.php?pic=2qjf57d&; s = 3
断点1元数据
3.
http://tinypic.com/view.php?pic=121y0qw&; s = 3
http://i27.tinypic.com/2rmxni0.jpg
断点1数据
4
http://i31.tinypic.com/21mf3ae.jpg
断点2元数据结果
StringTextInput应该将文本转换为单词向量,但文本仍然是一个字符串
5
http://i27.tinypic.com/14tt4io.jpg
断点2数据
文本记录不被解析为单独的词向量
6
http://i30.tinypic.com/bdldw2.jpg
这次filternomalattributes = Off
7
http://i26.tinypic.com/ei81go.jpg
错误消息
8
http://i32.tinypic.com/2hqur79.jpg
再次感谢您的详细描述! 应该是这样的。通常,StringTextInput操作符作用于String属性只有并且不转换名义属性。例如,如果您将文本存储在值类型为string的属性中,并且有其他(名义)属性存储有关文本的附加信息(例如author…),这些信息不应该被转换,则这很有用。因此得名字符串TextInput。但是,由于一些IO操作符不支持String属性,而名义属性对于用户来说更为常见,因此我们决定添加该参数,以便操作符也可以直接处理名义属性。在您的例子中,您只需激活参数,一切都很好。 是的,我完全忘了在我的上一篇文章中提到这一点,抱歉……
新的文本插件概念(我想是在RM 4.0中引入的)使文本预处理比以前更加模块化。这意味着预处理的所有步骤现在都可以定义为操作符(每个操作符都有自己的参数),这些操作符必须作为子操作符添加到TextInput / SingleTextInput / StringTextInput操作符中。通常,你想先添加一个标记器(例如StringTokenizer),然后可能是词干等。如果没有向*TextInput操作符添加预处理操作符,则根本不会创建向量。
实际上,应该有一条警告消息,说明“此操作符没有子操作符”。这通常不是有意的。您可能希望至少添加一个标记器”。
因此,解决方案很简单:只需添加一些文本预处理操作符,例如在以下设置中: 欢呼,
Ingo
关于子操作符的额外信息是我不理解的。当我添加Tokenizer和Stopword时,它会起作用。谢谢你的帮助。
将filternomalattributes设置为On似乎是正确的事情,但是我没有得到解析的结果,所以我尝试将其设置为Off。
要学的东西太多了。
你应该考虑出售培训视频。RM是提高数据挖掘技能的优秀工具。它是我发现的唯一一个非开发人员可以轻松使用的工具,而且比SAS和其他系统便宜。许多开源系统都是基于学术的,需要Java或其他编程知识。
很高兴听到现在有用了。
实际上,我们也考虑过制作和销售培训视频,它们可能会在某个时候出现。目前,我们决定在德国提供内部培训课程和非常小的小组课程,这样我们就可以准确地讨论用户的问题,并处理他们带来的数据(当然,如果数据不是太明智的话)。培训效果远远大于,所有学员在课程结束后都确认了这一点。当然,我们不可能只通过视频进行同样多的个人和问题相关的讨论。
另一方面,对于标准流程来说,提供网络广播和/或培训视频绝对是一个好主意,这样他们就可以完成基本任务。
谢谢你的溢美之词,祝一切顺利。
Ingo
几乎。它是ExcelExampleSource连同StringTextInput(不是单TextInput),参数filter_nominal_attributes设置为true。不要忘记在文本预处理操作符中添加内部操作符
欢呼,
Ingo
转到这篇文章
http://rapid-i.com/rapidforum/index.php/topic,78.0.html
这里有一些设置SQL链接以及要设置的操作符和参数的屏幕截图。下载STI补丁,将filter_nominal_attributes设置为ON/TRUE。将您的ID字段作为要选择的第一个字段,以便它将显示为字符串的左侧部分,并将ID_attribute_type设置为short或long,以便将文本用作ID。否则RM将覆盖您的ID。
这是一个解决方法,直到STI可以正确地通过操作符传递ID字段。
让我们知道你的长描述是否有效。我没有使用过超过几个句子或电子邮件的文本量的字符串,并且不能告诉您如此大量的文本是否可以正常工作。
B。
只是想让您知道,我们刚刚发布了RapidMiner的新版本(版本:4.2),其中包含一个修复StringTextInput操作符ID问题的错误。这些链接将在接下来的几个小时内出现在我们的网站上。
欢呼,
Ingo