一种按照关键字进行分类的文本分类算法

优采云 发布时间: 2020-08-20 20:51

  一种按照关键字进行分类的文本分类算法

  这样我们可以得出这个算法的重点:

  1.提取关键字

  如何手动提取关键字呢?我们晓得IDF值在一定程度上可以抒发一个词的重要程度,像“我的”,“你的”这样的关键字肯定没法判定出文章的类别,他们的IDF值也是较低的。而“AK47”,“火箭炮”这样的关键字可以判别出文章类别,他们的IDF也比通常的词要高。所以,我们只须要选择IDF低于一定值的词,就可以提取出绝大多数关键字了。

  2.关键字分类

  识别关键字的类别也是一个大问题,如果手工辨识是不现实的,网上也没有哪些算法是进行关键字分类的。想来想去,最后还是用IDF值把这个问题给解决了。其实思路很简单,可以说是前面一个问题的一种延续。假设现今我们有军事,经济,人文的文本各100篇。将经济,人文的文章复制4次,这样,我们就有军事文本100篇,经济,人文的文本各500篇(注意,经济人文的文章都是有重复的,每篇文章存在4个完全相同的副本)。

  然后我们估算这种文章的IDF值,想想会出现哪些结果?我们晓得IDF的估算公式是log(总文章数/出现次数)。假设关键字“AK47”在没进行处理之前,在10篇文章中出现,那么它的值为log(300/10)=log30=1.47.

  处理以后,“AK47”出现的次数不变,但是总文章数早已变为1100篇,那么AK47的IDF值为:log(1100/10)=log110=2.04。我们可以看见,经过这样的处理,军事的关键字都得到了加权,但是经济,文化的关键字的IDF值变化太小。这样,我们就才能把军事的关键字同其他的关键字分辨开来。

  我做的实验中,分出的关键字起码80%是军事类别的,实际的反例就不贴下来了。有的同学都会问了,那你是怎样进行文本分类的?难道也是手工分?

  嘿嘿,这个其实不是了。分好类的文本来自于搜狗实验室()。上面的类别也只有几种,如果要做其他类别的样本,只要用爬虫抓取某个专业网站或者某一类新闻,然后进行剖析出正文就OK了。我们的目标是尽量偷懒,呵呵。

  解决了这两个困局,再回到算法本身来。首先,提取关键字,使得要比较的词句大大降低(我只提取15%~20%的关键字)。一篇1000字的文章词语也就这么300~400个,也就是说和一个类别比较50个关键字左右就可以判定下来了,也就是50次的hashmapping操作。然后,有几个类别就做几次判定,所以算法复杂度是O(m*n)。一般分成十几个类别早已太细了,整个算法复杂度不会很高。但是这个实验我没能做就申请辞职了,伤心啊,我的心血都没了,如果之后有时间再实验下吧。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线