用机器学习进行非常简单的文本分类?

2024-04-29 00:08:17 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
Text Classification into Categories

我目前正在研究一个解决方案,根据他们的描述,在一个拥有10万家餐厅的数据库中获取食物类型。我正在使用关键字列表来决定提供哪种食物。

我读了一些关于机器学习的书,但我对它一点实际经验都没有。有谁能向我解释一下,对于这样一个简单的问题,这是不是一个更好的解决方案?我发现准确性比表现更重要!

简化示例:

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

可能的描述是:

“Hong's Garden餐厅为我们的顾客提供美味、价格合理的中国菜。如果你发现你突然渴望 周六晚上8点,米饭、面条或大豆,别担心!我们每周营业七天,提供送货服务。你也可以在这里吃薯条


Tags: text机器数据库类型列表关键字经验解决方案
1条回答
网友
1楼 · 发布于 2024-04-29 00:08:17

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

在这个问题中,你的特征就是描述中的单词。您应该使用Bag Of Words模型,该模型基本上说,单词和每个单词出现的次数对分类过程很重要。

要解决您的问题,请执行以下步骤:

  1. 创建一个特征提取程序-它给出了一个餐厅的描述,返回该餐厅的“特征”(在上面解释的单词包模型下)(在文献中表示为示例)。
  2. 手动标记一组示例,每个示例都将标记所需的类别(中文、比利时、垃圾食品等)
  3. 将标记的示例输入到学习算法中。它将生成分类器。从个人经验来看,SVM通常给出最好的结果,但还有其他选择,如Naive BayesNeural NetworksDecision Trees(通常使用C4.5),每种选择都有自己的优势。
  4. 当一个新的(未标记的)例子(餐馆)出现时——提取特征并将其输入分类器——它会告诉你它认为它是什么(通常——分类器正确的概率是多少)。

评估:
可以使用cross-validation对算法进行评估,或者从标记的示例中分离一个测试集,该测试集将仅用于评估算法的准确性。


优化:

根据个人经验-以下是一些我发现有助于特征提取的优化:

  1. Stemming和消除stop words通常有很大帮助。
  2. 使用Bi-Grams有助于提高准确性(虽然显著增加了特征空间)。
  3. 有些分类器容易产生较大的特征空间(不包括支持向量机),有一些方法可以克服它,例如降低特征的维数。PCA是一件可以帮助你的事情。Genethic Algorithms在经验上也非常适合子集选择。

库:

不幸的是,我对python的理解不够流利,但以下是一些可能有用的库:

  • Lucene可能对文本分析有很大帮助,例如-词干分析可以用EnglishAnalyzer完成。有一个叫做PyLucene的lucene的python版本,我相信它可以帮助您解决这个问题。
  • Weka是一个开源库,它实现了许多机器学习的有用功能,包括许多分类器和特性选择器。
  • Libsvm是实现支持向量机算法的库。

相关问题 更多 >