Python 3.5 TypeError上的Gensim 1.0.1:类型为';地图';没有len()?
我使用Anaconda安装了python3.5,使用pip安装了gensim1.0.1(支持python3)。运行gensim时,我遇到以下错误:Python 3.5 TypeError上的Gensim 1.0.1:类型为';地图';没有len()?,python,python-3.x,anaconda,gensim,Python,Python 3.x,Anaconda,Gensim,我使用Anaconda安装了python3.5,使用pip安装了gensim1.0.1(支持python3)。运行gensim时,我遇到以下错误: Exception in thread Thread-61: Traceback (most recent call last): File "/Users/mac/anaconda/lib/python3.5/threading.py", line 914, in _bootstrap_inner self.run() File "
Exception in thread Thread-61:
Traceback (most recent call last):
File "/Users/mac/anaconda/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/Users/mac/anaconda/lib/python3.5/threading.py", line 862, in run
self._target(*self._args, **self._kwargs)
File "/Users/mac/anaconda/lib/python3.5/site-packages/gensim/models/word2vec.py", line 838, in job_producer
sentence_length = self._raw_word_count([sentence])
File "/Users/mac/anaconda/lib/python3.5/site-packages/gensim/models/word2vec.py", line 755, in _raw_word_count
return sum(len(sentence) for sentence in job)
File "/Users/mac/anaconda/lib/python3.5/site-packages/gensim/models/word2vec.py", line 755, in <genexpr>
return sum(len(sentence) for sentence in job)
TypeError: object of type 'map' has no len()
线程thread-61中的异常:
回溯(最近一次呼叫最后一次):
文件“/Users/mac/anaconda/lib/python3.5/threading.py”,第914行,在内部引导中
self.run()
文件“/Users/mac/anaconda/lib/python3.5/threading.py”,第862行,运行中
自我目标(*自我参数,**自我参数)
job_producer中的文件“/Users/mac/anaconda/lib/python3.5/site packages/gensim/models/word2vec.py”,第838行
句子长度=自我。原始单词数([句子])
文件“/Users/mac/anaconda/lib/python3.5/site packages/gensim/models/word2vec.py”,第755行,输入原始单词数
返回金额(工作中句子的长度(句子)
文件“/Users/mac/anaconda/lib/python3.5/site packages/gensim/models/word2vec.py”,第755行,在
返回金额(工作中句子的长度(句子)
TypeError:类型为“map”的对象没有len()
导致此错误的代码来自。我正在将其移植到Python3,但出现了这个错误
我知道在Python3中,len(map)会导致错误,这是否意味着Gensim 1.0.1不支持Python3,尽管它表示支持?或者有一些隐藏的设置
有人知道怎么回事吗?谢谢。Gensim当然支持Python 3。您(或节点2vec)有责任向
Word2Vec()
提供您的句子列表
在这种情况下,必须向其传递一个包含行走的iterable,其中每个行走都是顶点列表:
walks = [list(map(str, walk)) for walk in walks] # convert each vertex id to a string
model = Word2Vec(walks, ...)
您要么运行为Python2.x编写的Python脚本,要么显式地将map对象传递到不应该传递的地方。仅从回溯来看,我们看不出情况是什么。我想说的是,您需要包含正在执行的代码。代码来自。我正在将它移植到python 3,但出现了这个错误。我知道python 3中的错误可能与@ukaszRogalski重复。我问的是关于Gensim的问题,因为这个版本支持Python 3。如果Gensim将
map
转换为list
本身,这将更有意义,这将是真正支持Python 3的版本。但我想这个答案也为最终用户提供了另一种解决方案。