Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nlp 如何通过Gensim TaggedDocument()正确标记文档列表_Nlp_Gensim_Doc2vec - Fatal编程技术网

Nlp 如何通过Gensim TaggedDocument()正确标记文档列表

Nlp 如何通过Gensim TaggedDocument()正确标记文档列表,nlp,gensim,doc2vec,Nlp,Gensim,Doc2vec,我想通过Gensim TaggedDocument()标记文档列表,然后将这些文档作为Doc2Vec()的输入传递 我已经阅读了关于TaggedDocument的文档,但我不知道参数单词和标签的确切含义 我试过: texts = [[word for word in document.lower().split()] for document in X.values] texts = [[token for token in text] for text

我想通过
Gensim TaggedDocument()
标记文档列表,然后将这些文档作为
Doc2Vec()
的输入传递

我已经阅读了关于
TaggedDocument
的文档,但我不知道参数
单词
标签的确切含义

我试过:

texts = [[word for word in document.lower().split()]
          for document in X.values]

texts = [[token for token in text]
          for text in texts]

model = gensim.models.Doc2Vec(texts, vector_size=200)
model.train(texts, total_examples=len(texts), epochs=10)

但是我得到的错误是,“list”对象没有属性“words”

Doc2Vec
需要一个可匹配的文本集合,每个文本(形状类似于)示例
TaggedDocument
类,同时具有
words
标记
属性

words
可以是您的标记化文本(作为列表),但是
标记
应该是一个文档标记列表,应该通过
Doc2Vec
算法接收学习向量。通常,这些是唯一的ID,每个文档一个。(如果可以将普通int索引用作在其他地方引用文档或字符串ID的方式,则可以使用普通int索引。)请注意,
tags
必须是标记列表,即使每个文档只提供一个标记

您只是提供一个单词列表,从而生成错误

尝试只使用一行初始化
文本

texts = [TaggedDocument(
             words=[word for word in document.lower().split()],
             tags=[i]
         ) for i, document in enumerate(X.values)]
此外,如果在创建
Doc2Vec
时提供了
文本,则不需要调用
train()
。(通过在初始化时提供语料库,
Doc2Vec
将自动执行初始词汇发现扫描,然后执行指定数量的培训过程。)

您应该看看工作示例以获得灵感,例如
gensim
附带的
doc2vec lee.ipynb
runnable Jupyter笔记本。如果可以找到,它将是您的安装目录,但您也可以在
gensim
源代码存储库中查看(静态、不可运行)版本,网址为:


Doc2Vec
需要一个可容纳的文本集合,每个文本(形状类似于)示例
TaggedDocument
类,同时具有
单词和
标记
属性

words
可以是您的标记化文本(作为列表),但是
标记
应该是一个文档标记列表,应该通过
Doc2Vec
算法接收学习向量。通常,这些是唯一的ID,每个文档一个。(如果可以将普通int索引用作在其他地方引用文档或字符串ID的方式,则可以使用普通int索引。)请注意,
tags
必须是标记列表,即使每个文档只提供一个标记

您只是提供一个单词列表,从而生成错误

尝试只使用一行初始化
文本

texts = [TaggedDocument(
             words=[word for word in document.lower().split()],
             tags=[i]
         ) for i, document in enumerate(X.values)]
此外,如果在创建
Doc2Vec
时提供了
文本,则不需要调用
train()
。(通过在初始化时提供语料库,
Doc2Vec
将自动执行初始词汇发现扫描,然后执行指定数量的培训过程。)

您应该看看工作示例以获得灵感,例如
gensim
附带的
doc2vec lee.ipynb
runnable Jupyter笔记本。如果可以找到,它将是您的安装目录,但您也可以在
gensim
源代码存储库中查看(静态、不可运行)版本,网址为: