def create_dictionaries(model=None, combined=None): if (combined is not None) and (model is not None): gensim_dict = Dictionary() gensim_dict.doc2bow(model.vocab.keys(), allow_update=True) # freqxiao10->0 所以k+1 w2indx = {v: k+1 for k, v in gensim_dict.items()}#所有频数超过10的词语的索引,(k->v)=>(v->k) w2vec = {word: model[word] for word in w2indx.keys()}#所有频数超过10的词语的词向量, (word->model(word))
时间: 2023-12-26 16:03:37 浏览: 151
这段代码定义了一个名为 `create_dictionaries()` 的函数,用于创建词典和词向量。函数包含两个参数,分别是 `model` 和 `combined`。`model` 是一个已经训练好的词向量模型,`combined` 是一个包含所有文本数据的列表。
函数首先检查 `combined` 和 `model` 是否都不为 `None`,然后使用 `gensim` 库创建一个 `Dictionary` 对象 `gensim_dict`。接着,使用 `doc2bow()` 方法将 `model.vocab` 中的所有词语添加到 `gensim_dict` 中。对于 `gensim_dict` 中的每个词语,将其添加到字典 `w2indx` 中,并且将该词语的索引值加 1,从而避免索引值为 0。最后,对于 `w2indx` 中的每个词语,将其对应的词向量添加到字典 `w2vec` 中。最终,函数返回 `w2indx` 和 `w2vec` 两个字典。其中,`w2indx` 是一个将词语映射为索引的字典,`w2vec` 是一个将词语映射为词向量的字典。
相关问题
def create_dictionaries(model=None, combined=None): ''' Function does are number of Jobs: 1- Creates a word to index mapping 2- Creates a word to vector mapping 3- Transforms the Training and Testing Dictionaries ''' if (combined is not None) and (model is not None): gensim_dict = Dictionary() gensim_dict.doc2bow(model.vocab.keys(), allow_update=True) # freqxiao10->0 所以k+1 w2indx = {v: k+1 for k, v in gensim_dict.items()}#所有频数超过10的词语的索引,(k->v)=>(v->k) w2vec = {word: model[word] for word in w2indx.keys()}#所有频数超过10的词语的词向量, (word->model(word)) def parse_dataset(combined): # 闭包-->临时使用 ''' Words become integers ''' data=[] for sentence in combined: new_txt = [] for word in sentence: try: new_txt.append(w2indx[word]) except: new_txt.append(0) # freqxiao10->0 data.append(new_txt) return data # word=>index combined=parse_dataset(combined) combined= sequence.pad_sequences(combined, maxlen=maxlen)#每个句子所含词语对应的索引,所以句子中含有频数小于10的词语,索引为0 return w2indx, w2vec,combined else: print( 'No data provided...')
这段代码定义了一个名为 `create_dictionaries` 的函数,它有两个参数 `model` 和 `combined`,分别表示 Word2Vec 模型和语料库数据。该函数的作用是:
1. 创建一个 word to index 的映射,将每个单词映射到一个整数值。
2. 创建一个 word to vector 的映射,将每个单词映射到其对应的词向量。
3. 转换训练集和测试集数据,将其转换为整数索引列表的形式。
如果 `model` 和 `combined` 参数都不为空,则会使用 gensim 库中的 Dictionary 类创建一个词袋模型,并将词袋模型中的单词和对应的索引添加到一个名为 `w2indx` 的字典中。然后,使用 Word2Vec 模型将每个单词映射到其对应的词向量,将其添加到一个名为 `w2vec` 的字典中。最后,使用闭包函数 `parse_dataset` 将语料库数据 `combined` 中的每个单词替换为其对应的索引值,从而将其转换为整数索引列表的形式。
如果 `model` 和 `combined` 参数中有一个为空,则会返回一个错误消息。
def word2vec_train(combined): model = Word2Vec(size=vocab_dim, min_count=n_exposures, window=window_size, workers=cpu_count, iter=n_iterations) model.build_vocab(combined) # input: list model.train(combined) model.save('C:/Users/22927/Desktop/1/model/Word2vec_model.pkl') index_dict, word_vectors,combined = create_dictionaries(model=model,combined=combined) return index_dict, word_vectors,combined
这段代码定义了一个名为 `word2vec_train()` 的函数,用于训练词向量模型和生成词典。函数包含一个参数 `combined`,表示输入的文本数据,是一个包含多个文本序列的列表。
函数首先使用 `Word2Vec()` 函数创建一个词向量模型 `model`,并设置了模型的一些参数,如词向量的维度 `size`、最小词频 `min_count`、窗口大小 `window`、使用的 CPU 数量 `workers` 和迭代次数 `iter`。接着,使用 `build_vocab()` 方法将文本数据 `combined` 中的词语添加到词向量模型 `model` 中。最后,使用 `train()` 方法对词向量模型 `model` 进行训练,并将训练好的模型保存到本地。同时,通过调用 `create_dictionaries()` 函数,生成词典 `index_dict` 和词向量 `word_vectors`,以及对文本数据进行整数序列转换,返回 `combined` 序列。
最终,函数返回 `index_dict`、`word_vectors` 和 `combined` 三个对象,其中,`index_dict` 是一个将词语映射为索引的字典,`word_vectors` 是一个将词语映射为词向量的字典,`combined` 是一个经过整数序列转换后的文本数据。
阅读全文