非常简单的机器学习文本分类? [重复]

可能的重复问题:
文本分类到类别

我目前正在开发一个解决方案,用于根据10k家餐馆的描述来确定它们提供的食物类型。我使用关键词列表来决定提供哪种食物。

我对机器学习略有了解,但完全没有实际经验。能有人解释一下为什么对于这样一个简单的问题,机器学习会是一个更好的解决方案吗?我认为准确性比性能更重要!

简化示例:

["China", "Chinese", "Rice", "Noodles", "Soybeans"]["Belgium", "Belgian", "Fries", "Waffles", "Waterzooi"]

可能的描述可能是:

“Hong’s Garden Restaurant为我们的顾客提供美味且价格合理的中餐。如果您在周六晚上8点突然想吃米饭面条大豆,别担心!我们一周七天营业,并提供外带服务。您也可以在这里吃到薯条!”


回答:

您确实描述了一个分类问题,可以通过机器学习来解决。

在这个问题中,您的特征是描述中的词语。您应该使用词袋模型 – 该模型基本上表示词语及其出现次数是分类过程中的关键因素。

要解决您的问题,以下是您应该采取的步骤:

  1. 创建特征提取器 – 给定餐馆的描述,返回该餐馆的“特征”(根据上述词袋模型解释的例子)。
  2. 手动标记一组示例,每个示例都将标记为所需的类别(中餐、比利时菜、垃圾食品等)。
  3. 将您的标记示例输入到学习算法中。它将生成一个分类器。根据个人经验,支持向量机(SVM)通常能提供最佳结果,但还有其他选择,如朴素贝叶斯神经网络决策树(通常使用C4.5),每种都有其优势。
  4. 当一个新的(未标记的)示例(餐馆)出现时 – 提取特征并将其输入到您的分类器中 – 它会告诉您它认为是什么(通常还会给出分类器正确性的概率)。

评估:
您可以使用交叉验证或从您的标记示例中分离出一组测试集,仅用于评估算法的准确性来评估您的算法。


优化:

根据个人经验,以下是一些对特征提取有帮助的优化方法:

  1. 词干提取和消除停用词通常很有帮助。
  2. 使用二元语法往往能提高准确性(尽管会显著增加特征空间)。
  3. 一些分类器容易受到大特征空间的影响(SVM除外),有几种方法可以克服这个问题,例如降低特征的维度。主成分分析(PCA)是其中一种方法。遗传算法在子集选择方面也(经验上)表现不错。

库:

遗憾的是,我对Python不够熟练,但这里有一些可能有帮助的库:

  • Lucene可能对文本分析很有帮助,例如,词干提取可以使用EnglishAnalyzer来完成。Lucene有一个Python版本,称为PyLucene,我相信它可能会对您有所帮助。
  • Weka是一个开源库,实现了许多对机器学习有用的东西 – 包括许多分类器和特征选择器。
  • Libsvm是一个实现SVM算法的库。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注