Python 3.5 TypeError上的Gensim 1.0.1:类型为';地图';没有len()?

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 "

我使用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 "/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的版本。但我想这个答案也为最终用户提供了另一种解决方案。