我的数据框的列为keywords
:
keywords
election
countries
majestic
dollar
....
....
...
我还使用gensim建立了自己的预训练word2vec模型,从中可以使用model['anyword']
为每个单词获取20个维向量。我的问题是
i)我想将这20个维向量分配为与每个关键字相对应的列名(V1至V20)。
ii)如果单词词汇中不存在该单词,那么我想将向量分配为对应于该单词的[0,0,0 ,,,,, 0]数组,否则它将给出一个error:word not present in vocabulary
。例如,如果单词majestic
不存在于词汇中,则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']
我得到了向量数组,但我没有得到如何在V1 V2 V3 V4....V20
中将列名设为df
以及如何将丢失的单词视为'0'
答案 0 :(得分:2)
您可以像下面的代码一样执行此操作。 首先使函数成为这样。对于单词不在词汇表中,我使用了try-except,因此,如果单词不在词汇表中,则会在列表中放置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())
我希望这会对您有所帮助。