新四石路打卤面 2023-02-13 16:55 采纳率: 0%
浏览 47

如何用BERT对多列文本做分类?

问题

想请教一下大家,这个场景怎么用BERT对多列文本做分类呀?
文本数据大概类似这样(7分类),3列都是长文本(超过512):

id背景评论理由分类
1………………0
2………………1
3………………0
4………………2
5………………3
6………………4
7………………5
8………………6
………………

PS:本人还只会使用Pytorch对单独一列文本用BERT做分类,但不知道如果有这样3列文本列的话,要怎样搭建深度学习网络。

其他

目前自己想的是把3个文本列都分别使用bert提取Embedding之后再拼在一起做分类,但有2个问题:
① 如果分别做的话是不是需要构建3个DataLoder,那这样的后面该怎么输入网络进行训练呀?
② 还有就是不知道用什么函数将Embedding向量拼在一起,大家有什么好的经验嘛?

另外,自己也有想到把3列合成一列,然后再处理,但也不行。一个是因为3列都是长文本,平均1000+,合成一列之后截断的话丢失太多信息了;另外就是,其实整个数据集不光只有文本,还有一些数值数据,所以最后还是要进行向量拼接的(这也是上面的问题),所以还是得知道在Pytorch里面,怎么在模型中间进行向量拼接。

  • 写回答

3条回答 默认 最新

  • 太阳是白的 2023-02-16 10:13
    关注
    • 问题1,你可以使用PyTorch中的DatasetDataLoader来构建一个数据加载器。你可以先将3个文本列分别使用BERT模型提取嵌入向量,然后将这些向量组合成一个包含3个嵌入向量的列表,将其作为一个样本的特征输入到网络中。然后将标签与特征一起组合成一个Dataset对象,并将其传递到一个DataLoader对象中进行训练。这样你只需要构建一个DataLoader对象即可
    • 对于问题2,你可以使用PyTorch中的torch.cat函数将3个嵌入向量拼接起来。假设你已经得到了3个嵌入向量embeddings1embeddings2embeddings3,并且每个嵌入向量的维度为embed_dim,那么你可以使用以下代码将它们拼接成一个维度为3*embed_dim的向量:
    import torch
    
    concatenated_embeddings = torch.cat((embeddings1, embeddings2, embeddings3), dim=1)
    

    这将返回一个形状为(batch_size, 3*embed_dim)的张量,其中batch_size表示你一次输入的样本数量。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月13日

悬赏问题

  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)