1.int、turple、string类型在传值时默认是不可变的,其他统统按传引用处理
2.np.zeros((3,2), dtype=float)生成的是数组而不是list
- 所以全局list变量要想在函数里赋值应该用如下形式,即事先加一个global声明
1
2
3
4
5temple = []
def xx():
global temple
temple = np.zeros((3,2), dtype=float)
3.list和numpy数组互相转换
1 | # List转numpy.array |
4.word2vec的用法
- 导入包
1
from gensim.models import word2vec
- 使用已有的语料文件训练模型
1
2
3
4
5
6
7
8
9
10with open('train.txt', 'a', encoding='utf-8') as ff:
ff.write(' '.join(data_content))
# 加载语料
sentences = word2vec.Text8Corpus('train.txt')
# 训练模型
# vector_size=32是控制生成的向量维度,默认是100
model = word2vec.Word2Vec(sentences, vector_size=32)
model.save('data1.model') - 加载之前生成的模型来将词转换成向量
1
2
3model = word2vec.Word2Vec.load('data1.model')
# word1就是要转换成向量的词
model.wv[word1] - 获得句向量方法就是该句中所有词向量加起来再除词向量的数量
1
2
3
4
5
6
7
8
9
10
11# 多采用以下形式,因为要处理下标不存在的情况
sum_temple = np.zeros((1, 32))
count = 0
for element_dep in element.strip().split():
try:
sum_temple += model.wv[element_dep]
count += 1
except KeyError:
continue
data_vec = sum_temple / count
5.