错误设置具有序列余弦相似度的数组元素-word2vec

问题描述

import gensim
import gensim.downloader as api
from gensim.models import Word2Vec
from gensim.scripts.glove2word2vec import glove2word2vec

PATH_TO_glove = "Desktop/glove.840B.300d.txt"

tmp_file = "glove.840B.300d.txt"
glove2word2vec(PATH_TO_glove,tmp_file)
glove = gensim.models.KeyedVectors.load_word2vec_format(tmp_file)


from collections import Counter
import itertools

def map_word_frequency(document):
    return Counter(itertools.chain(*document))
    
def get_sif_feature_vectors(sentence1,word_emb_model=glove):
     
    sentence1 = [token for token in sentence1.split() if token in word_emb_model.wv.vocab]
    word_counts = map_word_frequency(sentence1)
    embedding_size = 300 # size of vectore in word embeddings
    a = 0.001
   
    sentence_set=[]
    for sentence in [sentence1]:
        vs = np.zeros(embedding_size)
        sentence_length = len(sentence)
        for word in sentence:
            a_value = a / (a + word_counts[word]) # smooth inverse frequency,SIF
            vs = np.add(vs,np.multiply(a_value,word_emb_model.wv[word])) # vs += sif * word_vector
        vs = np.divide(vs,sentence_length) # weighted average
        vs = vs.reshape(1,-1)
        sentence_set.append(vs)

    return sentence_set

当我尝试将其应用于熊猫数据框列['keywords']以通过使用余弦找到用户间的语义相似性时:

wVmatrix = df['keywords'].apply(lambda x: get_sif_feature_vectors(x))
print(wVmatrix)
0     [[[-0.10886521415574084,0.2032701931944968,-0.08198442006518027,-0.03467032436901384,-0.04342277257953855,0.09157805443029196,0.07568680893896475,0.07284018389135738,0.07311643708876225,1.0489765371107564,-0.1511725035266479,-0.026639054595587193,0.0006114085825036511,0.007909130789002908,-0.010508282912832212,0.11735277819960914,-0.19163438423765966,1.2435492750391088,-0.054...
1     [[[-0.07709486720690985,0.17508685514112554,0.05030799036413477,-0.027105095057786133,-0.12451376248853845,0.09941462883173087,0.03358985623365373,-0.02186206785406848,0.08679442650065841,1.0907445949638144,-0.0884125119315354,-0.09856888995653434,0.09563151933259213,0.057987571613955756,-0.10055754429852347,0.08846790212702599,-0.09928034294360198,1.5383162772413899,-0.11035...
2     [[[-0.10249654938273346,0.04023429514386776,-0.03926428124963717,0.06298783163385045,0.028903706970594908,0.11990027635576098,0.10089588221200044,0.06024966983328967,0.06636111762909054,1.0474815607639898,-0.0452453444910183,0.08984878715813592,0.05720627631148509,-0.031275415328078406,-0.03130472363902693,0.1639790703987175,-0.1313492120230655,1.4142247175646303,-0.086813935...
3     [[[-0.07524129931678201,-0.009919541887938976,0.025541433464520827,0.11370913397481704,0.07778058025881752,-0.015595937800639264,0.042768848759539006,0.04880895273893472,0.13504512186676682,1.3520784507785644,-0.10556908584545022,-0.014883209801428801,-0.007448112325078541,0.0807135236234619,-0.07968868304148212,0.04322252142197498,-0.16491246703805376,1.6261482592020835,-0.1...
4     [[[-0.0812290875226221,0.1697498739879756,0.013832208722951746,-0.049115214277392315,-0.19101990850403983,0.02263688036216011,0.0005506993664570495,0.03746407371372213,0.07222470476859631,1.2004478275517592,-0.09423743673457503,-0.20526181041853,0.04280603210598136,0.08628815213983512,-0.12111231099930247,0.16757217909642716,-0.11215096217011496,1.5593154345199565,-0.18927317...
5     [[[-0.2058139389562534,0.27749013054616206,0.30492811621643784,0.05833777309985968,-0.15142781931975083,0.09761063173049833,0.043418524764114765,0.12188177837467776,0.056187910426737424,1.0283844158416842,0.06672925653117823,-0.17897675457842102,0.09682739003584152,0.12392790521290607,-0.1744750017391109,0.020714899706767827,-0.07556120872997292,1.437209625433131,-0.226636636...
6     [[[-0.15251797768959469,0.10358390897912112,0.0766241972246686,-0.039620176429957764,0.005999934898577947,0.0664615209383636,0.003973869871670059,-0.17995007137622412,0.0677006012124702,1.5230585707086575,-0.17612534240571018,-0.10156269643581084,0.02118016518900915,0.07153854058031171,-0.15600015615388058,0.014200402026097597,-0.12938808548916972,1.3839700437903257,-0.013592...
7     [[[-0.08661238838477749,0.017792132537154927,-0.0006151993764132632,-0.005902673723862728,-0.11084230863072525,0.0651830323699239,0.04134883228134143,0.1342172188823484,0.07704514436444908,0.8585319707409382,-0.0015910141137387276,-0.0070053951167011515,-0.021310855285490846,-0.01871756910615936,0.01696463629724183,0.09907729700737361,-0.03929714337232788,1.5028330138685788,-...

然后:

from sklearn.metrics.pairwise import cosine_similarity
def get_cosine_similarity(feature_vec_1):    
    return cosine_similarity(feature_vec_1.reshape(1,-1))[0]

我收到错误

 setting an array element with a sequence.

我有两个 culmens,一个用于用户名,第二个用于关键字 我想根据关键字 -word2vec 找到所有用户间的语义相似度 使用 jupyter 笔记本。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)