【问题标题】:Add word vectors as columns in pandas dataframe?在熊猫数据框中添加词向量作为列?
【发布时间】:2018-12-19 21:49:08
【问题描述】:

我有一个包含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']

我得到了向量数组,但我不知道如何在df 中将其与列名称作为V1 V2 V3 V4....V20 以及如何将缺少的单词作为'0' 处理

【问题讨论】:

  • 这是正确的方法吗?比如说,从 GloVe 或 word2vec 中获取嵌入,并使用它们来训练深度学习模型?这是表示那些嵌入数据框中的正确方法吗?

标签: python-3.x pandas gensim word2vec


【解决方案1】:

您可以像下面给出的代码一样执行此操作。 首先制作这样的函数。对于不在词汇表中的单词,我使用了 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())

希望对你有帮助。

【讨论】:

  • @James 你还有什么问题吗??
  • 是否有任何其他方式可能会增加列名,即可能是 500
  • 我已经编辑了答案。看看它。如果您遇到任何问题,请发表评论。
猜你喜欢
  • 2021-06-11
  • 1970-01-01
  • 2022-09-24
  • 1970-01-01
  • 2017-02-11
  • 2016-12-27
  • 1970-01-01
相关资源
最近更新 更多