美文网首页机器学习与数据挖掘程序猿日记
一种使用快速、简单有效的文本分类方法

一种使用快速、简单有效的文本分类方法

作者: ad110fe9ec46 | 来源:发表于2017-06-20 10:05 被阅读0次

    问题及需求

    使用CNN,LSTM,Attention based model建立一个文本分类深度模型固然很好很强大,但是实际情况是,数据集和模型同等重要,到哪里去搞质量好的打标签的训练样本在短时间内是一个问题。应对短平快,没有数据集的情况下,能否找到一种可用的文本分类方法解决问题呢?

    本文方法的切入点:快速,简单,有效。
    虽然方法比较简单,但是作为一个trade off,在一定程度上能快速有效解决项目中实际用到的文本分类问题。

    工具及方法

    Tools:

    • Bloom Filter(布隆过滤器)

    对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。

    Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。

    • cell word bank(细胞词库)

    可以理解为一个词典,一系列相关的词汇,比如“传染病词库”,里面就包含了各种跟传染病相关的词,比如流行性感冒,狂犬病等等,搜狗输入法有所收集。可以在网站上下载到。

    • word2vec(词向量)

    谷歌开源的一个词向量提取工具,在我们文本分类工作的作用是找近义词,词向量有很多有趣的性质,比如近义词就是通过寻找word embedding之后得到的词向量,其夹角较小或者欧几里得距离较近的一组向量。在本方法中用于近义词扩充细胞词库。

    具体方法:
    采用朴素贝叶斯的思想,分词->统计文本中的词在每个细胞词库中出现的次数。细胞词库及其词的近义词扩充(使用word2vec)在程序初始化的时候已经在布隆过滤器中存好。这样处理之后得到一个向量,向量的每一维度就是文本在对应细胞词库中出现的次数。最简单的算法就是,在一个领域出现的词越多,就说明我的文本属于这个领域的可能性越大。

    比如有这样一个文本“习近平总书记出席G20杭州峰会”,其中习近平、总书记、出席、峰会都映射到了政治敏感的细胞词库中,那么我这个文本极有可能属于政治敏感类。

    在实际项目中发现,这个方法的可用程度非常高。

    相关文章

      网友评论

        本文标题:一种使用快速、简单有效的文本分类方法

        本文链接:https://www.haomeiwen.com/subject/owroqxtx.html