提取关键词

部署运行你感兴趣的模型镜像

关键词是一篇文档中表达的主要话题,处理文档或句子时,提取关键词是最重要的工作之一,这在NLP中也是一个十分有用的task。

常见的关键词提取方法有:TF-IDF关键词提取方法、Topic-model关键词提取方法和RAKE关键词提取。

TF-IDF:

使用TF-IDF提取关键词的方法十分好理解,TF衡量了一个词在文档中出现的频率,一个文档中多次出现的词总是有一定的特殊意义,但是并不是所有多次出现的词就都是有意义的,如果一个词在所有的文档中都多次出现,那么这个词就没有什么价值了。

TF-IDF就很好地衡量了这些因素:TF= (词在文档中出现的次数)/ (文章总词数),IDF= log(语料库中文档综述/(包含该词的文档数+1))

TF-IDF= TF* IDF

TF-IDF值越大,则这个词成为一个关键词的概率就越大。

Topic-model:

使用主题模型提取关键词的关键思想是认为文章是由主题组成的,而文章中的词是以一定概率从主题中选取的,即文章与词之间存在一个主题集合。不同的主题下,词出现的概率分布是不同的。

根据LDA主题模型的学习可以获取文档的主题词集合。

RAKE关键词提取:

RAKE(Rapid Automatic Keyword Extraction)算法的原作者是Alyona Medelyan,RAKE的更新版本就是她完成的,muai indexer也是她的杰作,她的GitHub上有很多关键字提取的项目。

有一篇介绍RAKE算法的文章,链接是:http://python.jobbole.com/82230/

RAKE提取的关键词并不是单一的单词,有可能是一个短语。

每个短语的得分有组成短语的词累加得到,而词的得分与词的度与词频有关:score = degree / freq

其中,当与一个词共现的词越多,则该词的度就越大。

原始的RAKE的GitHub地址: https://github.com/zelandiya/RAKE-tutorial

我自己也创建了一个使用RAKE提取英文句子关键词的项目,可以作为一个RAKE的使用示例,大家可以从我的GitHub上获取,地址为:https://github.com/mpk001/RAKE-keywordsExtraction

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

资料中未直接提及使用BERTopic提取关键词的具体方法。不过可根据相关信息进行一定的推理。 BERTopic是一种基于BERT的先进话题建模技术,结合词嵌入和聚类算法(如HDBSCAN)来识别话题,它利用基于Transformer的嵌入技术,通过注意力机制优化语义相似性和上下文含义,能生成更准确、更语义化的话题表示[^1][^3]。或许可以借助BERTopic识别出的话题,从这些话题中筛选出具有代表性的词汇作为关键词。例如在完成BERTopic的话题建模后,对每个话题下的高频且具有代表性的词汇进行提取,可将其视为关键词。 而像KeyBERT使用BERT嵌入和简单的余弦相似性来查找文档中与文档本身最相似的子短语以提取关键字,虽然与BERTopic不同,但可作为一种基于BERT相关技术提取关键词的思路参考[^2]。 如果要使用BERTopic处理中文长文本,可调用`topic_model.fit_transform()`时,同时传入原始文本和分词(以及去停用词)结果,修改`_bertopic.py`中的源码,主要是改`fit_transform()`函数;对文本的每512个字符提取BERT特征,然后求均值作为文本特征,之后在这些处理后的结果上进行话题识别,进而尝试提取关键词[^4]。 在使用BERTopic模型时,要注意Embedding模型可支持输入最长的文本长度,选择在MTB排行榜上性能最好的模型,还可通过调整HDBSCAN和UMAP的相关参数、使用BERTopic的`reduce_outliers()`函数和`update_topics()`函数等方法减少离群值,尽可能提高数据质量,在较好的数据基础上进行话题识别和后续关键词提取可能效果更佳[^5]。 ```python # 以下为伪代码示例 import bertopic # 初始化BERTopic模型 topic_model = bertopic.BERTopic() # 准备文本数据 documents = ["示例文本1", "示例文本2"] # 进行话题建模 topics, _ = topic_model.fit_transform(documents) # 尝试从话题中提取关键词(伪代码,实际需要进一步处理) keywords = [] for topic in set(topics): topic_words = topic_model.get_topic(topic) for word, score in topic_words: keywords.append(word) print(keywords) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值