BERT驱动的智能关键词提取工具
KeyBERT是一款利用BERT嵌入技术的关键词提取工具。它通过计算文档和短语的嵌入表示之间的余弦相似度,识别出最能代表文档内容的关键词和短语。该工具支持Sentence-Transformers、Flair和Spacy等多种嵌入模型,适用于广泛的文本分析场景。KeyBERT还集成了Max Sum Distance和Maximal Marginal Relevance等算法,以提升结果多样性。此外,它还能与大型语言模型协同工作,为用户提供灵活高效的关键词提取方案。
KeyBERT 是一种简单易用的关键词提取技术,它利用 BERT 嵌入来创建与文档最相似的关键词和关键短语。
相关的中等文章可以在这里找到。
<a name="toc"/></a>
<a name="about"/></a>
虽然已经有许多可用的关键词生成 方法(例如,Rake,YAKE!,TF-IDF 等),但我想创建一个非常基础但功能强大的方法来提取关键词和关键短语。这就是 KeyBERT 的由来!它使用 BERT 嵌入和简单的余弦相似度来找到文档中与整个文档最相似的子短语。
首先,使用 BERT 提取文档嵌入以获得文档级表示。然后,为 N-gram 词/短语提取词嵌入。最后,我们使用余弦相似度找到与文档最相似的词/短语。最相似的词可以被识别为最能描述整个文档的词。
KeyBERT 并非独一无二,它被创建为一种快速简便的方法来生成关键词和关键短语。虽然已经有许多优秀的论文和解决方案使用 BERT 嵌入(例如,1,2,3),但我找不到一个基于 BERT 的解决方案,它不需要从头开始训练,并且可以供初学者使用(如果我错了请纠正我!)。因此,目标是 pip install keybert
和最多 3 行代码就能使用。
<a name="gettingstarted"/></a>
<a name="installation"/></a>
可以使用 pypi 进行安装:
pip install keybert
根据您将使用的转换器和语言后端,您可能需要安装更多内容。可能的安装有:
pip install keybert[flair]
pip install keybert[gensim]
pip install keybert[spacy]
pip install keybert[use]
<a name="usage"/></a>
以下是提取关键词的最简 单示例:
from keybert import KeyBERT doc = """ 监督学习是机器学习的一项任务,旨在学习一个函数, 该函数根据示例输入-输出对将输入映射到输出。它从 由一组训练示例组成的标记训练数据中推断出一个函数。 在监督学习中,每个示例都是一对,包括一个输入对象 (通常是向量)和一个期望的输出值(也称为监督信号)。 监督学习算法分析训练数据并产生一个推断函数, 该函数可用于映射新的示例。最佳情况下,算法将能够 正确确定未见实例的类别标签。这要求学习算法以 "合理"的方式从训练数据推广到未见情况(参见归纳偏差)。 """ kw_model = KeyBERT() keywords = kw_model.extract_keywords(doc)
您可以设置 keyphrase_ngram_range
来设置结果关键词/关键短语的长度:
>>> kw_model.extract_keywords(doc, keyphrase_ngram_range=(1, 1), stop_words=None) [('学习', 0.4604), ('算法', 0.4556), ('训练', 0.4487), ('类别', 0.4086), ('映射', 0.3700)]
要提取关键短语,只需将 keyphrase_ngram_range
设置为 (1, 2) 或更高,具体取决于您希望结果短语中包含的词数:
>>> kw_model.extract_keywords(doc, keyphrase_ngram_range=(1, 2), stop_words=None) [('学习算法', 0.6978), ('机器学习', 0.6305), ('监督学习', 0.5985), ('算法分析', 0.5860), ('学习函数', 0.5850)]
我们可以通过简单地设置 highlight
来突出显示文档中的关键词:
<img src="https://yellow-cdn.veclightyear.com/835a84d5/cb85fd38-33e6-4f45-9a16-443cac4ddd22.png" width="75%" height="75%" />keywords = kw_model.extract_keywords(doc, highlight=True)
注意:有关所有可能的转换器模型的完整概述,请参见 sentence-transformer。
对于英文文档,我建议使用 "all-MiniLM-L6-v2"
,对于多语言文档或任何其他语言,建议使用 "paraphrase-multilingual-MiniLM-L12-v2"
。
<a name="maxsum"/></a>
为了使结果多样化,我们选取与文档最相似的 2 x top_n 个词/短语。然后,我们从这 2 x top_n 个词中选取所有 top_n 组合,并提取彼此余弦相似度最低的组合。
>>> kw_model.extract_keywords(doc, keyphrase_ngram_range=(3, 3), stop_words='english', use_maxsum=True, nr_candidates=20, top_n=5) [('训练示例集', 0.7504), ('泛化训练数据', 0.7727), ('需要学习算法', 0.5050), ('监督学习算法', 0.3779), ('学习机器学习', 0.2891)]
<a name="maximal"/></a>
为了使结果多样化,我们可以使用最大边际相关性(MMR)来创建关键词/关键短语,这也是基于余弦相似度的。高度多样化的结果:
>>> kw_model.extract_keywords(doc, keyphrase_ngram_range=(3, 3), stop_words='english', use_mmr=True, diversity=0.7) [('算法泛化训练', 0.7727), ('未见实例标签', 0.1649), ('新示例最优', 0.4185), ('确定类别标签', 0.4774), ('监督学习算法', 0.7502)]
低度多样化的结果:
>>> kw_model.extract_keywords(doc, keyphrase_ngram_range=(3, 3), stop_words='english', use_mmr=True, diversity=0.2) [('算法泛化训练', 0.7727), ('监督学习算法', 0.7502), ('学习机器学习', 0.7577), ('学习算法分析', 0.7587), ('学习算法泛化', 0.7514)]
<a name="embeddings"/></a>
KeyBERT支持多种可用于嵌入文档和词语的嵌入模型:
点击这里查看所有支持的嵌入模型的完整概述。
Sentence-Transformers
你可以从这里选择任何sentence-transformers
模型,
并通过KeyBERT的model
参数传递:
from keybert import KeyBERT kw_model = KeyBERT(model='all-MiniLM-L6-v2')
或者选择一个带有自定义参数的SentenceTransformer模型:
from keybert import KeyBERT from sentence_transformers import SentenceTransformer sentence_model = SentenceTransformer("all-MiniLM-L6-v2") kw_model = KeyBERT(model=sentence_model)
Flair
Flair允许你选择几乎任何公开可用的嵌入模型。Flair可以如下使用:
from keybert import KeyBERT from flair.embeddings import TransformerDocumentEmbeddings roberta = TransformerDocumentEmbeddings('roberta-base') kw_model = KeyBERT(model=roberta)
你可以在这里选择任何🤗 transformers模型。
<a name="llms"/></a>
通过KeyLLM
,你现在可以使用大型语言模型(LLM)进行关键词提取。你可以在这里找到完整文档,但这里有两个常见的使用这种新方法的例子。在开始之前,请确保通过pip install openai
安装OpenAI包。
首先,我们可以直接要求OpenAI提取关键词:
import openai from keybert.llm import OpenAI from keybert import KeyLLM # 创建你的LLM client = openai.OpenAI(api_key=MY_API_KEY) llm = OpenAI(client) # 将其加载到KeyLLM中 kw_model = KeyLLM(llm)
这将查询任何ChatGPT模型并要求它从文本中提取关键词。
其次,我们可以找到可能具有相同关键词的文档,并仅为这些文档提取关键词。 这比为每个单独的文档询问关键词要高效得多。很可能有些文档具有完全相同的关键词。这样做很简单:
import openai from keybert.llm import OpenAI from keybert import KeyLLM from sentence_transformers import SentenceTransformer # 提取嵌入 model = SentenceTransformer('all-MiniLM-L6-v2') embeddings = model.encode(MY_DOCUMENTS, convert_to_tensor=True) # 创建你的LLM client = openai.OpenAI(api_key=MY_API_KEY) llm = OpenAI(client) # 将其加载到KeyLLM中 kw_model = KeyLLM(llm) # 提取关键词 keywords = kw_model.extract_keywords(MY_DOCUMENTS, embeddings=embeddings, threshold=.75)
你可以使用threshold
参数来决定文档需要多相似才能获得相同的关键词。
要在你的工作中引用KeyBERT,请使用以下bibtex引用:
@misc{grootendorst2020keybert, author = {Maarten Grootendorst}, title = {KeyBERT: Minimal keyword extraction with BERT.}, year = 2020, publisher = {Zenodo}, version = {v0.3.0}, doi = {10.5281/zenodo.4461265}, url = {https://doi.org/10.5281/zenodo.4461265} }
以下是用于创建KeyBERT的几个资源,但最重要的是,这些是创建令人印象深刻的关键词提取模型的优秀资源:
论文:
GitHub仓库:
MMR: 关键词/关键短语的选择是仿照以下模型:
注意: 如果你发现有论文或GitHub仓库提供了易于使用的BERT嵌入实现用于关键词/关键短语提取,请告诉我!我会确保在这个仓库中添加引用。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一 个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台 ,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号