Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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
Python Gensim用大数字标记文档_Python_Gensim_Topic Modeling_Doc2vec - Fatal编程技术网

Python Gensim用大数字标记文档

Python Gensim用大数字标记文档,python,gensim,topic-modeling,doc2vec,Python,Gensim,Topic Modeling,Doc2vec,我想用映射到数据库中id属性的标记标记我的文档。 例如,ID也可以如下所示: 文档[0]就是一个例子 TaggedDocument(words=['blabla', 'request'], tags=[225616076]) 由于某些原因,它无法建立词汇表。尽管我只有33382个具有更高值的唯一ID/标记,但这并不重要,gensim写道我有“225616077个标记”(在日志中) 2018-07-30 12:07:59271:信息:收集所有单词及其计数 2018-07-30 12:07:592

我想用映射到数据库中id属性的标记标记我的文档。 例如,ID也可以如下所示:

文档[0]就是一个例子

TaggedDocument(words=['blabla', 'request'], tags=[225616076])
由于某些原因,它无法建立词汇表。尽管我只有33382个具有更高值的唯一ID/标记,但这并不重要,gensim写道我有“225616077个标记”(在日志中)

2018-07-30 12:07:59271:信息:收集所有单词及其计数
2018-07-30 12:07:59273:信息:进度:示例#0,处理0个单词(0/s),0个单词类型,0个标记
2018-07-30 12:07:59330:信息:进度:例如#1000,处理7974个单词(314086/s),1975个单词类型,225616077个标签
2018-07-30 12:07:59343:信息:进度:在2000年的例子中,处理了15882个单词(701054/s),2794个单词类型,225616077个标签
...
...  
2018-07-30 12:14:56454:信息:6765个字和20个维度的估计所需内存:19793760900字节
2018-07-30 12:14:56457:信息:重置层权重
---------------------------------------------------------------------------
MemoryError回溯(上次最近调用)
在()
---->1模型构建(文档)
我怎样才能解决这个问题?我不想从0开始,然后将其映射到更高的数字(无用地使用计算时间)。我还尝试将其标记为字符串(因此文档[0]是TaggedDocument(words=['blablabla','request'],tags=['225616076']),但它也不起作用


我正在检查gensim的代码,但自己无法找到解决方案。

如果您使用纯python
int
值作为文档标记,然后,代码假设您希望这些也是基础向量数组中的原始int索引,并且将分配一个足够大的向量数组来容纳最大的索引,即使许多较小的数字未被使用

这是一种优化,允许代码避免为那些从0开始编号的文本进行整洁标识的人构建通常的标记到索引的映射

如果您的ID从0开始不是连续的,并且不容易使其以这种方式工作,那么您可以使用字符串标记,代码将识别字符串标记,需要将其映射到唯一的索引位置,并且只会分配一个大小正好合适的向量数组

例如,您的
文档[0]
将是:

TaggedDocument(words=['blabla', 'request'], tags=[str(225616076)])

如果您使用普通python
int
值作为doc标记,那么代码假设您希望这些值也是底层向量数组中的原始int索引,并且将分配一个足够大的向量数组来容纳最大的索引,即使许多较小的数数没有使用

这是一种优化,允许代码避免为那些从0开始编号的文本进行整洁标识的人构建通常的标记到索引的映射

如果您的ID从0开始不是连续的,并且不容易使其以这种方式工作,那么您可以使用字符串标记,代码将识别字符串标记,需要将其映射到唯一的索引位置,并且只会分配一个大小正好合适的向量数组

例如,您的
文档[0]
将是:

TaggedDocument(words=['blabla', 'request'], tags=[str(225616076)])

谢谢,我检查了gensim的代码并意识到了优化。因此,我也尝试了使用字符串的“重新键入方法”。尽管如此,我忘了在字符串周围加括号…在这个问题(示例)中,我也用括号正确地回答了…:D aaaah,这就是生活:))谢谢你,我检查了gensim的代码并意识到了优化。因此,我也尝试了使用字符串的“重新键入方法”。尽管如此,我忘了在字符串周围加括号…在问题(示例)中,我也用括号正确地表达了…:D aaaah,这就是生命:))