自研半监督学习算法在短信分类中的实践

1. 背景

本文仅探讨自然语言分类算法。

1)有监督机器学习

所谓有监督,是指给定一组人工标注好的样本(打好分类标签的文本),通过机器学习算法训练模型(比如朴素贝叶斯分类器),然后用训练好的模型对未知的文本进行分类。

有监督机器学习的准确率受人工标注样本的数量和质量影响很大。在待分类实体总量较少(比如百万以下),且边界较为清晰(不同分类的实体间相似特征较少)时,可以达到很好的效果(90%+准确率)。

缺点也很明显:需要大量的高质量人工标注样本。在处理海量(比如亿级)且边界模糊的数据时基本无法满足需求。

 

2)无监督机器学习

所谓无监督,是指给定一组随机的样本(没有分类标签的文本),通过机器学习算法训练模型(比如KMeans算法),然后用训练好的模型对未知的文本进行聚类。

由于缺乏人工标注样本,机器无法准确判断文本的具体分类,但是通过文本相似度分析,可以将随机样本大致的聚类为K个组,同一组内文本相似度较高,不同组间文本相似度较低。

其最大的优势是不依赖于人工干预,理论上可以处理无限大的样本集合。

 

3)半监督机器学习

所谓半监督,是将有监督和无监督两种算法结合,在有限的人工标注样本的帮助下,结合无监督机器学习所获得的海量样本聚类信息,将人工标注的样本标签通过迭代方式“感染”处于同一聚类组中的无标注样本,从而获得一批数量巨大且标注好的样本。最后,用巨量的带标注样本训练有监督机器学习模型,得到最终的分类器。

虽然比起纯粹的有监督机器学习,半监督方式准确率要低一些(无监督带来的噪音),但在处理海量数据时,这种“老师”(人工标注样本)带“学生”(无监督聚类样本)的思想值得尝试。

 

4)短信分类

短信是一种典型的短文本、海量的自然语言信息。在动辄上亿的短信文本中,存在模板化的企业营销信息,也存在大量随意编辑的书面语、口语、符号信息。

传统的关键词匹配方式受限于建设关键词库的高成本,捉襟见肘。

这是否正是机器学习、人工智能大展身手之地?

2. 算法逻辑

 

3. 关键技术点

3.1 随机采样

从HIVE仓库上亿短文本中随机采样。利用HIVE SQL的随机算子rand()来实现。代码示例:

...

            con = DriverManager.getConnection(hiveUrl, hiveUser, hivePwd); // hive-jdbc连接

            outputFileWriter = new BufferedWriter(

                    new OutputStreamWriter(new FileOutputStream(new File(fileOutputPath))), 2048 1024);  // 样本输出到文件

            // 执行查询

            Statement stmt = con.createStatement();

            String sql = "SELECT content FROM "

                    "  (SELECT content, rand() rate FROM my_big_table ) as temp1 "

                    "  WHERE temp1.rate <= " + sampleRate;  // sampleRate 为采样概率,比如从1亿样本中采样100万,此处等于0.01

            ResultSet res = stmt.executeQuery(sql);

            long id = 1;

            while (res.next()) {

                String msgText = res.getString(1);   // jdbc结果集列下标从1开始

                if (null == msgText || StringUtils.isBlank(msgText)) {

                    System.out.println("unexpected msgText in row: " + res.getRo

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值