词向量的调用以及未知词的填充和占位符填充

import zipfile   #导入zipfile  用于文件解压
import numpy as np   

def load_glove(glove_path):    #定义load_glove方法  可接收GLove词向量的文件路径。
    glove_200d_path = os.path.join(cache_dir, 'glove.6B.200d.txt')   #构建200维Glove词向量文件路径。这里假设cache_dir是一个已经定义好的缓存目录
    if not os.path.exists(glove_200d_path):         #这里检查glove_200d_path 是否存在。如果没存在执行如下操作
        glove_zip = zipfile.ZipFile(glove_path)     #打开GloVe zip文件
        glove_zip.extractall(cache_dir)             #将zip文件解压到指定缓存目录

    embeddings = []          
    tokens = []          #定义两个空列表 ,用于储存词向量和对应的单词
    with open(glove_200d_path, encoding='utf-8') as gf:     #打开200维 GloVe 词向量文本文件,并指定编码为UTF-8
        for glove in gf:    ##逐个遍历文件内容
            word, embedding = glove.split(maxsplit=1)       #将每行内容按空格分割,最多分割一次得到词向量
            tokens.append(word)                             #将单词添加到token 列表中  
            embeddings.append(np.fromstring(embedding, dtype=np.float32, sep=' '))      #将词向量字符串转化为numpy格式,并添加到embedding列表中。
    # 添加 <unk>, <pad> 两个特殊占位符对应的embedding
    
    embeddings.append(np.random.rand(200))        #为 未知单词 添加一个随机初始化的200维词向量
    embeddings.append(np.zeros((200,), np.float32))  #为填充符 添加一个全零 200维词向量

    vocab = ds.text.Vocab.from_list(tokens, special_tokens=["<unk>", "<pad>"], special_first=False)  #使用 ds.text.Vocab.from_list 方法从 tokens 列表创建一个词汇表,并将 <unk> 和 <pad> 作为特殊标记添加到词汇表中,special_first=False 表示特殊标记不放在词汇表的开头。
    embeddings = np.array(embeddings).astype(np.float32)                                             # 将 embeddings 列表转换为 numpy 数组,并将数据类型转换为 float32。

         
    return vocab, embeddings

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值