问题:给定一组手工分类的字符串(或一组有序的字符串向量)生成一个分类函数来分类更多输入。就我而言,该数据(或大部分数据)不是自然语言。
问题:是否有任何工具可以做到这一点?我正在考虑某种合理完善、下载、安装和运行的东西,而不是一些图书馆或脆弱的学术程序。
(请不要拘泥于细节,因为真实的细节会限制对不太有用的回复的回答,并且在 NDA 之下。)
作为我正在查看的示例;我要过滤的输入是从日志中提取的计算机生成的状态字符串。根据需要通知谁或需要采取什么行动来过滤错误消息(例如)。
问题:给定一组手工分类的字符串(或一组有序的字符串向量)生成一个分类函数来分类更多输入。就我而言,该数据(或大部分数据)不是自然语言。
问题:是否有任何工具可以做到这一点?我正在考虑某种合理完善、下载、安装和运行的东西,而不是一些图书馆或脆弱的学术程序。
(请不要拘泥于细节,因为真实的细节会限制对不太有用的回复的回答,并且在 NDA 之下。)
作为我正在查看的示例;我要过滤的输入是从日志中提取的计算机生成的状态字符串。根据需要通知谁或需要采取什么行动来过滤错误消息(例如)。
手动做事
如果错误消息是自动生成的,并且消息背后的异常列表不是很大,您可能只需要一个表,将每个错误消息类型直接映射到需要通知的人。
这应该可以很容易地准确跟踪谁/哪些组将获得什么类型的消息,并在您确定某些消息被误导时更新消息的路由。
通常,一小部分错误类型构成了大部分错误报告。例如,微软注意到80% 的崩溃是由其软件中 20% 的错误引起的。因此,要获得有用的信息,您甚至不需要从包含所有类型错误消息的完整表格开始。相反,您可以从一个列表开始,将最常见的错误映射到正确的人,然后将其他所有内容路由给某个人以进行手动路由。每次手动路由错误时,您都可以在路由表中添加一个条目,以便将来自动处理该类型的错误。
文件分类
除非错误消息正在由提交它们的人进行编辑,并且您希望在路由它们时使用此信息,否则我不建议将其视为文档分类任务。但是,如果这是您想要做的,这里有一个按编程语言组织的用于文档文档分类的相当不错的包的列表:
Python - 要使用基于 Python 的自然语言工具包 (NLTK)执行此操作,请参阅免费提供的NLTK 书中的文档分类部分。
Ruby - 如果 Ruby 更适合您,您可以使用Classifier gem。这是检测Family Guy 引用是否有趣的示例代码。
C# - C# 程序员可以使用nBayes。该项目的主页上有一个简单的垃圾邮件/非垃圾邮件分类器的示例代码。
Java -Java 人有Classifier4J、Weka、Lucene Mahout和 adi92 提到的Mallet。
使用 Weka 学习规则- 如果规则是您想要的,Weka 可能会特别有趣,因为它包含一个基于规则集的学习器。您将在此处找到有关使用 Weka 进行文本分类的教程。
您是否尝试过垃圾邮件或电子邮件过滤器?通过使用标有适当类别的文本文件,您应该能够对进一步的文本输入进行分类。无论如何,这些程序就是这样做的,但是您可以执行其他类别,而不是将您的输出标记为“垃圾邮件”和“非垃圾邮件”。
你也可以尝试一些涉及 AdaBoost 的东西,以获得更实际的方法来滚动你自己的。 来自 Google 的这个库看起来很有前途,但可能不符合您准备部署的要求。