【问题标题】:How to explain gensim word2vec output?如何解释 gensim word2vec 输出?
【发布时间】:2021-04-14 17:37:56
【问题描述】:

我运行以下代码,只是想知道为什么“曝光”的前 3 个最相似的词不包括“充电”和“借出”?

from gensim.models import Word2Vec
corpus = [['total', 'exposure', 'charge', 'lend'],
          ['customer', 'paydown', 'rate', 'months', 'month']]
gens_mod = Word2Vec(corpus, min_count=1, vector_size=300, window=2, sg=1, workers=1, seed=1)
keyword="exposure"
gens_mod.wv.most_similar(keyword)

Output:
[('customer', 0.12233059108257294),
 ('month', 0.008674687705934048),
 ('total', -0.011738087050616741),
 ('rate', -0.03600010275840759),
 ('months', -0.04291829466819763),
 ('paydown', -0.044823747128248215),
 ('lend', -0.05356598272919655),
 ('charge', -0.07367636263370514)]

【问题讨论】:

    标签: python nlp gensim word2vec word-embedding


    【解决方案1】:

    word2vec 算法仅对大量训练数据有用且有价值,其中每个感兴趣的词都有各种现实的、微妙对比的用法示例。

    玩具大小的数据集不会显示其价值。设置min_count=1 总是一个坏主意。而且,尝试从只有 9 个词、9 个唯一词以及大多数具有完全相同邻居的词的语料库中训练 300 维词向量是荒谬的。

    在更真实的数据集上试一试——数以万计的独特词,都有多个用法示例——你会看到更直观正确的相似性结果。

    【讨论】:

    • 如何确定min_count的值?
    • 如果可能的话,至少坚持使用默认的min_count=5。随着您的语料库变大,尝试更高的值以缩小最终模型的 RAM 大小和训练时间。在某些时候,您可能会发现min_count 的值更高 值会提高对最终模型质量的基于任务的实际评估。
    • 评估应该由您使用 word2vec 的特定目的来驱动。理想情况下,您为您的预期用途制定一些预期/理想结果的起始集,并根据它们满足这些探测的程度测试模型 - 理想情况下,它们是其他未来未测试案例的代表集。随着时间的推移,通常会使用棘手的新案例来扩大评估 - 当您意识到早期/临时的东西并没有涵盖所有重要案例时。
    • 有一些常用的词向量的相似度排序或类比解决标准评估 - 但它们非常狭窄。例如,许多与 word2vec 相关的论文都使用了原始 word2vec 论文中的一组question-words.txt 类比,并且 Gensim 在方法中对此提供了支持:radimrehurek.com/gensim/models/… - 但在这方面得分最高的词向量可能在常见的分类或信息检索任务上做得更糟!所以,通常最好使用你自己的 eval。
    • 向量大小没有硬性规定,但通常更大的训练数据和更大的词汇表支持更大的向量。非常粗略地说,我认为向量大小不应该比词汇表中唯一单词数量的平方根大得多。所以我不会尝试用少于 10000 个单词的词汇表制作 100 维向量(每个都有很多用法示例),而常用的 300-400 维度确实应该由 100k-150k 个单词的唯一词汇表来支持或者更多。 (300 维 GoogleNews 向量用于包含 300 万个唯一单词的词汇表。)
    猜你喜欢
    • 2017-07-11
    • 2020-11-15
    • 2017-03-20
    • 2017-07-22
    • 2019-07-01
    • 2017-09-06
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    相关资源
    最近更新 更多