Word2Vec error: TypeError: unhashable type: 'list'
Word2Vec error: TypeError: unhashable type: 'list'
我现在正在试验肽序列和 NLP,并尝试使用 word2vec 嵌入肽序列。
肽以长字符串格式出现(例如:'KCNTATCATQRLANFLVRSSNNLGPVLPPTNVGSNTY'),因此我将肽序列拆分为三元组。但是当我试图嵌入它们时,我不断收到这个错误:TypeError: unhashable type:'list.'
不确定如何解决此错误,因为我不太明白为什么会出现此错误。我的代码链接 here,这里是完整的错误输出:
TypeError Traceback (most recent call last)
<ipython-input-17-966c68819734> in <module>()
6
7 # embeddings pos
----> 8 w2vpos = Word2Vec(kmersdatapos, size=EMB_DIM,window=5,min_count=5,negative=15,iter=10,workers=multiprocessing.cpu_count())
4 frames
/usr/local/lib/python3.7/dist-packages/gensim/models/word2vec.py in _scan_vocab(self, sentences, progress_per, trim_rule)
1553 )
1554 for word in sentence:
-> 1555 vocab[word] += 1
1556 total_words += len(sentence)
1557
TypeError: unhashable type: 'list'
如有任何建议,我们将不胜感激!
您需要将字符串列表传递给 gensim 的 Word2Vec。在您的代码中,您将 kmersdatapos 传递给 Word2Vec,它是字符串列表的列表。
例如:
corpus = [["lorem", "ipsum"], ["dolor"], ["sit", "amet"]]
是 Word2Vec 函数的有效参数。然而,
corpus = [[["lorem", "ipsum"], ["dolor"]], [["sit", "amet"]]]
无效。
我现在正在试验肽序列和 NLP,并尝试使用 word2vec 嵌入肽序列。
肽以长字符串格式出现(例如:'KCNTATCATQRLANFLVRSSNNLGPVLPPTNVGSNTY'),因此我将肽序列拆分为三元组。但是当我试图嵌入它们时,我不断收到这个错误:TypeError: unhashable type:'list.'
不确定如何解决此错误,因为我不太明白为什么会出现此错误。我的代码链接 here,这里是完整的错误输出:
TypeError Traceback (most recent call last)
<ipython-input-17-966c68819734> in <module>()
6
7 # embeddings pos
----> 8 w2vpos = Word2Vec(kmersdatapos, size=EMB_DIM,window=5,min_count=5,negative=15,iter=10,workers=multiprocessing.cpu_count())
4 frames
/usr/local/lib/python3.7/dist-packages/gensim/models/word2vec.py in _scan_vocab(self, sentences, progress_per, trim_rule)
1553 )
1554 for word in sentence:
-> 1555 vocab[word] += 1
1556 total_words += len(sentence)
1557
TypeError: unhashable type: 'list'
如有任何建议,我们将不胜感激!
您需要将字符串列表传递给 gensim 的 Word2Vec。在您的代码中,您将 kmersdatapos 传递给 Word2Vec,它是字符串列表的列表。 例如:
corpus = [["lorem", "ipsum"], ["dolor"], ["sit", "amet"]]
是 Word2Vec 函数的有效参数。然而,
corpus = [[["lorem", "ipsum"], ["dolor"]], [["sit", "amet"]]]
无效。