【问题标题】:What does build_vocab() do exactly?build_vocab() 究竟做了什么?
【发布时间】:2020-12-18 00:58:05
【问题描述】:

我正在尝试构建一个 Doc2Vec 模型。我有一个带有标签的句子列表,使用 Gensim 的 LabeledSentence() 函数进行标记。建立模型后,我看到他们在训练模型之前对标记的句子使用了 build_vocab()。

谁能解释一下 build_vocab() 的作用以及如果我不使用它会发生什么!?

请查看以下图片:

labeled sentences

model

【问题讨论】:

  • 欢迎来到 Stackoverflow。如果您没有得到答案,这通常是因为您没有以非常清晰和详细的方式提问。请添加更多信息,然后您将产生更好的影响。
  • @MaxMuster,在一个准确、完整的答案已经做出几个小时后,这是一个奇怪的批评。

标签: python-3.x nlp gensim doc2vec


【解决方案1】:

build_vocab() 步骤是模型如何发现所有可能的单词/doc-tags 的集合——在单词的情况下,找出哪些单词出现的次数超过了min_count 次。

您必须使用它:尝试训练尚未通过该发现步骤的模型会出错。

(如果您使用模型实例化的形式在创建对象时提供您的语料库,则build_vocab()train() 将自动为您调用。)

另外关于你提到LabeledSentence

要及时了解首选术语/类型,您应该使用 TaggedDocument 类。单个训练项目被描述为文档而不是句子更好,并且在模型中,它们的整个文本 doc-vector 键称为标签,而不是标签。 (在某些情况下,它们也可能是分类器使用的那种标签,但并非总是如此,而且最常见的标签是每个文档的唯一 ID。因此,代码中首选术语“标签”以阻止混淆这些键 - for-doc-vectors 和其他可能是“标签”的东西。)

LabeledSentence 类是一个较旧的名称,现在只是 TaggedDocument 的别名。因此将其用作名称将起作用,但与其余代码不匹配。)

【讨论】:

  • 非常感谢您的回答真的很有帮助
猜你喜欢
  • 2012-07-23
  • 2016-09-10
  • 2023-03-15
  • 2012-10-17
  • 2021-06-04
  • 1970-01-01
  • 2018-07-30
  • 2019-10-06
  • 2021-01-01
相关资源
最近更新 更多