Я изо всех сил пытаюсь найти эффективный способ загрузки всех элементов из словаря python в spaCy NLP. Моя цель - создать функцию подобия, которая может взять элемент из dict1
и вернуть наиболее похожий элемент из dict2
.
Поскольку я новичок в Python и Spacy, у меня была идея только циклически повторять каждый элемент из dict1
, выполнять dict1_item = nlp(item)
, затем для каждого элемента dict2
, выполнять dict2_item = nlp(item2)
и, наконец, similarity(dict1_item[dict2_item])
Я еще не полностью реализовал этот подход, так как большое количество циклов подсказывает мне, что это будет невероятно медленно.
В отношении данных Я сравниваю около 3 000 элементов dict1 с 3 500 элементами dict2, поэтому меня беспокоит производительность.
match_dict = {}
for elements in titles_dict: #dict1 full with job titles
for title in title_dict[elements]:
elem1 = nlp(title)
for role in roles_listed: #dict2 full with role titles
elem2 = nlp(role)
similarity = elem1.similarity(elem2)
if similarity >= .8:
match_dict[elem1] = elem2
break
Мое желание - загрузить все dict1 и dict2 в nlp, а не все его элементы.
Что-то вроде:
doc1 = nlp(dict1.items())
doc2 = nlp(dict2.keys())
similarity = dic1.similarity(dic2)
и позже я могу хранить во фрейме данных лучшие совпадения.