Bert-whitening 向量降维及使用

参考:https://kexue.fm/archives/8069
https://kexue.fm/archives/9079
https://zhuanlan.zhihu.com/p/531476789

输入:vv是多个向量组成的三维矩阵
在这里插入图片描述
结果:v_data1 256维度
在这里插入图片描述


def compute_kernel_bias(vecs, n_components=256):
    """计算kernel和bias
    vecs.shape = [num_samples, embedding_size],
    最后的变换:y = (x + bias).dot(kernel)
    """
    mu = vecs.mean(axis=0, keepdims=True)
    cov = np.cov(vecs.T)
    # print(cov)
    u, s, vh = np.linalg.svd(cov)
    print(np.diag(1 / np.sqrt(s) ))
    W = np.dot(u, np.diag(1 / np.sqrt(s)))
    return W[:, :n_components], -mu


def transform_and_normalize(vecs, kernel=None, bias=None):
    """ 最终向量标准化
    """
 
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
bert-base-chinese是一个预训练的中文BERT模型,它可以生成中文文本的词向量使用bert-base-chinese生成词向量的步骤如下: 1. 安装相应的Python库:tensorflow、keras-bert。 2. 加载预训练好的bert-base-chinese模型。可以使用keras-bert库中的load_trained_model_from_checkpoint函数加载。 3. 使用加载好的模型对文本进行编码,得到文本的词向量。可以使用keras-bert库中的TokenEmbedding函数实现。 4. 对生成的词向量进行进一步处理,如降维、聚类等。 下面是一个使用bert-base-chinese生成词向量的示例代码: ```python import tensorflow as tf from keras_bert import load_trained_model_from_checkpoint, Tokenizer, TokenEmbedding # 加载预训练好的bert-base-chinese模型 config_path = 'bert_config.json' checkpoint_path = 'bert_model.ckpt' model = load_trained_model_from_checkpoint(config_path, checkpoint_path) # 定义tokenizer token_dict = {} with open('vocab.txt', 'r', encoding='utf-8') as reader: for line in reader: token = line.strip() token_dict[token] = len(token_dict) tokenizer = Tokenizer(token_dict) # 对文本进行编码,得到词向量 text = '这是一段中文文本。' tokens = tokenizer.tokenize(text) tokens = ['[CLS]'] + tokens + ['[SEP]'] token_ids = tokenizer.tokens_to_ids(tokens) segment_ids = [0] * len(token_ids) inputs = [token_ids, segment_ids] outputs = TokenEmbedding(name='Token')(model.inputs[:2])(inputs) # 打印词向量 print(outputs) ``` 输出结果为一个形状为(1, 9, 768)的张量,其中768表示词向量维度

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loong_XL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值