else:
corpus。write('rn')
source。close()
corpus。close()
&urncorpus
#词典创建函数,返回词索引、词向量以及每个句子所对应的词语索引
defcorpus_dione,
e):#不限制模型和语料库数据格式
#如果模型和语料库正确输入,返回相应的值,否则显示无输入数据
if(corpusisnotNone)aNone):
&=Diary()
&。doodel。wv。vocab。key(),
allow_update=True)
#计算在文档中,每个关键词出现的频率并用稀疏矩阵的方式返回结果。例如(0,1)
#(1,1)。。。表达的意思是此文档中,出现了词典中的第0个词1次,出现了第
#1个词1次,依此类推。另外,允许增加新的文档来更新这个稀疏矩阵
w2indx={v:k+1fensim_dict。items()}
#所有频数超过10的词的索引k和v代表key和value,遍历词典中所有元素
#w2veodel[word]forwordinw2indx。keys()}所有
#频数超过10的词的词向量
defrebuild_corpus(corpus):
#用词的频率和索引重新描述语料库
data=[]
forsentencorpus:
&=[]
forwordience:
try:
&。append(w2indx[word])
&:
&。append(0)
data。appe)
&a
corpus=rebuild_corpus(corpus)
#对语料的句子进行处理,每个句子允许的最大长度为maxlen,
#超过这个值的句子会被截断,短于这个值的句子会用0填充
#可用参数控制截断和填充从头开始还是从尾进行
corpus=sequence。pad_sequenaxlen=maxlen)