【问题标题】:machine learning and code generator from strings来自字符串的机器学习和代码生成器
【发布时间】:2011-02-19 05:40:42
【问题描述】:

问题:给定一组手工分类的字符串(或一组有序的字符串向量)生成一个分类函数来分类更多输入。就我而言,这些数据(或大部分数据)不是自然语言。

问题:是否有任何工具可以做到这一点?我正在考虑某种合理的优化、下载、安装和运行的东西,而不是一些图书馆或脆弱的学术程序。


(请不要拘泥于细节,因为真实的细节会限制对不太常用的回复的回答,并且处于保密协议之下。)

作为我正在查看的示例;我要过滤的输入是从日志中提取的计算机生成的状态字符串。根据需要通知谁或需要采取什么行动来过滤错误消息(例如)。

【问题讨论】:

  • 您可能想多说一点关于您要分类的字符串。例如,它们是否由自然语言数据(例如电子邮件或其他文档)组成?
  • 您是否有权访问源代码,即您是否拥有所有可能获得的状态字符串的列表?
  • 错误信息就是一个例子。 OTOH 我无权访问生成输入的东西。

标签: code-generation machine-learning nlp classification decision-tree


【解决方案1】:

手动操作

如果错误消息是自动生成的,并且消息背后的异常列表不是特别大,您可能只想有一个表,将每个错误消息type直接映射到需要通知。

这应该可以轻松跟踪确切谁/哪个组将收到什么类型的消息,并在您确定某些消息被误导时更新消息的路由.

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

文档分类

除非提交错误消息的人正在编辑错误消息,并且您希望在路由它们时使用此信息,否则我不建议将其视为文档分类任务。但是,如果这是您想要做的,这里有一个按编程语言组织的文档文档分类相当不错的包列表:

Python - 要使用基于 Python 的 Natural Language Toolkit (NLTK) 执行此操作,请参阅免费提供的 NLTK book 中的 Document Classification 部分。

Ruby - 如果 Ruby 更适合您,您可以使用 Classifier gem。这是检测 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

【讨论】:

  • 重新定位部分表+默认值;我正在考虑沿着这条路线的解决方案,但它更进一步。他们不是让用户定义分类规则,而是对特定示例进行分类,然后机器学习从中定义规则。这样做的好处是,通过挂钩错误分类数据被重新分配的位置,我可以扩展规则,而无需任何人做任何事情,只需说“Itme A 去找 Mr. B”。
  • +1 表示简单的“无移动部件”LuT 建议(可能有效,也可能无效——无法提供更多信息)。
【解决方案2】:

Mallet 有一堆分类器,您可以完全从命令行训练和部署它们
Weka 也很好,因为它有大量分类器和预处理器供您使用

【讨论】:

    【解决方案3】:

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

    您也可以尝试一些涉及 AdaBoost 的方法,以更实际地滚动您自己的方法。来自 Google 的 This library 看起来很有希望,但可能不符合您的准备部署要求。

    【讨论】:

    • 垃圾邮件往往是一个软的一维域。但是,在我的情况下,我更多地关注的是一个硬(有实际规则,我只是不想对它们进行逆向工程),无序,多路(从 N 中选择一个)选择。我想我应该删除“决定”这个词。
    • @BCS-- 我只记得使用贝叶斯规则的最佳部署文本解析解决方案是垃圾邮件过滤器。这些过滤器确实必须克服垃圾邮件发送者策略的趋势,例如引用文学作品等,而不是仅仅发现随机的不正确字母。我不知道它是否会解决您的特定问题,它只是我所知道的强大的部署文本解决方案的唯一示例。如果你发现了别的东西,我肯定会很高兴知道的。
    猜你喜欢
    • 2011-12-07
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 2018-06-12
    • 2017-01-14
    • 2012-09-02
    • 1970-01-01
    • 2021-08-23
    相关资源
    最近更新 更多