Python 3.x 是否将字向量添加为数据框中的列?
我有一个带有列Python 3.x 是否将字向量添加为数据框中的列?,python-3.x,pandas,gensim,word2vec,Python 3.x,Pandas,Gensim,Word2vec,我有一个带有列关键字的数据框: keywords election countries majestic dollar .... .... ... 我也有自己的使用gensim的预训练word2vec模型,在那里我可以使用model['anyword']为每个单词获得20维向量。我的问题是 i) 我想将这20个维度向量指定为与每个关键字对应的列名称(V1到V20) ii)如果单词词汇表中不存在单词,则我希望将向量指定为与该单词对应的[0,0,0,,,,,,0]数组,否则将给出错误:单词词汇表中
关键字的数据框
:
keywords
election
countries
majestic
dollar
....
....
...
我也有自己的使用gensim的预训练word2vec模型,在那里我可以使用model['anyword']
为每个单词获得20维向量。我的问题是
i) 我想将这20个维度向量指定为与每个关键字对应的列名称(V1到V20)
ii)如果单词词汇表中不存在单词,则我希望将向量指定为与该单词对应的[0,0,0,,,,,,0]数组,否则将给出错误:单词词汇表中不存在。例如,如果单词majestic
在vocab中不存在,那么df
应该
keyword V1 V2 V3 ............. V20
election 0.02 0.44 0.32.............0.12
countries 0.33 0.33 0.11............ 0.13
majestic 0 0 0 ............ 0
dollar 0.31 0.77 0.86............ 0.91
.......
.......
就我目前所做的而言:-
for i in df['keywords']:
vectors=model['i']
我得到了向量数组,但我不知道如何在df
中将它与列名称放在一起,如V1 V2 V3 V4….V20
,以及如何将缺少的单词视为'0'
您可以像下面给定的代码那样执行此操作。
首先将函数设置为这样。对于我使用过的单词not in词汇表,请尝试,除非这样,如果单词不在词汇表中,它会将0的列表放在那里
missing=[0]*20
def fun(key):
try:
return(model[key])
except:
return(missing)
然后调用此函数:
df['vector'] = df['keywords'].apply(fun)
df = pd.DataFrame(df['vector'].values.tolist())
我希望这会对你有所帮助。@James你还面临任何问题吗?是否有其他方式,如列名称增加,即可能是500,我已编辑了答案。看一看。如果你面临任何进一步的问题,请评论它。这是一种正确的方法吗,比如说,从手套或word2vec中获取嵌入,并使用它们来训练深度学习模型?这是表示数据帧中嵌入内容的正确方法吗?