1. 背景
本文仅探讨自然语言分类算法。
1)有监督机器学习
所谓有监督,是指给定一组人工标注好的样本(打好分类标签的文本),通过机器学习算法训练模型(比如朴素贝叶斯分类器),然后用训练好的模型对未知的文本进行分类。
有监督机器学习的准确率受人工标注样本的数量和质量影响很大。在待分类实体总量较少(比如百万以下),且边界较为清晰(不同分类的实体间相似特征较少)时,可以达到很好的效果(90%+准确率)。
缺点也很明显:需要大量的高质量人工标注样本。在处理海量(比如亿级)且边界模糊的数据时基本无法满足需求。
2)无监督机器学习
所谓无监督,是指给定一组随机的样本(没有分类标签的文本),通过机器学习算法训练模型(比如KMeans算法),然后用训练好的模型对未知的文本进行聚类。
由于缺乏人工标注样本,机器无法准确判断文本的具体分类,但是通过文本相似度分析,可以将随机样本大致的聚类为K个组,同一组内文本相似度较高,不同组间文本相似度较低。
其最大的优势是不依赖于人工干预,理论上可以处理无限大的样本集合。
3)半监督机器学习
所谓半监督,是将有监督和无监督两种算法结合,在有限的人工标注样本的帮助下,结合无监督机器学习所获得的海量样本聚类信息,将人工标注的样本标签通过迭代方式“感染”处于同一聚类组中的无标注样本,从而获得一批数量巨大且标注好的样本。最后,用巨量的带标注样本训练有监督机器学习模型,得到最终的分类器。
虽然比起纯粹的有监督机器学习,半监督方式准确率要低一些(无监督带来的噪音),但在处理海量数据时,这种“老师”(人工标注样本)带“学生”(无监督聚类样本)的思想值得尝试。
4)短信分类
短信是一种典型的短文本、海量的自然语言信息。在动辄上亿的短信文本中,存在模板化的企业营销信息,也存在大量随意编辑的书面语、口语、符号信息。
传统的关键词匹配方式受限于建设关键词库的高成本,捉襟见肘。
这是否正是机器学习、人工智能大展身手之地?
2. 算法逻辑
3. 关键技术点
3.1 随机采样
从HIVE仓库上亿短文本中随机采样。利用HIVE SQL的随机算子rand()来实现。代码示例:
|