3

目标:一个 node.js 函数,可以传递新闻文章(标题、文本、标签等)并将返回该文章的类别(“技术”、“时尚”、“食品”等)

我对返回的确切类别并不挑剔,只要可能的结果列表是有限且合理的 (10-50)。

有一些 Web API 可以做到这一点(例如alchemy),但如果可能的话,我不希望产生额外的成本(包括外部 HTTP 请求和 $$)。

我看过节点模块“ natural ”。我对 NLP 有点陌生,但似乎我可以通过在合理的单词列表上训练贝叶斯分类器来实现这一点。这看起来像是一个好的/合乎逻辑的方法吗?你能想到更好的吗?

4

1 回答 1

7

我不知道您是否仍在寻找答案,但让我为碰巧回到这个问题的任何人提供两分钱。

在 NLP 工作过,我建议您研究以下方法来解决问题。不要寻找单一的包装解决方案。那里有很棒的包裹,毫无疑问有很多东西。但是当涉及到 NLP、ML 和优化等活跃的研究领域时,这些工具往往比学术界落后至少 3 或 4 次迭代。

来到核心问题。您要实现的是文本分类。实现这一点的最简单方法是 SVM 多类分类器。最简单的是,但也具有非常非常(参见双重强调)合理的分类准确性、运行时性能和易用性。

您需要处理的是用于表示您的新闻文章/文本/标签的功能集。您可以使用词袋模型。添加命名实体作为附加功能。您可以使用文章位置/时间作为特征。(尽管对于简单的类别分类,这可能不会给您带来太大的改进)。底线是。支持向量机工作得很好。他们有多种实现。在运行时,您实际上并不需要太多 ML 机器。另一方面,特征工程是非常特定于任务的。但是给定一些基本的特征集和良好的标记数据,您可以训练出一个非常不错的分类器。

这里有一些资源给你。 http://svmlight.joachims.org/ SVM 多类是您感兴趣的。

这是 SVM zen 自己的教程! http://www.cs.cornell.edu/People/tj/publications/joachims_98a.pdf

我不知道它的稳定性,但从代码来看它是一个二进制分类器 SVM。这意味着如果您有一组已知的大小为 N 的标签要将文本分类到其中,则必须训练 N 个二进制 SVM 分类器。N 个类别标签各一个。

希望这可以帮助。

于 2013-05-07T19:59:58.173 回答