微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用非英语文本的预训练模型进行BERT句子嵌入

如何解决使用非英语文本的预训练模型进行BERT句子嵌入

我正在尝试使用BERT句子嵌入从瑞典语文本字符串的语料库中为瑞典语文本片段找到相似的句子。 句子翻译器(BERT)的句子SBERT似乎是理想的选择。它们具有各种预先训练的模型,并提供了出色的示例: (https://github.com/UKPLab/sentence-transformers

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)

但是,他们为非英语句子转换器的选择似乎是有限的。我想知道是否有可能,也许更准确地应用Hugging Face库中的BERT模型,该模型专门针对瑞典文本或任何其他非英语语言进行了训练,以提取句子嵌入物?专门针对某种语言进行训练的BERT模型不会为该语言产生更准确的句子嵌入吗?最后,所有模型都以各自的语言在相同的任务MLM和NSP上进行了预训练,以理解该语言,对吗?

有什么想法或经验吗?

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

解决方法

使用预训练的BERT瑞典语确实好得多。原因是瑞典语的单词对BERT在英语语料库上训练的单词都是异常值。因此,即使英语BERT可以在瑞典语料库上做些工作,瑞典BERT也是一个显而易见的选择。

但是,如果您面临使用混合语言语料库的可能性,那么您将无法应用此方法,因为不仅您需要为所涉及的每种语言使用单独的BERT,而且还需要检测所使用的语言,包括句子内级别。在这种情况下,一种可能的解决方案是使用Hugging Face网络或任何公共翻译API将所有文本从“自动检测语言”翻译为英语。例如。 Google,Deepl,Yandex或百度。

P.S。如果您碰巧同时尝试了两个BERT,请在此处发表评论,分享一下质量差异

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。