词向量转换回文本-以CMU-MOSI为例

本文介绍了如何将经过glove预处理的CMU-MOSI数据集的词向量转换回原始文本。首先下载glove嵌入文件,然后构建id2word字典和embedding列表。接着加载MOSI数据集的文本部分,通过计算向量之间的相似度找到最匹配的词。最终,根据相似度阈值将向量映射回文本,得到近似的原始文本内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

词向量转换回文本-以CMU-MOSI为例

需求:在进行深度学习的时候,我们使用glove将文本转换为词向量,使得神经网络可以更好的理解文本。但是,当我们得到一个已经经过预处理的数据集,我们想要逆推导得到该向量的文本
这个时候我们应该怎么办?我们这里以多模态情感分析数据集CMU-MOSI为例子进行介绍。

步骤

  1. 下载所使用的embedding版本。我这里是glove.840B.300d。由于可能需要翻墙,提供一下百度云盘,需要可以自取
链接:https://pan.baidu.com/s/1SFK93RpL5YJfEmV2jgWDIw 
提取码:op2g 
复制这段内容后打开百度网盘手机App,操作更方便哦
  1. 使用下载的glove,构建两个在转换中需要的数据结构,分别是id2word的字典以及embedding的列表
def contruct_twoFile():
    id2word = {}
    embedding = []
    with open(r'F:\pcode\dataset\glove.840B.300d.txt', 'r', encoding='utf-8')as f:
        row = 0
        for line in f.readlines():
            if row == 0:
                row = 1
                continue
            row += 1
            if row % 10000 == 0:
                print(row)
            word = line.strip().split(' ')[0]
            try:
                vec = np.array([float(item) for item in line.strip().split()[1:]])
            except:
                continue
            # print()
            if (vec.shape[0] == 300):
                id2word[len(embedding)] = word
                embedding.append(vec)
                # exit(0)
        glove_embedding = np.array(embedding)

  1. 载入MOSI数据集中文本的部分
dataset = pickle.load(open(path, 'rb'))
train_text_embed = torch.tensor(dataset['train']['text'].astype(np.float32)).cpu().detach()
    
  1. 然后就可以根据如下代码进行转换了
total_text_context = []
    for x in train_text_embed:
        text = []  # 50, 300
        for xx in x:  # 在这50个里面找
            dataset_embed = xx[:300]
            if np.sum(dataset_embed) != 0:
                dataset_embed = np.reshape(dataset_embed, [1, 300])
                scores = np.sum(np.abs(dataset_embed - glove_embedding), axis=-1)
                id = scores.argmin()
                score = scores[id]
                text.append(id2word[id])
                if score < 0.1:
                    print(id2word[id] + ':' + str(score))
                    text.append(id2word[id])
        total_text_context.append(text)

  1. 结果如图所示
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值