representations包的主要任务是进一步处理和包装之前模型生成的词向量。这个包中包括了四个文件,下面依次介绍这四个文件。首先介绍matrix_serializer文件。这个文件的主要功能是负责内存磁盘之间的数据交换。比如我想把内存的字典写入磁盘,或是把字典读入内存,就调用这个文件里面的函数。
def save_matrix(f, m)://把共现矩阵写到磁盘中
np.savez_compressed(f, data=m.data, indices=m.indices, indptr=m.indptr, shape=m.shape)
def load_matrix(f)://把共现矩阵从磁盘中读取出来
if not f.endswith('.npz'):
f += '.npz'
loader = np.load(f)
return csr_matrix((loader['data'], loader['indices'], loader['indptr']), shape=loader['shape'])
def save_vocabulary(path, vocab)://把词典写到磁盘中
with open(path, 'w') as f:
for w in vocab:
print >>f, w
def load_vocabulary(path)://把词典从磁盘中读到内存
with open(path) as f:
vocab = [line.strip() for line in f if len(line) > 0]
return dict([(a, i) for i, a in enumerate(vocab)]), vocab
def save_count_vocabulary(path, vocab)://词典分成仅有单词的词典和包括单词以及其词频的词典。
with open(path, 'w') as f:
for w, c in vocab:
print >>f, w, c
def load_count_vocabulary(path):
with open(path) as f:
# noinspection PyTypeChecker
vocab = dict([line.strip().split() for line in f if len(line) > 0])
return vocab
下面看一下representation_factory文件的内容,这个文件和embedding文件以及explicit文件一起,对生成的词向量进行处理和包装。在我们需要用到词向量的时候,我们会调用这个文件的内容,而不是直接去从文件中把词向量读取出来。
def create_representation(args)://这个函数接受args作为输入,a