Python 非英语文本中基于预训练模型的BERT语句嵌入

Python 非英语文本中基于预训练模型的BERT语句嵌入,python,nlp,cosine-similarity,bert-language-model,sentence-similarity,Python,Nlp,Cosine Similarity,Bert Language Model,Sentence Similarity,我正试图应用BERT句子嵌入,从瑞典语文本字符串语料库中找到一段瑞典语文本中类似的句子。 来自句子变形金刚(SBERT)的句子BERT)似乎是理想的选择。他们有各种预训练模型,并给出了很好的例子: () 然而,他们对非英语句子转换器的选择似乎是有限的。我想知道,在提取句子嵌入方面,是否有可能而且可能更准确地应用来自拥抱脸库的伯特模型,该模型专门针对瑞典文本或任何其他非英语语言进行训练?在一种语言上专门训练的伯特模型不会为该语言生成更精确的句子嵌入吗?最后,所有的模特都会用他们各自的语言在相同的任

我正试图应用
BERT
句子嵌入,从瑞典语文本字符串语料库中找到一段瑞典语文本中类似的句子。 来自句子变形金刚(
SBERT
)的句子
BERT
)似乎是理想的选择。他们有各种预训练模型,并给出了很好的例子: ()

然而,他们对非英语句子转换器的选择似乎是有限的。我想知道,在提取句子嵌入方面,是否有可能而且可能更准确地应用来自拥抱脸库的伯特模型,该模型专门针对瑞典文本或任何其他非英语语言进行训练?在一种语言上专门训练的伯特模型不会为该语言生成更精确的句子嵌入吗?最后,所有的模特都会用他们各自的语言在相同的任务上接受训练,以理解这门语言,对吗

有什么想法或经历吗


最终的目标是在句子嵌入中使用余弦相似性对相似的句子/段落进行排序

对于瑞典语来说,使用预训练的BERT确实更好。原因是,对于在英语语料库上训练的伯特来说,瑞典词都是离群词。因此,即使一个英国的BERT可以在瑞典语料库上做一些工作,如果可以的话,瑞典的BERT也是一个明显的选择

然而,如果您面临混合语言语料库的可能性,那么您就不能应用这种方法,因为您不仅需要为所涉及的每种语言指定一个单独的BERT,还需要检测所使用的语言,包括句内级别。在这种情况下,一个可能的解决方案是使用拥抱人脸网络或任何公共翻译API将所有文本从“自动检测语言”翻译成英语。例如谷歌、Deepl、Yandex或百度


另外,如果您碰巧尝试了两种BERT'S,请在这里的评论中分享质量差异

嗨,Andrew,谢谢您的快速反应!您是否知道,是否可以使用huggingface库中的另一个预训练的BERT来更改embedder=SentenceTransformer(“..”)中的预训练的BERT模型,而该模型最初不是来自句子BERT创建者?或者我应该从Huggingface库中获取一个经过预训练的瑞典模型,然后自己以某种方式提取嵌入?它需要一个微调的BERT吗?我只想对我的瑞典语句子进行语境化嵌入,并将其与余弦相似性(无监督)进行比较。再次感谢:)这肯定是由实验决定的。这两样都在手边吗?两种都试试,请报告质量
from sentence_transformers import SentenceTransformer, util
import torch

embedder = SentenceTransformer('distilbert-base-nli-stsb-mean-tokens')

sentences = ['This framework generates embeddings for each input sentence',
    'Sentences are passed as a list of string.', 
    'The quick brown fox jumps over the lazy dog.']
sentence_embeddings = model.encode(sentences)