在Pandas数据框上并行化功能

时间:2019-01-17 12:44:23

标签: python python-3.x pandas parallel-processing spacy

我正在尝试比较“文档”列表,以查看它们与某个单词(例如,推文列表)的相关性与单词列表(例如“政治”)中的单词的相关性。 ..等。我已经使用Spacy的基于向量的similarity函数和pandas创建了令人满意的解决方案,但是我对这两个库都不是很了解,所以我认为我的解决方案可以大大提高。我必须在可能的数百万行中执行此操作,因此可以提高性能,但我认为,如果并行化对Pandas数据帧执行的操作,则可能会更快。不幸的是,我几乎没有并行化的经验,将不胜感激。输出应该是文本列表,然后是每个单词的分数列。例如:

text               | 'politics' | 'banana' 
"hello america..." |    0.4     |    0.2
"apple on a tree.."|    0.1     |    0.7
...

下面是最小示例

import pandas as pd
import spacy

# from: https://www.kaggle.com/kingburrito666/better-donald-trump-tweets
myfile = "//Downloads//better-donald-trump-tweets//Donald-Tweets!.csv"

df = pd.read_csv(myfile)

nlp = spacy.load('en_core_web_lg')

# words to iterate over
word_list = ['america', 'USA', 'great', 'banana']

# take a sample for demo of the text field
df_trump = df.head(50)[['Tweet_Text']]

# iterate through the words
for word in word_list:
    # turn the word into a vocabulary object to compare against
    comparitor = nlp.vocab[word]
    df_trump[word] = df_trump['Tweet_Text'].apply(
        lambda doc: comparitor.similarity(nlp(str(doc))))

print(df_trump.head())

0 个答案:

没有答案