2

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

我对 TaggedDocument 和 TaggedLineDocument 感到困惑。

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

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

4

1 回答 1

1

TaggedDocument是一个说明性类,用于表示Doc2Vec可以作为文本示例的对象。您不需要使用它——您只需要提供具有words字符串标记列表属性的对象,以及tags与文档相关联的标记列表属性。(也就是说,您可以将文本示例提供为像 'shape' 或 'duck-typed' 这样的对象TaggedDocument。)

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

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

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

于 2017-07-12T01:36:48.960 回答