Gensim 3.4.0 Word2Vec类型错误:修改代码后仍报错求助
解决Gensim 3.4.0 Word2Vec中的
unsupported operand type(s) for +: 'int' and 'str'错误 我来帮你搞定这个问题——你遇到的两次错误其实都是参数传递的问题,咱们一步步理清楚:
第一次错误的根源
最初的unsupported operand type(s) for +: 'int' and 'str'错误,是因为原代码里尝试把字符串类型的wv.index2word[i]和整数类型的self.seed直接用+拼接,Python不允许不同类型的这种操作,自然就报错了。
你修改后仍报错的原因
你改成了:
wv.vectors[i] = self.seeded_vector( "".join(str(wv.index2word[i]),str(self.seed)), wv.vector_size)
这里的问题出在str.join()方法的使用上——join()只接受一个可迭代对象(比如列表、元组)作为参数,而你直接传了两个独立的字符串参数,这就触发了新的TypeError。
正确的修改方案
你可以用以下几种方式正确拼接字符串,任选其一即可:
方式1:用+直接拼接(最直观)
wv.vectors[i] = self.seeded_vector(str(wv.index2word[i]) + str(self.seed), wv.vector_size)
方式2:给join()传一个可迭代对象
把两个字符串放到列表里传给join():
wv.vectors[i] = self.seeded_vector("".join([str(wv.index2word[i]), str(self.seed)]), wv.vector_size)
方式3:用f-string(Python 3.6+支持,更简洁)
wv.vectors[i] = self.seeded_vector(f"{wv.index2word[i]}{self.seed}", wv.vector_size)
额外建议:尽量避免修改源码
修改第三方库的源码不是长久之计,后续环境升级或重装库都会丢失你的修改。Gensim 3.4.0是比较老旧的版本了,这类字符串拼接的问题在后续更新版本中已经被修复,建议你考虑升级Gensim到较新的稳定版本,从根源上避免这类问题。
内容的提问来源于stack exchange,提问作者TheDream
相关产品推荐
相关产品推荐

