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

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

我目前正在开发一个解决方案,用于根据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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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