gensim中TaggedDocument和TaggedLineDocument之间的区别?以及如何使用目录中的文件?

时间:2017-07-11 23:34:26

标签: nlp gensim word2vec text-classification doc2vec

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

我对TaggedDocument和TaggedLineDocument感到困惑。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

如果您的数据采用其他格式,则无法直接使用TaggedLineDocument,但这可能是一个有用的起点。如果您使用编号从0到文档计数的简单标记即可,则可以将格式转换为单个文件TaggedLineDocument

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