首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用sentence_transformers获取句子嵌入

用sentence_transformers获取句子嵌入
EN

Data Science用户
提问于 2020-09-01 15:23:32
回答 2查看 2.1K关注 0票数 0

我的数据框架中有一个文本列,其中包含(S)段,在数据帧的每个实例/示例/行中都有多个可变的句子。然后,我使用nltk的sent_tokenizer创建了该段的句子标记,并将其放入另一列。

所以我的数据框架是这样的:

代码语言:javascript
复制
index       text                                              class

0           ["Hello i live in berlin", 'I'm xxx']                                                          1
1           ["My name is xx", "I have a cat", "Love is life"]                                              0

现在当我使用:

代码语言:javascript
复制
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('distilbert-base-nli-stsb-mean-tokens')
sentences = df['text']
sentences = sentences.tolist()
embeddings = model.encode(sentences)

我得到了:

代码语言:javascript
复制
TypeError: expected string or bytes-like object

encode方法不以句子列表作为参数。

EN

回答 2

Data Science用户

回答已采纳

发布于 2020-09-02 17:08:58

我终于解决了这个问题。

我的数据看起来是这样的:

代码语言:javascript
复制
index       text                                              class

0           ["Hello i live in berlin", 'I'm xxx']                                     1
1           ["My name is xx", "I have a cat", "Love is life"]                         0

Text列包含每一行中的句子列表。我应用了以下功能:

代码语言:javascript
复制
df['Embeddings'] = df['text'].apply(lambda x: model.encode(x))

它创建了一个名为嵌入式的新列。嵌入列现在包含每一行大小为768的向量列表。现在,我将使用lambda对新创建的嵌入列的and元素应用平均函数,该元素将为每一行创建一个长度为768的向量,然后将其存储在一个新列中,比如'X‘。然后,我将把X与类标签一起提供给SVM。

基本上,我们要做的是,平均为文本列中的句子生成嵌入向量的数量。

例如,对于df“文本”中的索引0,我们有两个句子:

代码语言:javascript
复制
["Hello i live in berlin", 'I'm xxx'] 

现在,在编码之后,它将如下所示:

代码语言:javascript
复制
 [v1,v2] # where length of v1 and v2 vectors is 768

接下来,我们将使用np.average获取这两个向量的平均值。它将产生一个单一的载体:

代码语言:javascript
复制
[v]

这个单一的向量现在可以很容易地输入到支持向量机。当然,我们将对所有行执行此操作,然后将其提供给支持向量机。

票数 0
EN

Data Science用户

发布于 2020-09-02 08:27:08

encode方法只作为字符串处理单个句子,也就是说,您需要对每个句子单独调用它:

代码语言:javascript
复制
embeddings = [model.encode(s) for s in sentences]
票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/81089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档