文本分类——快速kNN设计实现

内容提要

介绍

  文本分类——常见分类模型
  kNN分类模型的主要思想:通过给定一个未标注文档d,分类系统在训练集中查找与它距离最接近的k篇相邻(相似或相同)标注文档,然后根据这k篇邻近文档的分类标注来确定文档d的类别。

普通kNN实现

  一般常规的kNN计算新输入文档与训练集中样本之间的距离,都是新输入文档与每一训练集样本计算相似度。数据结构及计算过程示意图如下:

《文本分类——快速kNN设计实现》 图 1 通用kNN相似度计算实现数据结构示意

   如图1所示,新输入文档将于已有训练样本的d1、d2、dm逐个计算相似度(Similarity)。一种颜色代表一次计算。
   由于文本具有词稀疏性(一篇文本一般仅含有几十到几百个词组,而词的总表中词的总数可以达到几十万。),一般按照上述方法实现kNN算法,很多词语的搜索过程都是无用的,即根本搜索不到匹配的词或不用搜索。例如:新输入文本的词组t5、t10与d1、d3、dm的计算都为0,无效运算。

快速kNN实现

   本篇对普通kNN算法做了一些改进,调整训练文本的数据结构,不是一次计算未标注文本与一篇训练集文本的相似度,而是一次计算未标注文本中一个词(或特征)与训练集每篇文本的该词(或特征)的相似度分量。这样可以较大降低词的搜索空间,提高分类的速度。本文将这种算法的实现叫做快速k近邻实现算法(Fast k-Nearest Neighbor,F-kNN)。F-kNN并没有改变分类算法的本质,只是改善分类速度的实现方式。
   实现的数据结构及流程如下图2 所示:

《文本分类——快速kNN设计实现》 图 2 Fast-kNN相似度计算实现数据结构示意

   图 2 顶层采用HashMap数组存放词对应的文档Map引用,文档Map中存该词在相应文档下的权重。如图2所示,一次计算将词tk所对应的所有文档相似度分量 都计算出来。例如红线所示,t1一次计算出与d1和d2等的相似度分量。

实验对比

   由于kNN算法是一种“懒”学习算法,没有实质的训练学习过程。但是在本设计实验部分采用FkNN,需要转换向量空间模型,并且也需要从硬盘加载数据,为了实验公平性,将此部分作为kNN算法的训练过程。
  实验说明参见:文本分类——NLV算法研究与实现
  为了便于对比测试普通k近邻(kNN)与快速k近邻(FkNN)算法的训练和分类所用时间,采用数据集划分方式(2)。两种kNN实现在三种数据集上的训练和分类测试时间如图3所示。都采用卡方校验(CHI)特征选择方法从三种数据集上选择出2000维特征,k值设置成13。

《文本分类——快速kNN设计实现》 图 3 两种kNN实现的处理时间对比柱状图

分析总结

  由图3可以观察到,kNN与FkNN的训练时间都非常低,而分类时间差别较大。三种语料库数据集上FkNN比kNN算法的分类时间都降低了90%以上。FkNN实现方式极大改善了k近邻分类算法的分类速度,降低了分类时间。

知更鸟博文推荐
上一篇 文本分类——NLV算法研究与实现
下一篇 基于Kubernetes、Docker的机器学习微服务系统设计系列——(一)概念与构想
推荐篇 基于Kubernetes、Docker的机器学习微服务系统设计——完整版
研究篇 RS中文分词   |  MP特征选择   |  NLV文本分类   |  快速kNN
作者简介
兴趣爱好机器学习、云计算、自然语言处理、文本分类、深度学习
E-mailxsd-jj@163.com (欢迎交流)

参考文献:
[1] Sebastiani,F. Machine learning in automated text categorization [J]. ACM Comput. Surv. 2002, 34(1): 1-47.
[2] Yang,Y.,Liu,X. A re-examination of text categorization methods [C]. In: Proceedings of the 22nd ACM Int’l Conference on Research and Development in Information Retrieval. Berkeley: ACM Press, 1999: 42-49.

版权声明:个人原创,请勿抄袭,欢迎引用,未经许可禁止转载. © 知更鸟

    原文作者:xsdjj
    原文地址: https://blog.csdn.net/xsdjj/article/details/83829822
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞