关键词抽取算法主要分为两类:
1. 有监督学习算法
将关键词抽取过程视为二分类问题, 先抽取出候选词,然后对于每一个候选词划定标签,要么关键词、要么不是关键词,然后训练关键词抽取分类器。当新来一篇文章时,抽取所有的候选词,然后利用训练好的分类器抽取候选词,对各个候选词进行分类,最终将标签为关键词的候选词作为关键词;
2. 无监督学习算法
先抽取候选词,然后对各个候选词进行打分,然后输出topk个分值最高的候选词作为关键词。根据打分的策略不同,有不同的算法,比如TFIDF,TEXTRank算法等。
下面分别对应用于关键词抽取的两个无监督算法 TFIDF和 TextRank进行分析:
TF-IDF
tf-idf的主要思想是:如果某一个词在一篇文档中出现的频率高,也即TF高,表示词频,词t在文档d中出现的频率;而在其它文档中很少出现,那么IDF高,表示语料库中包含t的文档的数目的倒数。最后TFIDF=TF×IDF
TF = count(t)/count(d)
IDF = num(corpus)/num(t)+1, 其中num(corpus)表示语料库中corpus中文档的总数, num(t)表示包含t的文档的数目
应用于关键词抽取的算法步骤:
1. 首先进行分词和词性标注, 将满足指定词性的词作为候选词;
2. 分别计算每个词的tf-idf值;
3.根据每个词的tf-idf值进行降序排列,并输出指定个数的词汇作为可能的关键词;
TextRank
算法类似于pageRank, pageRank通过互联网的超链接关系来确定一个网页的排名,其公式是通过一种投票的思想来设计的;如果需要知道哪些网页链接到网页A,也就是首先得到网页A的入链,然后通过入链给网页指向网页A的时候,那么网页A的投票来计算网页A的PR值。当某些高质量的网页指向网页A的时候,那么网页A的PR值会因为这些高质量的投票而变大,而网页A被较少网页指向或被一些PR值较低的网页指向的时候,A的PR值也不会很大
将文本中的语法单元视为图中的节点,如果两个语法单元存在一定语法关系(例如共现),则两个语法单元在图中就会有一条边相互连接,通过一定的迭代次数,最终不同的节点会有不同的权重,权重高的语法单元可以作为关键词
TextRank用于关键词提取的算法如下
1. 将给定的文本T按照句子进行分割,即 T=[S1, S2, ..., Sm]
2. 对于每个句子Si, 进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词
3. 构建候选关键词图G=(V, E),其中V为节点集, 由2生成的候选关键词组成, 然后采用共现关系构建任两点之间的边,两个节点之间存在边仅当对应的词汇在长度为K的窗口中出现,K表示窗口大小,即最多共现K个词
4. 迭代传播各个节点的权重,直至收敛。
5. 对节点权重进行倒序排序,从而得到最重要的T个单词,最为候选关键词
6. 由5得到的结果, 在原始文本进行标记,若形成相邻词组,则组合成多词关键词