【问题标题】:Set the parameters of Word2Vec for a practical example设置Word2Vec的参数为一个实例
【发布时间】:2021-09-14 10:24:50
【问题描述】:

我有一个包含大约 280 万条文本的数据库(更准确地说是推文,所以它们是短文本)。我将干净的推文(删除主题标签、标签、停用词......)放在名为sentences 的标记列表中(因此它包含每条推文的标记列表)。

经过这些步骤,如果我写了

model = Word2Vec(sentences, min_count=1)

我获得了大约 400,000 个单词的词汇。

这只是一个尝试,我需要一些帮助才能以最合适和一致的方式设置Word2Vec 的参数(size、window、min_count、workers、sg) .

考虑到我的目标是使用

model.most_similar(terms)(其中terms 是单词列表)

在标记列表sentences 中查找与terms 中包含的单词最相似的单词。

terms 中的词属于同一主题,我想看看文中是否还有其他与主题有关的词。

【问题讨论】:

    标签: python nlp gensim word2vec word-embedding


    【解决方案1】:

    一般来说,通常的做法是:

    • 从默认值开始,让事情最初在基线水平上运行,也许只在数据的更快处理子集上运行。
    • 为您的目的开发一种客观的方法来确定一个模型是否优于另一个模型。这可能开始于一些有代表性的探针的一系列临时的、手动的结果比较 - 但应该成为一个可以自动为每个变体模型评分的过程,根据“更好”的模型给予更高的分数到一些定性的、可重复的过程。
    • 要么逐个修改参数,要么对许多排列进行大量搜索,以找出哪个模型最适合您的评分。

    另外:word2vec 结果的质量几乎总是通过丢弃非常罕见的单词来提高,例如那些只出现一次的单词。 (min_count 的默认值是 5,这是有充分理由的。)

    该算法不能从只出现一次或几次的单词中生成好的词向量。它需要多个使用对比的例子。但是,鉴于语料库中单词使用的典型 Zipfian 分布,有很多这样的稀有单词。丢弃它们可以加快训练速度,缩小模型,并消除其他词训练中本质上的“噪音”——让剩余的词向量变得更好。 (如果你真的需要这些词的向量——收集更多数据。)

    【讨论】:

    • 感谢您的回复。对我来说,关注参数的含义并不容易。例如:如果size 默认为100,考虑到我正在处理的数据的数量和类型,我如何知道通过增加或减少它是否可以获得更好的结果?换句话说:是的,我必须测试各种参数组合。但是我必须往哪个方向去选择它们呢?
    • 嗯,你必须有一些想法,对于数据/单词的某些子集,你想看到什么样的most_similar() 结果。无论出于何种原因,什么结果有用?然后,您运行多个模型并在您对什么是好的结果抱有强烈期望的情况下比较它们的结果 - 当一个模型在这些情况下表现良好时,您对它给出的所有其他结果给予一些有条件的、合格的信任,因为它有些有用(除非/直到你可以确认它可以做得更好)。
    • 该过程通常在一开始是临时的 - 只是查看替代模型的结果,以寻找似乎更好的方法。但是调整参数的唯一方法是制定一些标准来测试一个或另一个模型的结果是否“更好”。通常,您希望为评分模型找到或创建一些良好结果的“黄金标准”,用可以自动化、重复和改进的东西来代替临时的旁观过程随着时间的推移。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    相关资源
    最近更新 更多