要在多语言环境中使用 Sentence Transformers,首先加载预训练的多语言模型,然后使用同一模型编码各种语言的文本。 这些模型是在不同的语言数据集上训练的,这使得它们能够将来自不同语言的句子映射到共享的嵌入空间中。 这意味着语义相似的句子的嵌入——无论语言如何——在数值上都会很接近,从而实现跨语言任务,例如搜索或聚类。
首先,安装 sentence-transformers
库并加载一个多语言模型。 例如,paraphrase-multilingual-MiniLM-L12-v2
模型支持超过 50 种语言。 使用 SentenceTransformer
初始化它
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
加载后,将任何支持的语言的句子传递给模型的 encode
方法。 模型会自动检测语言并处理文本
sentences = [
"Hello, world!", # English
"Bonjour le monde!", # French
"Hola, mundo!" # Spanish
]
embeddings = model.encode(sentences)
输出是一个 384 维向量列表(对于这个特定模型),你可以使用余弦相似度比较这些向量,以测量跨语言语义相似性。
关键考虑因素包括模型选择和输入处理。 多语言模型在语言覆盖范围和性能方面各不相同——有些优先考虑欧洲语言,而另一些则包括亚洲或非洲语言。 查看模型的文档以获取支持的语言。 对于具有复杂脚本的语言(例如,中文或阿拉伯语),请确保文本已正确标记化。 一些模型在内部处理子词标记化,但诸如 Unicode 规范化之类的预处理步骤可能会提高一致性。 此外,避免在单个句子中混合使用语言,除非模型明确支持它,因为这会降低性能。 最后,如果需要,使用特定领域的数据测试模型对目标语言的输出质量。 例如,如果构建跨语言 FAQ 匹配器,请验证不同语言的等效问题的嵌入是否正确对齐。