3

问题:给定一组手工分类的字符串(或一组有序的字符串向量)生成一个分类函数,以对更多输入进行分类。就我而言,这些数据(或大部分数据)不是自然语言。字符串中的机器学习和代码生成器

问题:是否有任何工具可以做到这一点?我正在考虑一些合理的打磨,下载,安装和类似的事情,而不是一些图书馆或一个脆弱的学术计划。


(不要停留在细节,请尽快与真正细节将限制答案通常较少有用的答复,并签署保密协议。)

由于我正在寻找一个例子;我想要过滤的输入是从日志中提取的计算机生成的状态字符串。根据需要通知谁或需要采取什么操作来过滤错误消息(作为示例)。

+0

您可能想更多地谈谈要分类的字符串。例如,它们是由自然语言数据(例如,电子邮件或其他文件)组成的吗? – dmcer 2010-05-14 18:18:03

+0

您是否有权访问源代码,即您是否拥有所有可能的状态字符串列表? – 2010-05-15 01:02:50

+0

错误消息是一个例子。 OTOH我无法访问生成输入的东西。 – BCS 2010-05-16 00:31:05

回答

0

您是否试过垃圾邮件或电子邮件过滤器?通过使用已经标记了适当类别的文本文件,您应该能够对文本输入做进一步分类。无论如何,这些程序都是这样做的,但不是将输出标记为“垃圾邮件”和“非垃圾邮件”,您可以执行其他类别。

你也可以尝试一些涉及AdaBoost的东西,以更自然的方式来滚动你自己的东西。来自Google的This library看起来很有希望,但可能不符合您的即时部署要求。

+0

垃圾邮件往往是一个柔软的一维域。然而,在我的情况下,我越来越看重硬件(有实际的规则,我只是不想对它们进行反向工程),无序,多路(选择N个中的一个)选择。我想我应该删除“决定”一词。 – BCS 2010-05-13 18:46:33

+0

@ BCS--我只记得使用贝叶斯规则的最佳部署文本解析解决方案是垃圾邮件过滤器。这些过滤器必须克服垃圾邮件发送者战术的趋势,比如引用文献等,而不是仅仅发现随机错误的字母。我不知道它是否能解决您的特定问题,它只是我所了解的一个可靠的已部署文本解决方案的唯一示例。如果你发现别的东西,我一定会很高兴知道它。 – mmr 2010-05-14 00:41:31

1

Mallet有一堆分类的,你可以训练和完全从命令行部署
Weka也不错,因为它有分类器和预处理器的数量庞大,为您与

3

做事手动

如果错误消息是自动生成的,并且消息背后的异常列表不是非常大,那么您可能只想拥有一个表,它可以直接映射每个错误消息类型给需要通知的人。

这应该很容易跟踪到底谁/哪些组将获得哪些类型的消息并在您决定某些消息被误导时更新消息的路由。

通常,一小部分类型的错误构成大部分错误报告。例如,微软在其软件中注意到80% of crashes were caused by 20% of the bugs。所以,为了获得一些有用的信息,你甚至不需要从一个包含每种错误信息的完整表格开始。相反,您可以从一个列表中将最常见的错误映射到正确的人并将其他路由路由到人手动路由。每次手动发送错误时,您都可以在路由表中添加一个条目,以便将来自动处理该类型的错误。

文档分类

除非错误消息正在被人谁提交问题,你想选择路线时他们使用此信息社论,我不会推荐这当作一个文件分类任务。但是,如果这是你想要做什么,这是一个被编程语言组织。文件分类相当不错的包的列表:

Python的 - 为了这个使用基于Python的做Natural Language Toolkit (NLTK),看到Document Classification节在免费提供NLTK book

红宝石 - 如果Ruby是更多你的事情,你可以使用Classifier宝石。以下是检测 whether Family Guy quotes are funny or not-funny的示例代码。

C# - C#程序员可以使用nBayes。该项目的主页有简单的垃圾邮件/非垃圾邮件分类器的示例代码。

的Java - Java的乡亲有Classifier4JWekaLucene Mahout,并作为adi92提到Mallet

学习规则与Weka - 如果规则是你想要的,Weka可能会特别感兴趣,因为它包括一个rule set based learner。你会发现一个使用Weka进行文本分类的教程here

+1

重新部分表+默认的位;我正在考虑沿着这条路线的解决方案,但这需要更进一步。用户不需要定义分类规则,只需要对具体示例进行分类,然后机器学习就可以从中定义规则。这有一个好处,就是通过在错误分类的数据被重新分配的地方挂钩,我可以增加规则,而不需要任何人做任何事情,而是说“Itme A去B先生”。 – BCS 2010-05-16 00:41:14

+0

对于简单的“无移动部件”LuT建议+1(可能工作,可能不会 - 没有办法告诉没有更多信息)。 – doug 2010-05-31 09:57:30