使用KeyBERT从DataFrame提取关键词时结果趋同问题求助
KeyBERT提取关键词高度相似的解决方法
调整核心参数
- 缩小
keyphrase_ngram_range范围:当前设置的(1,3)容易生成重复的长短语,可尝试(1,2)或(1,1),聚焦更精准的核心词汇。 - 启用
diversity参数:KeyBERT支持通过diversity(取值0-1)控制关键词语义多样性,比如设置diversity=0.5,强制模型挑选差异更大的关键词。示例代码:memo_['Text'].apply(lambda x: kw_model.extract_keywords(x, keyphrase_ngram_range=(1,2), stop_words='english', highlight=False, top_n=5, diversity=0.5)) - 降低
top_n数量:如果不需要过多关键词,将top_n设为3-5,避免模型填充语义相近的边缘词汇。
- 缩小
优化文本预处理
- 自定义停用词:在默认英文停用词基础上,添加领域特有的无意义词汇,减少模型对这类冗余内容的关注。
- 清洗文本噪声:去除每行文本中的重复片段、特殊符号、格式化冗余内容,让核心信息更突出,避免模型被干扰。
更换适配模型
- 使用领域预训练模型:如果文本属于医疗、金融等特定领域,换用对应领域的BERT模型(如
biobert-base-cased-v1.1),模型对领域词汇的语义理解更精准,提取的关键词会更贴合文本特性。 - 微调基础模型:若有标注数据,用你的目标文本微调
all-mpnet-base-v2,让模型适配你的文本风格和词汇体系。
- 使用领域预训练模型:如果文本属于医疗、金融等特定领域,换用对应领域的BERT模型(如
后处理去重
- 对提取的关键词做语义去重:通过计算关键词向量的余弦相似度,剔除相似度高于阈值(如0.8)的重复项,手动或用代码实现均可。
内容的提问来源于stack exchange,提问作者shan
相关产品推荐
相关产品推荐

