我是 doc2vec 的新手,我希望使用它对一组文本进行分类。
我对 TaggedDocument 和 TaggedLineDocument 感到困惑。
1)两者有什么区别?TaggedLineDocument 是 TaggedDocuments 的集合吗?
2)如果我有一个包含所有文件的目录,如何为它们生成特征向量?我应该创建一个新文件,其中每一行都包含目录中文件的文本吗?
我是 doc2vec 的新手,我希望使用它对一组文本进行分类。
我对 TaggedDocument 和 TaggedLineDocument 感到困惑。
1)两者有什么区别?TaggedLineDocument 是 TaggedDocuments 的集合吗?
2)如果我有一个包含所有文件的目录,如何为它们生成特征向量?我应该创建一个新文件,其中每一行都包含目录中文件的文本吗?
TaggedDocument
是一个说明性类,用于表示Doc2Vec
可以作为文本示例的对象。您不需要使用它——您只需要提供具有words
字符串标记列表属性的对象,以及tags
与文档相关联的标记列表属性。(也就是说,您可以将文本示例提供为像 'shape' 或 'duck-typed' 这样的对象TaggedDocument
。)
TaggedLineDocument
是一个实用程序类,用于获取一个文件,该文件每行有一个文档,其标记词已经用空格分隔,并将其转换为TaggedDocument
s 的可迭代集合,其中每个文档都有其唯一的整数行号标记。因此Doc2Vec
,对于将单个 doc-per-line 文本文件作为输入的常见情况,这是将文本流式传输到 的最小示例,并且不需要自定义 per-doc 标记/ID。
如果您的数据是其他格式,则不能TaggedLineDocument
直接使用,但它可能是一个有用的起点。如果您可以使用从 0 到文档计数的简单标签,您可以将格式转换为TaggedLineDocument
预期的单个文件。
或者,特别是如果您需要使用自定义标签,您将编写自己的类,将您的数据源(无论是一组文件、网络资源还是数据库)转换为一个可迭代对象,该对象发出类似对象TaggedDocument
的对象每个例子。