数据集准备
设置停用词
去掉一些政策文件中惯用词汇(可能选取的有点偏差),以免影响最后的关键词提取
jieba分词
jieba分词采用的是前缀词典,而不是字典树,减少内存开销。
同时加入自定义词汇,避免对一些新型词分词有误。
使用CountVectorizer统计文本中的词汇出现次数,获得候选词汇
使用Bert预训练模型
xlm-r-distilroberta-base-paraphase-v1在释义识别(判断两个句子是否有相同含义的任务)方面表现出色。
sentenceTransformer是一个可用于句子,文本和图像嵌入的Python库,可用于语义文本相似性,语义搜索和同义词挖掘等常见任务。基于Pytorch 和Transformer,并提供大量针对各种任务的预训练模型。
计算候选词汇与文档之间的相似度
-
余弦相似度:通过测量两个向量的夹角的余弦值来度量它们之间的相似性。两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向,结果与向量的长度无关,仅仅与向量的指向方向相关。常用于高维空间。缺点,提取的关键字相似度很高。
-
如果要使关键词多样化,就不太可能作为一个集体来代表文档。因此结果的多样化需要在关键词的准确性和之间的多样性之间取得一个微妙的平衡。两种算法实现结果的多样性:Max Sum Similarity(最大相似度), Maximal Marginal Relevance(最大边际相关性)
-
Max Sum Similarity(最大相似度)
数据对之间的最大距离之和定义为数据对之间的距离最大化,希望最大化候选关键词与文档的相似度,同时最小化候选关键词之间的相似度。 -
Maximal Marginal Relevance(最大边际相关性)
首先选择与文档最相似的关键词,然后迭代地选择与文档相似又与已选择的关键字相似度不高的新候选关键词。
前部分的物理意义是关键词与整篇文档的相似程度,后半部分的物理意义是关键词之间的相似程度,用减号相连,其含义是希望:提取的关键字既能表达整个文档的含义,又具备多样性。形成词云
本项目代码链接