使用GloVe获取文档向量的快速方法

时间:2019-06-04 07:43:06

标签: python pandas nlp word-embedding

问题

我正在尝试使用GloVe表示整个文档。但是,GloVe最初旨在进行单词嵌入。获取文档嵌入的一种方法是获取文档中所有单词嵌入的平均值。

我正在跟踪发布的here解决方案来加载GloVe查找表。但是,当我尝试嵌入文档时,运行时非常慢(超过100万个文档,每个文档大约需要1秒)。

我想知道是否有什么方法可以加快这个过程。

可以下载here,下载GloVe查询表,以下是我用来嵌入文档的代码。数据存储在pd.DataFrame()列中的review中。

请注意,text_processed_list中可能有一些单词没有出现在查询表中,这就是try...catch...发挥作用的原因。

import numpy as np
import pandas as pd
import string
import csv

from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords

remove_list = stopwords.words('english') + list(string.punctuation)

X = np.zeros((dataset_size, 300))
glove_model = pd.read_table("glove.42B.300d.txt", sep=" ", index_col=0, header=None, quoting=csv.QUOTE_NONE)
for iter in range(dataset_size):
    text = data.loc[iter, "review"]
    text_processed_list = [word for word in word_tokenize(text.lower()) if word not in remove_list]
    for word in text_processed_list:
        try:
            X[iter] += glove_model.loc[word].values
        except KeyError:
            pass
        X[iter] /= len(text_processed_list)

0 个答案:

没有答案