李宏毅老师作业(四)用到的,需要训练一个词典,用到gensim。
安装完之后,打开终端: 此即为安装成功。
该对象表示用于训练嵌入的内部浅层神经网络。 在两种可用的训练模式(CBOW或SG)中,网络的语义略有不同,但是您可以将其视为具有单个投影和隐藏层的NN,并在语料库上对其进行训练。 然后将权重用作我们的嵌入(这意味着隐藏层的大小等于特征self.size的数量)。 参数解读:
sentences (iterable of iterables, optional) – 句子(可迭代的iterable,可选)–可迭代的句子可以只是令牌列表的列表,但是对于较大的语料库,请考虑直接从磁盘/网络流式传输句子的可迭代。
corpus_file (str, optional) –– LineSentence格式的语料库文件的路径。 您可以使用此参数而不是句子来提高性能。 仅需要传递句子或corpus_file自变量中的一个(或者不传递任何一个,在这种情况下,模型将保持未初始化状态)。
size(int, optional) –是gensim Word2Vec将单词映射到的N维空间的维数(N)。较大的值需要更多的训练数据,但可以产生更好(更准确)的模型。 合理的值在数十到数百之间。
window (int, optional)–句子中当前单词和预测单词之间的最大距离。
min_count (int, optional) –忽略所有总频率低于此频率的单词。
workers (int, optional) –使用这些许多工作线程来训练模型(=使用多核计算机进行更快的训练)。worker,最后一个主要参数(此处为完整列表)用于训练并行化,以加快训练速度.
sg ({0, 1}, optional) -训练算法:1表示skip-gram; 否则CBOW。
iter (int, optional)–语料库上的迭代次数(epochs)。
min_count --用于修剪内部字典。 在十亿个单词的语料库中仅出现一次或两次的单词可能是有趣的错别字和垃圾。 此外,没有足够的数据来对这些单词进行任何有意义的训练,因此最好忽略它们:
default value of min_count=5该对象实质上包含单词和嵌入之间的映射。 训练后,它可以以各种方式直接用于查询那些嵌入。
该对象表示模型的词汇表(有时在gensim中称为Dictionary)。 除了跟踪所有唯一单词之外,此对象还提供其他功能,例如构造霍夫曼树(常用单词更靠近词根)或丢弃极少见的单词。
0.Bag-of-words 这个模型将每个文档转换为固定长度的整数矢量。 例如,给定句子:
John likes to watch movies. Mary likes movies too.John also likes to watch football games. Mary hates football.模型输出向量:
- [1, 2, 1, 1, 2, 1, 1, 0, 0, 0, 0] - [1, 1, 1, 1, 0, 1, 0, 1, 2, 1, 1]每个向量有10个元素,其中每个元素计算文档中特定单词出现的次数。元素的顺序是任意的。在上面的示例中,元素的顺序对应于以下单词:[“ John”,“ likes”,“ to”,“ watch”,“ movies”,“ Mary”,“ too”,“ also”,“ football” “,”game“,”hate“]。
Bag-of-words 出奇地有效,但有几个缺点。
首先,他们会丢失所有有关单词顺序的信息:“约翰喜欢玛丽”和“玛丽喜欢约翰”对应于相同的向量。有一个解决方案:bag of n-grams法模型考虑长度为n的词组来表示文档为固定长度的向量,以捕获本地词序,但存在数据稀疏和高维的问题。
其次,该模型不会尝试学习基础单词的含义,因此,向量之间的距离并不总是反映出含义上的差异。 Word2Vec模型解决了第二个问题。
1.Introducing: the Word2Vec Model
Word2Vec是一种更新的模型,它使用浅层神经网络将单词嵌入到低维向量空间中。 结果是一组词向量,其中在向量空间中靠在一起的向量根据上下文具有相似的含义,而彼此远离的词向量具有不同的含义。 例如,强者和强者将紧密相连,而强者和巴黎将相距较远。
该模型有两个版本,Word2Vec类同时实现了这两个版本: 1.Skip-grams (SG) 2.Continuous-bag-of-words (CBOW)
例如,Word2Vec Skip-gram模型采用成对的对(word1,word2),该对是通过在文本数据之间移动窗口而生成的,并根据给定输入单词的合成任务来训练一个1层神经网络,这给了我 输入附近单词的预测概率分布。 虚拟的单词 one-hot经过“投影层”到达隐藏层。 这些投影权重在以后被解释为词嵌入。 因此,如果隐藏层具有300个神经元,则该网络将为我们提供300维单词嵌入。
Continuous-bag-of-words Word2vec与skip-gram模型非常相似。 它也是一个1层神经网络。 合成训练任务现在使用多个输入上下文单词的平均值,而不是Skip-gram中的单个单词来预测中心单词。 同样,将权重词转换为与隐藏层相同宽度的平均向量的投影权重也被解释为词嵌入。