如何从语料库或查询中获取SentenceTransformer词汇表?

我正在尝试使用来自SBERT.netSentenceTransformer模型,我想了解它是如何处理实体名称的。它们是否被标记为未知词 – 是否被分解成词元等。我希望确保它们在比较中被使用。

然而,要做到这一点,我需要查看它为查询构建的词汇表 – 甚至可能需要将嵌入转换为文本。

查看API – 对我来说并不明显如何做到这一点。

这里是他们文档中的一个快速示例:

embedder = SentenceTransformer("all-MiniLM-L6-v2")corpus = [    "A man is eating food.",    "A man is eating a piece of bread.",    "The girl is carrying a baby."]corpus_embeddings = embedder.encode(corpus, convert_to_tensor=True)# Query sentences:queries = [    "A man is eating pasta."]top_k = min(5, len(corpus))for query in queries:    query_embedding = embedder.encode(query, convert_to_tensor=True)    ...

回答:

您的SentenceTransformer模型实际上是在内部使用Hugging Face的transformers库中的分词器。您可以通过模型的.tokenizer属性访问它。这种分词器的典型行为是将未知词元分解成词片。我们可以继续检查它确实是这样做的,因为这相对简单:

embedder = SentenceTransformer("all-MiniLM-L6-v2")corpus = [    "A man is eating food.",    "A man is eating a piece of bread.",    "The girl is carrying a baby."]# 分词器就在这里:tokenizer = embedder.tokenizer  # BertTokenizerFast# 如果需要,词汇表本身就在这里:vocab = tokenizer.vocab  # 长度为30522的字典# 根据词汇表获取句子的分词,例如:inputs = tokenizer(corpus, padding='longest', truncation=True)tokens = [e.tokens for e in inputs.encodings]# tokens包含:# [#   ['[CLS]', 'a', 'man', 'is', 'eating', 'food', '.', '[SEP]', '[PAD]', '[PAD]', '[PAD]']#   ['[CLS]', 'a', 'man', 'is', 'eating', 'a', 'piece', 'of', 'bread', '.', '[SEP]']#   ['[CLS]', 'the', 'girl', 'is', 'carrying', 'a', 'baby', '.', '[SEP]', '[PAD]', '[PAD]']# ]# 现在让我们尝试一些未知词元,看看它会做什么queries = [    "Edv Beq is eating pasta."]q_inputs = tokenizer(queries, padding='longest', truncation=True)q_tokens = [e.tokens for e in q_inputs.encodings]# q_tokens包含:# [#   ['[CLS]', 'ed', '##v', 'be', '##q', 'is', 'eating', 'pasta', '.', '[SEP]']# ]

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注