我正在尝试比较“文档”列表,以查看它们与某个单词(例如,推文列表)的相关性与单词列表(例如“政治”)中的单词的相关性。 ..等。我已经使用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())