首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用句子-伯特与其他功能在科学工具包-学习

使用句子-伯特与其他功能在科学工具包-学习
EN

Stack Overflow用户
提问于 2021-10-15 13:03:14
回答 1查看 670关注 0票数 2

我有一个数据集,一个特征是文本,还有4个特性。语句-伯特向量器将文本数据转换为张量。我可以用机器学习分类器直接使用这些稀疏矩阵。我可以用张量替换文本列吗?我怎么才能训练模特。下面的代码是我如何将文本转换成向量的。

代码语言:javascript
复制
model = SentenceTransformer('sentence-transformers/LaBSE')
sentence_embeddings = model.encode(X_train['tweet'], convert_to_tensor=True, show_progress_bar=True)
sentence_embeddings1 = model.encode(X_test['tweet'], convert_to_tensor=True, show_progress_bar=True)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-16 12:47:18

假设这是你的数据

代码语言:javascript
复制
X_train = pd.DataFrame({
    'tweet':['foo', 'foo', 'bar'],
    'feature1':[1, 1, 0],
    'feature2':[1, 0, 1],
})
y_train = [1, 1, 0]

并且您愿意将它与sklearn API (交叉验证、管道、网格搜索等)一起使用。有一个名为ColumnTransformer的实用程序,它可以使用用户定义的任意函数将熊猫数据帧映射到所需的数据!您需要做的是定义一个函数并从它创建一个正式的sklearn.transformer

代码语言:javascript
复制
model = SentenceTransformer('mrm8488/bert-tiny-finetuned-squadv2') # model named is changed for time and computation gians :)
embedder = FunctionTransformer(lambda item:model.encode(item, convert_to_tensor=True, show_progress_bar=False).detach().cpu().numpy())

在此之后,您将能够像其他任何转换器一样使用转换器,并将文本列映射到语义空间,例如:

代码语言:javascript
复制
preprocessor = ColumnTransformer(
    transformers=[('embedder', embedder, 'tweet')],
    remainder='passthrough'
    )
X_train = preprocessor.fit_transform(X_train) # X_train.shape => (len(df), your_transformer_model_hidden_dim + your_features_count)

X_train将是您想要的数据。在sklearn生态系统中使用是合适的。

代码语言:javascript
复制
gnb = GaussianNB()
gnb.fit(X_train, y_train) 

输出:GaussianNB(priors=None, var_smoothing=1e-09)

警告:数值特性和tweet嵌入应该属于相同的规模,否则有些会支配其他特性并降低性能

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69585176

复制
相关文章

相似问题

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