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