让我们从一个简单的问题开始。假设我有一个 350 字符的句子,并且想将句子放入“好心情”桶或“坏心情”桶中。
设计一个算法来存储句子的最佳方法是什么?
让我们从一个简单的问题开始。假设我有一个 350 字符的句子,并且想将句子放入“好心情”桶或“坏心情”桶中。
设计一个算法来存储句子的最佳方法是什么?
按心情对一堆句子进行手工分类。然后将这些输入朴素贝叶斯分类器。使用像SpamBayes这样的东西作为起点。
这称为情绪分析,维基百科文章对可用技术有很好的描述。一个简单的方法是使用Google Prediction API,并使用一组正面、负面和中性的情绪句子对其进行训练。
根据句子的领域和所需的准确性,这可能是一个非常困难的问题。围绕情感分析的学术论文很多;一个好的开始可能在这里- 一篇简短而经典的论文。
我建议采取的步骤将逐渐导致更好的分类器:
对一些文档进行手动分类,并使用它们来训练现成的算法。我建议使用 SVM(例如,在 WEKA或SVMLight中使用 LibSVM ),但如上所述,朴素贝叶斯或决策树也可能有效。
对更多文档进行手动分类,并从基于 unigram 的模型转移到更复杂的模型,例如基于 bigram 或词性的模型。这可以使用TagHelper 工具轻松完成,它会使用这些技术将您的文本转换为 WEKA-ready 文件。这将为每个术语的情绪添加一些上下文(例如“不”和“坏”与“不坏”)。
最后,您可以添加自定义规则和字典,这将为您的算法添加特定领域的知识。它们可能表示为同一分类引擎的附加特征,或表示为附加分类步骤。
一个简单/天真的建议是首先将每个句子分成单独的单词,或者使用正则表达式并从“肯定”列表中扫描特定单词(例如“like”、“happy”、“can”、“do ”等)和一个“否定”列表(“不喜欢”、“悲伤”、“不能”、“不要”),找出每个句子中哪个更普遍,并相应地对其进行存储。
根据您的要求和数据集,这可能就足够了,或者您可能想要研究更高级的技术,例如贝叶斯过滤。
尝试从一堆这样的句子中进行机器学习。使用一些功能,例如作为情绪指标的表情符号。观察质量并添加/修改您的功能集。