词向量源码解析:(5.8)ngram2vec源码解析之counts2ppmi等

本文详细介绍了ngram2vec中如何从共现矩阵计算PMI矩阵的过程,包括read_counts_matrix函数读取三元组数据,calc_pmi函数计算PMI,并使用sparse矩阵进行高效运算。后续的代码展示了如何将PPMI矩阵用于SVD,以获取词向量的维度压缩表示。
摘要由CSDN通过智能技术生成

我们下面要把共现矩阵加权,得到PPMI矩阵。counts2ppmi这个名字起得不是特别准确,这个文件实际上生成的是PMI矩阵。可能是为了统一,这个工具包把所有应该叫PMI的地方都变成了PPMI。ngram2vec中的counts2ppmi比较合理的利用了scipy中的稀疏矩阵,能很快的从文件中把共现矩阵建立好,然后加权得到PMI矩阵。这里默认要能把所有的三元组读进来,所以可能内存不足。

def read_counts_matrix(words_path, contexts_path, counts_path):
    wi, iw = load_vocabulary(words_path)//读取中心词词典
    ci, ic = load_vocabulary(contexts_path)//读取上下文词典
    counts_num = 0
    row = []//非零元素行id
    col = []//非零元素列id
    data = []//非零元素值
    with open(counts_path) as f:
        print str(counts_num/1000**2) + "M counts processed."
        for line in f:
            if counts_num % 1000**2 == 0:
                print "\x1b[1A&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值