word2vec,使用文档正文或关键字作为训练语料库

问题描述 投票:0回答:2

我想使用每个文档的关键字和类别的无序列表来训练word2vec模型。因此,我的词汇量很少,大约只有2.5k个令牌。

如果在培训步骤中使用文档中的实际句子,可以提高性能吗?

来自示例:

doc_keywords = ['beach', 'holiday', 'warm']
doc_body = 'Going on a beach holiday it can be very warm'

如果使用完整的文档有好处,有人可以解释为什么会这样吗?

由于该模型预测了文档中的下一个单词,如果very -> warm不在我的词汇范围内,所以将very当作两个经常在一起的单词来学习,对它的好处是什么?

machine-learning nlp gensim word2vec doc2vec
2个回答
1
投票

我的笔记可以归纳为以下几点:

  • 首先,我认为传递关键字列表对gensim.models.Word2Vec模型没有任何帮助。正如您所说,使用word2vec的原因是为了以某种方式了解周围的单词;如何使用随机的关键字列表来完成这项工作?

  • 第二,词汇在文档中应该是相同的单词。因此,您的词汇表中应包含very

  • 您使用的数据越多,模型就越有用。因此,2500个令牌还不够大。例如,word2vec的第一个版本是Google在2014/2015年发布的Skipgram model。 Google使用的词汇约为692,000个单词。

  • 可以使用word2vec的两个版本:“跳过图”和“连续单词袋(CBOW)”。两者都取决于周围的单词。您可以查看我的答案here,以获取有关每个答案的工作方式的更多信息。


0
投票

您的数据集似乎很小–可能太小而无法期望到好word2vec向量。但是,一个小的数据集至少意味着不需要花费太多时间来尝试许多不同的方法。

因此,最佳答案(也是唯一一个真正考虑到数据和项目目标中可能存在的唯一性的答案):在仅接受培训时,针对特定项目的需求,您会得到更好的最终单词向量吗?关键字还是更长的文档?

使用全文的两个潜在优势来源:

  • 那些不太有趣的词可能仍然有助于弄清整个向量空间中的含义的微妙之处。例如,当这些单词被迫预测彼此不同比例出现的其他相关单词时,'warm''hot'之间的对比可能会变得更加清晰。 (但是,word2vec向量的这种质量需要大量微妙的实际用法示例,因此,在较小的数据集中可能无法获得这种好处。)

  • 使用真实文本会保留原始的邻近影响-彼此靠近的词会产生更大的影响。 “仅关键字”方法可能会扰乱那些原始位置,具体取决于您如何将原始全文转换为简化关键字。 (特别是,您肯定not总是要按某种数据库排序顺序报告关键字–因为这往往会在恰好彼此相邻排序而不是次于关键字出现的关键字之间产生虚假的影响-以自然语言互相交流。)

另一方面,包含更多的单词会使模型变大而训练变慢,这可能会限制您可以进行的训练或实验的数量。而且,保留非常少见的单词(没有足够多的用法示例来自己获取好的单词向量)往往会像“噪音”一样起作用,从而削弱了其他单词向量的质量。 (这就是为什么丢弃稀有单词,将其min_count设置为默认值5或在较大的主体中更大的原因几乎总是一个好主意。)

因此,没有确定哪个更好的答案:不同的因素以及其他数据/参数/目标选择将以不同的方式出现。您将要尝试多种方式。

© www.soinside.com 2019 - 2024. All rights reserved.