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"]]] 

无效。