实际例子设置Word2Vec的参数
Set the parameters of Word2Vec for a practical example
我有一个包含大约 280 万条文本(更准确地说是推文,因此它们是短文本)的数据库。我将干净的推文(删除主题标签、标签、停用词...)放入名为 sentences
的标记列表中(因此它包含每条推文的标记列表)。
经过这些步骤,如果我写
model = Word2Vec(sentences, min_count=1)
我获得了大约 400,000 个单词的词汇量。
这只是一次尝试,我需要一些帮助来设置参数 (size
、window
、min_count
、workers
、sg
) 的 Word2Vec
以最合适和一致的方式。
考虑一下我的目标是使用
model.most_similar(terms)
(其中 terms
是单词列表)
在标记列表 sentences
中查找与 terms
中包含的词最相似的词。
terms
中的词属于同一主题,我想看看文本中是否还有其他词可能与该主题有关。
一般来说,通常的做法是:
- 从默认值开始,让事情最初在基线水平上工作,也许只在数据的更快工作子集上工作。
- 根据您的目的,开发一种 objective 方法来确定一个模型是否优于另一个模型。这可能从一些有代表性的探针的结果的一堆临时的、手动的比较开始——但是 应该 成为一个可以自动对每个变体模型进行评分的过程,给 'better' 根据一些定性的、可重复的过程建模。
- 要么一个一个地修改参数,要么运行 对许多排列进行大量搜索,以找出哪个模型在您的得分上表现最好。
另外:word2vec 结果的质量几乎总是通过丢弃最稀有的单词(例如只出现一次的单词)来提高。 (min_count
的默认值是 5
是有充分理由的。)
该算法无法从只出现一次或几次的词中生成好的词向量。它 需要 多个对比示例来说明其用法。但是,鉴于语料库中单词用法的典型 Zipfian 分布,有很多这样的稀有单词。丢弃它们可以加快训练速度,缩小模型,并从其他单词的训练中消除本质上 'noise' 的内容 - 让那些剩余的单词向量更好。 (如果你真的需要这些词的向量——收集更多数据。)
我有一个包含大约 280 万条文本(更准确地说是推文,因此它们是短文本)的数据库。我将干净的推文(删除主题标签、标签、停用词...)放入名为 sentences
的标记列表中(因此它包含每条推文的标记列表)。
经过这些步骤,如果我写
model = Word2Vec(sentences, min_count=1)
我获得了大约 400,000 个单词的词汇量。
这只是一次尝试,我需要一些帮助来设置参数 (size
、window
、min_count
、workers
、sg
) 的 Word2Vec
以最合适和一致的方式。
考虑一下我的目标是使用
model.most_similar(terms)
(其中 terms
是单词列表)
在标记列表 sentences
中查找与 terms
中包含的词最相似的词。
terms
中的词属于同一主题,我想看看文本中是否还有其他词可能与该主题有关。
一般来说,通常的做法是:
- 从默认值开始,让事情最初在基线水平上工作,也许只在数据的更快工作子集上工作。
- 根据您的目的,开发一种 objective 方法来确定一个模型是否优于另一个模型。这可能从一些有代表性的探针的结果的一堆临时的、手动的比较开始——但是 应该 成为一个可以自动对每个变体模型进行评分的过程,给 'better' 根据一些定性的、可重复的过程建模。
- 要么一个一个地修改参数,要么运行 对许多排列进行大量搜索,以找出哪个模型在您的得分上表现最好。
另外:word2vec 结果的质量几乎总是通过丢弃最稀有的单词(例如只出现一次的单词)来提高。 (min_count
的默认值是 5
是有充分理由的。)
该算法无法从只出现一次或几次的词中生成好的词向量。它 需要 多个对比示例来说明其用法。但是,鉴于语料库中单词用法的典型 Zipfian 分布,有很多这样的稀有单词。丢弃它们可以加快训练速度,缩小模型,并从其他单词的训练中消除本质上 'noise' 的内容 - 让那些剩余的单词向量更好。 (如果你真的需要这些词的向量——收集更多数据。)