算法论文

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于关键词提取的TFIDF和TextRank方法的对比研究

【摘要】随着大数据云计算的时代到来,关键词提取技术越发重要。选用合适的关键词提取算法能大大加快工作效率。本文选取了两个常见的关键词提取算法TFIDF和TextRank算法,对它们进行比较分析。

【Abstract】As the era of big data and cloud computing comes, the technique of extraction of keywords becomes more and more important. With appropriate extraction algorithms, the efficiency can be improved significantly. In this paper, I choose two popular keyword extraction algorithm, TF-IDF and TextRank, to analyze and compare their pros and cons.

【关键词】关键词抽取;TFIDF;TextRank

1.引言

关键词提取技术是自然语言处理和信息检索研究的重要基础之一。随着互联网技术的快速发展,网络文本志愿信息呈几何级数不断增长,大数据、云计算等技术对文本分类的要求也越来越高。关键词抽取技术被广泛应用在文章语义分析、文本的分类与聚类、情感分析等多种场合中。面对日益更新和规模庞大的文本数据,能够高效准确得实现关键词提取成为加快计算速度性能的关键。

关键词抽取的主要任务是:对未知类别的文档进行自动处理,通过一定算法提取出其中的关键词,从而方便后续操作。因此,为了使之后的信息检索和过滤等操作的准确性加强,对文本关键词抽取算法的精确度要求也越来越高。近年来,多种机器学习、统计理论等方法被用来进行文本的自动分类。【1】

本文根据文本关键词词语之间的关联性与词频特性,选取了TFIDF和TextRank关键词提取算法,进行两者的效率和准确性的对比研究。

2.TFIDF算法

2.1. TF-IDF算法简介

TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一个词组或短语的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。在一组文档中,刻画某一文档特征的特征项可以根据其在这组文档中出现的频率赋予相应的权重,只有在少数文档中出现的较特殊的词,权重要比在多篇文档中出现的词的权重要高。TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。

2.2. TF-IDF算法原理

TF-IDF实际上是TF和IDF的组合。TF即词频(Term Frequency),IDF即逆向文档频率(Inverse Document Frequency)。

TF(词频)就是某个词在文章中出现的次数,此文章为需要分析的文本。为了统一标准,有如下两种计算方法【2】:

TF(词频)=某个词在文章中出现的次数该篇文章的总次数

TF(词频)=

某个词在文章中出现的次数该篇文章出现最多的单词的次数

IDF(逆向文档频率)为该词的常见程度,需要构建一个语料库来模拟语言的使用环境。

IDF(逆向文档频率)=log(语料库的文档总数

包含该词的文档总数+1

)

如果一个词越常见,那么其分母就越大,IDF值就越小。

TF−IDF=TF(词频)×IDF(逆文档频率)

之后,将每个单词的TF-IDF值按从大到小降序排列,排在最前面的几个词即为关键词。

2.3. TF-IDF算法实现

2.3.1.构建一一映射Map类

C++STL函数库中已经包含了map的库函数,但为了使用起来更加方便、更便于个性化定制操作,于是使用自己定制的Map类模板。这个类函数主要是构建单词的string值与其TF、IDF值的一一对应关系,方便直接用string值下标访问其int值或double值,简化写代码的工作量。同时模板类中主要采取树形结构,建立一棵查找树,利用vector的空间动态分配的灵活性,从string的第一个字母开始一个一个往下找。每个Map类代表一个字母,从根部开始向下遍历,利用bool值判断该处是否为一个单词结尾。代码如下:

/*********************************************************************

*

* 一一映射函数Map类

* Type为存储的TF、IDF、TF-IDF值,如int、double等

* 旨在通过string类型下标访问其Type值

*

*********************************************************************/

template

class Map

{

public:

Type val = NULL; //Type值,类型为int、double

/*********************************************************************

*

* 下标运算符[]重载

* []中值为string类型

* 如果该string值已存在,则返回对应val

* 如果不存在则新建一个,返回初始值

*

*********************************************************************/

Type& operator [](string item)

{

Map &temp = find(item); //引用类函数find()查找到的值

if (temp != NULL) //找到,则返回对应val

{

return temp.val;

}

else//未找到,则用create()函数创建

一个并返回新的值{

create(item);

return find(item).val;

}

}

/*********************************************************************

*

* 算术运算符=重载

* 左值为找到的Map.val引用

相关文档
最新文档