bert-base-wikipedia-sections-mean-tokens实战:快速实现句子相似度计算与文本聚类
bert-base-wikipedia-sections-mean-tokens实战快速实现句子相似度计算与文本聚类【免费下载链接】bert-base-wikipedia-sections-mean-tokens项目地址: https://ai.gitcode.com/hf_mirrors/Rose/bert-base-wikipedia-sections-mean-tokensbert-base-wikipedia-sections-mean-tokens是一款基于Sentence-BERT框架的文本嵌入模型能够将句子和段落映射到768维的稠密向量空间非常适合句子相似度计算、文本聚类和语义搜索等自然语言处理任务。尽管该模型已被官方标记为 deprecated但对于学习和理解句子嵌入技术仍具有重要参考价值。快速上手环境准备与安装要使用bert-base-wikipedia-sections-mean-tokens模型首先需要搭建合适的运行环境。推荐使用sentence-transformers库它提供了简单易用的API接口能够快速实现文本嵌入功能。安装核心依赖通过pip命令可以轻松安装所需的依赖库pip install -U sentence-transformers如果需要直接使用HuggingFace Transformers库进行底层操作还需要安装transformers和torchpip install transformers torch获取项目代码可以通过以下命令克隆完整项目仓库git clone https://gitcode.com/hf_mirrors/Rose/bert-base-wikipedia-sections-mean-tokens句子相似度计算基础实现使用bert-base-wikipedia-sections-mean-tokens进行句子相似度计算非常简单只需几行代码即可完成。下面分别介绍使用sentence-transformers和HuggingFace Transformers两种实现方式。使用sentence-transformers实现sentence-transformers库对模型进行了高度封装使用起来最为简便from sentence_transformers import SentenceTransformer sentences [This is an example sentence, Each sentence is converted] model SentenceTransformer(sentence-transformers/bert-base-wikipedia-sections-mean-tokens) embeddings model.encode(sentences) print(embeddings)这段代码首先导入SentenceTransformer类然后定义了两个待处理的句子。通过创建模型实例并调用encode方法即可得到句子的嵌入向量。使用HuggingFace Transformers实现如果需要更底层的控制可以直接使用HuggingFace Transformers库from transformers import AutoTokenizer, AutoModel import torch # 均值池化 - 考虑注意力掩码以进行正确的平均 def mean_pooling(model_output, attention_mask): token_embeddings model_output[0] # model_output的第一个元素包含所有token嵌入 input_mask_expanded attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float() return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min1e-9) # 我们想要获取句子嵌入的句子 sentences [This is an example sentence, Each sentence is converted] # 加载模型和分词器 tokenizer AutoTokenizer.from_pretrained(sentence-transformers/bert-base-wikipedia-sections-mean-tokens) model AutoModel.from_pretrained(sentence-transformers/bert-base-wikipedia-sections-mean-tokens) # 对句子进行分词 encoded_input tokenizer(sentences, paddingTrue, truncationTrue, return_tensorspt) # 计算token嵌入 with torch.no_grad(): model_output model(**encoded_input) # 执行均值池化 sentence_embeddings mean_pooling(model_output, encoded_input[attention_mask]) print(Sentence embeddings:) print(sentence_embeddings)这段代码展示了更详细的实现过程包括手动定义均值池化函数、加载模型和分词器、处理输入以及计算句子嵌入等步骤。文本聚类应用从嵌入到聚类获取句子嵌入后我们可以使用这些向量进行文本聚类。下面是一个简单的聚类流程示例准备需要聚类的文本数据使用模型将文本转换为嵌入向量选择合适的聚类算法如K-means对嵌入向量进行聚类分析和可视化聚类结果虽然项目中没有提供完整的聚类示例代码但可以基于examples/inference.py中的代码进行扩展结合scikit-learn等库实现聚类功能。模型架构解析bert-base-wikipedia-sections-mean-tokens模型的完整架构如下SentenceTransformer( (0): Transformer({max_seq_length: 128, do_lower_case: False}) with Transformer model: BertModel (1): Pooling({word_embedding_dimension: 768, pooling_mode_cls_token: False, pooling_mode_mean_tokens: True, pooling_mode_max_tokens: False, pooling_mode_mean_sqrt_len_tokens: False}) )该模型由两部分组成BERT基础模型和均值池化层。BERT模型负责将输入文本转换为上下文相关的词嵌入而均值池化层则将词嵌入聚合为句子级别的嵌入向量。模型输出的向量维度为768维。注意事项与替代方案⚠️重要提示该模型已被官方标记为 deprecated因为它生成的句子嵌入质量较低。官方推荐使用其他更先进的句子嵌入模型可以在SBERT.net - Pretrained Models中找到推荐的替代模型。如果您需要在生产环境中使用句子嵌入技术建议选择最新的模型如all-MiniLM-L6-v2、all-mpnet-base-v2等这些模型在各种基准测试中表现更优。总结bert-base-wikipedia-sections-mean-tokens模型为我们提供了一个理解句子嵌入技术的良好起点。通过本文介绍的方法您可以快速实现句子相似度计算和文本聚类功能。尽管该模型已不再推荐用于生产环境但它的实现方式和架构设计对于学习Sentence-BERT技术仍然具有重要的参考价值。在实际应用中建议关注官方推荐的最新模型并结合项目需求选择最合适的文本嵌入方案。【免费下载链接】bert-base-wikipedia-sections-mean-tokens项目地址: https://ai.gitcode.com/hf_mirrors/Rose/bert-base-wikipedia-sections-mean-tokens创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考