我想在这里理解代码。
f = open('/Users/nk/Vocab.txt','r')
vocab_temp = f.read().split()
f.close()
col = len(vocab_temp)
print("Training column size:")
print(col)
row = run('cat '+'/Users/nk/X_train.txt'+" | wc -l").split()[0]
print("Training row size:")
print(row)
matrix_tmp = np.zeros((int(row),col), dtype=np.int64)
print("Train Matrix size:")
print(matrix_tmp.size)
label_tmp = np.zeros((int(row)), dtype=np.int64)
f = open('/Users/nk/X_train.txt','r')
count = 0
for line in f:
line_tmp = line.split()
#print(line_tmp)
for word in line_tmp[0:]:
if word not in vocab_temp:
continue
matrix_tmp[count][vocab_temp.index(word)] = 1
count = count + 1
f.close()
我理解col
基本上是词汇表中的单词,row
是训练集中的文本数据。
我也明白,在loop
中,代码实际上是在检查词汇表中是否存在一个词,是否存在于列车集中。有人可以解释一下continue
之后的行是什么吗?
答案 0 :(得分:4)
matrix_tmp[count][vocab_temp.index(word)] = 1
如果查看代码,count
每行增加1。因此matrix_tmp[count]
是每行的单词向量。
现在,考虑到vocab_temp.index(word)
,您可以在第二行看到vocab_temp
保留了由f.read().split()
生成的向量。
它从vocab_temp
获取索引的事实,它实际上获得了矩阵的位置(矩阵中的单词word
所在的索引并将其设置为1(单词{{ 1}}发生在word
位置。