【问题标题】:Difference between TaggedDocument and TaggedLineDocument in gensim? and How to work with files in a directory?gensim中TaggedDocument和TaggedLineDocument的区别?以及如何处理目录中的文件?
【发布时间】:2017-12-16 04:41:44
【问题描述】:

我是 doc2vec 的新手,我希望使用它对一组文本进行分类。

我对 TaggedDocument 和 TaggedLineDocument 感到困惑。

1) 两者有什么区别? TaggedLineDocument 是 TaggedDocument 的集合吗?

2) 如果我有一个包含所有文件的目录,如何为它们生成特征向量?我应该创建一个新文件,其中每一行都包含目录中文件的文本吗?

【问题讨论】:

  • 最好提出两个单独的问题,并在必要时将它们链接起来。 “如何处理目录中的文件?”没有说出你想要完成的事情。

标签: nlp gensim word2vec text-classification doc2vec


【解决方案1】:

TaggedDocument 是一个说明性类,用于表示Doc2Vec 可以作为文本示例的对象。您不需要使用它——您只需要提供具有words 属性(字符串标记列表)和tags 属性(与文档关联的标签列表)的对象。 (也就是说,您可以将文本示例提供为像 TaggedDocument 这样的“形状”或“鸭式”对象。)

TaggedLineDocument 是一个实用程序类,用于获取一个文件,该文件每行有一个文档,其标记词已经用空格分隔,并将其转换为 TaggedDocuments 的可迭代集合,其中每个文档都有其作为仅标记其整数行号。因此,这是将文本流式传输到Doc2Vec 的最小示例,用于将单个 doc-per-line 文本文件作为输入的常见情况,并且不需要自定义 per-doc 标记/ID。

如果您的数据是其他格式,则不能直接使用TaggedLineDocument,但它可能是一个有用的起点。如果您可以使用从 0 到文档计数的简单标签,则可以将格式转换为 TaggedLineDocument 期望的单个文件。

或者,特别是如果您需要使用自定义标签,您可以编写自己的类,将您的数据源(无论是一组文件、网络资源还是数据库)转换为一个可迭代对象,该对象发出一个 @每个示例的 987654331@-like 对象。

【讨论】:

    猜你喜欢
    • 2017-05-02
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多