我有两个列表。列表A包含500个单词。列表B包含10000个单词。我正在尝试为列表A找到与B相似的单词。我正在使用Spacy的相似功能。
我面临的问题是计算需要花费很多时间。我是多核新手,因此需要帮助。
如何通过python中的多核处理来加快算法的运行速度?
以下是我的代码。
ListA =['Dell', 'GPU',......] #500 words lists
ListB = ['Docker','Ec2'.......] #10000 words lists
s_words = []
for token1 in ListB:
list_to_sort = []
for token2 in ListA:
list_to_sort.append((token1, token2,nlp(str(token1)).similarity(nlp(str(token2)))))
sorted_list = sorted(list_to_sort, key = itemgetter(2), reverse=True)[0][:2]
s_words.append(sorted_list)
答案 0 :(得分:1)
您可以使用multiprocessing软件包。我希望这会大大减少您的时间。有关示例代码,请参见here。
答案 1 :(得分:0)
你试过nlp.pipe()
吗?
你可以这样做:
from operator import itemgetter
import spacy
nlp = spacy.load("en_core_web_lg")
ListA = ['Apples', 'Monkey'] # 500 words lists
ListB = ['Grapefruit', 'Ape', 'Oranges', 'Banana'] # 10000 words lists
s_words = []
docs_a = nlp.pipe(ListA)
docs_b = list(nlp.pipe(ListB))
for token1 in docs_a:
list_to_sort = []
for token2 in docs_b:
list_to_sort.append((token1.text, token2.text, token1.similarity(token2)))
sorted_list = sorted(list_to_sort, key=itemgetter(2), reverse=True)[0][:2]
s_words.append(sorted_list)
print(s_words)
这应该已经为您加快了速度。函数 nlp.pipe()
还具有参数 n_process
,这可能正是您要查找的内容。