Я пытаюсь сравнить список «документов», чтобы увидеть, насколько они связаны с определенным словом, например, списком твитов, по сравнению со словом в списке слов, например, «политика».... и т. д. Я создал удовлетворительное решение с помощью векторной функции Spacy similarity
и панд, но, не зная ни одной библиотеки, думаю, мое решение можно было бы сделать значительно быстрее.Мне нужно сделать это на потенциально миллионах строк, так что любое повышение производительности приветствуется, но я думаю, что это может быть значительно быстрее, если я распараллелю это действие, действующее на фрейме данных 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())