NLP基础技术-------关键词提取
应用:文本聚类、分类、自动摘要等
有监督:构建一个较为丰富和完善的词表,然后通过判断每个文档与词表中每个词的匹配程度,以类似打标签的方式来提取关键词
优点:较高的精度
缺点:大批量的标注数据,人工成本高(每天有大量新信息,固定词表难以表达)
无监督:不需要词表,目前应用较广
常用算法:TF-IDF、TextRank、主题模型(LSA、LSI、LDA等)
TF-IDF
基于统计的计算方法,常用于评估在一个文档集中一个词对某份文档的重要程度。
TF :统计一个词在文档中出现的频词
计算公式:
分子表示词 i 在文档 j 中出现频次,分母表示文档总词数(由于每个文档长度不一,计算完要对词频进行归一化)
IDF :统计一个词在文档集的多少个文档中出现
计算公式:
|D|表示文档集中的总文档数,分母为文档集中出现词 i 的文档数量,加1采用拉普拉斯平滑,避免出现分母为0的情况
将两者进行结合得到 tf-idf 算法:
扩展:
根据应用场景的不同,可以有不同的加权方法,如考虑词性、位置等
TextRank
特点:不需要基于一个现成的语料库,仅对单篇文档进行分析就可以提取该文档的关键词
算法思想:
来源于PageRank:一种链接分析算法,有向无权图(TextRank是有权图)
- 链接数量:一个网页被越多的其他网页链接,说明这个网页越重要
- 链接质量:一个网页被越高权值的网页链接,说明这个网页重要
自动摘要任务:
默认每个语句和其他所有句子都是有链接关系,是一个有向完全图
计算公式:
Out为出链的集合,In为入链接的集合,开始时将所有网页的得分初始化为1,d为阻尼系数(避免出现孤立网页),权重指的是两个句子之间的相似度
关键词提取任务
与自动摘要不同:1)词与词之间的关联没有权重 2)每个词不是与文档中所有词都有链接
因此公式为(与pagerank一致):
将得分平均贡献给每个链接的词,并用窗口来解决第二个问题,在窗口内的所有词之间都有链接关系
主题模型:
认为词与文档之间没有直接的联系,它们应当还有一个维度将它们串联起来,主题模型将这个维度称为主题
每个文档对应一个或多个的主题,而每个主题都会有对应的词分布,通过主题,就可以得到每个文档的词分布。
核心公式:
每个词和文档对应的p(wi|dj)都是已知的,右边是需要我们计算的
LSA/LSI算法
LSA(Latent Semantic Analysis) & LSI(Latent Semantic Index)
这两个算法可认为是同一种,都是对文档的潜在语义进行分析,LSI会在分析后,利用结果建立相关的索引
主要步骤:
- 使用BOW模型将每个文档表示为向量
- 将所有的文档词向量拼接起来构成词-文档(m✖n)
- 对词-文档矩阵进行奇异值分解(SVD)操作([m✖r] · [r✖r] · [r✖n])
- 根据SVD的结果,将词-文档矩阵映射到一个更低维度k([][][m✖k]·[k✖k]·[k✖n],0<k<r)的近似SVD结果,每个词和文档都可以表示为k个主题构成的空间中的一个点,通过计算每个词和文档的相似度,得到每个文档中对每个词的相似度结果,相似度最高的一个词即为文档的关键词
相似度计算:
余弦相似度(向量运算)
KL相似度
优点
有效的利用了语义信息,通过SVD将词、文档映射到一个低维的语义空间,挖掘出词、文档的浅层语义信息,从而对词、文档进行更本质地表达
缺点
- SVD计算复杂度高,对特征空间维度较大的,计算效率十分低下
- 得到的分布信息是基于已有数据集的,当一个新的文档进入到已有的特征空间时,需要对整个空间重新训练
LDA(Latent Dirichlet Allocation)
目前主流的主题模型,理论基础是贝叶斯理论
根据词的共现信息的分析,拟合出词-文档-主题的分布,进而将词、文本都映射到一个语义空间中
贝叶斯学派:先验分布 + 数据(似然)= 后验分布
训练过程:
- 随机初始化,对语料中每篇文档中的每个词w,随机地赋予一个topic编号z
- 重新扫描语料库,对每个词w按照吉布斯采样公式重新采样它的topic,在语料中进行更新
- 重复以上语料库的重新采样过程直到吉布斯采样收敛
- 统计语料库的topic-word的共现频率矩阵,该矩阵即为LDA模型
吉布斯采样:通过条件分布采样模拟联合分布,再通过模拟的联合分布直接推导出条件分布,以此循环
注意点:
- 如何确定共轭分布中超参数
- 如何通过狄利克雷分布和多项式分布得到他们的共轭分布
- 如何实现吉布斯分布