赞
踩
环境:python 3.6>=,pytorch 1.6.0>=,transformers v4.6.0>=。不支持 python 2.7
pytorch 安装参考 PyTorch安装报错_piukaty的博客-CSDN博客
transformers 安装:
pip install transformers
sentence-transformers安装:
pip install -U sentence-transformers
检查:import sentence_transformers。能正常导入,无报错。在官方文档可能会让你输入一段英语小测验一下,其实也没必要。
- from sentence_transformers import SentenceTransformer
-
- # 保存预训练模型的文件夹
- save_path = "./bert_based_chinese"
-
- # 加载模型
- model = SentenceTransformer('distiluse-base-multilingual-cased-v1')
- # 保存模型到指定文件夹
- model.save(save_path)
sentence_transformers 还支持其他的预训练模型,详细见预训练模型 — 句子转换器文档 (sbert.net)。这里我们选择了支持多语言的模型(当然也支持中文)。加载指定模型用:
model = SentenceTransformer('model-name')
其中model-name指你要加载的模型名。当你把模型保存到本地后,就可以用SentenceTransformers(path)来加载模型。model-name替换为保存模型的路径。注意对模型新建一个空的文件夹保存。
- from sentence_transformers import SentenceTransformer as st
-
- # 加载模型
- model = st("./bert_based_chinese")
-
- # 待编码的句子
- sentences = [
- "明月几时有",
- "把酒问青天"
- ]
-
- # 编码
- embeddings = model.encode(sentences)
-
- for sentence,embedding in zip(sentences, embeddings):
- print("Sentence:", sentence)
- print("Embedding:", embedding)
- print("")

model.encode参数说明:
sentence – 要嵌入的句子
batch_size – 用于计算的批大小
show_progress_bar – 对句子进行编码时输出进度条
output_value – 默认sentence_embedding,用于获取句子嵌入。可以设置为token_embeddings以获取字片标记嵌入。设置为"无",以获取所有输出值
convert_to_numpy – 如果为 true,则输出为 numpy 向量的列表。否则,它是一个 pytorch 张量列表。
convert_to_tensor – 如果为 true,将返回一个tensor大张量。覆盖convert_to_numpy中的任何设置
normalize_embeddings – 如果设置为 true,则返回的向量的长度将为 1。在这种情况下,可以使用更快的点积(util.dot_score)而不是余弦相似性。
需要注意的点:
1.输入的多个句子放在列表里;
2.也可以输入短语或者长句子,超过最大句长会被截断,最大句长为512个单词片段,约为300-400单词(以英语单词来衡量)
- # 获取最大句长,默认是128
- print("Max Sequence Length:", model.max_seq_length)
-
- # 修改最大句长为200,不然超过支持的512
- model.max_seq_length = 200
-
- print("Max Sequence Length:", model.max_seq_length)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。