Я хочу найти сходство между двумя списками строк. Один из списков представляет собой список предложений, а другой создается путем разбиения текста в столбце pandas.
Первый список довольно маленький, но столбец pandas большой. Как отмечается в этом ответе { ссылка }, циклический просмотр будет медленным, я использовал понимание списка. Я ищу способы еще более оптимизировать его.
def jaccard_similarity(list1, list2):
s1 = set(list1)
s2 = set(list2)
return len(s1.intersection(s2)) / len(s1.union(s2))
def check_product(keyprase_list, min_similarity=0.3):
found_products = []
data = pd.read_csv("./data/flipkart_processed.csv", usecols=["product_name"])
for phrase in keyprase_list:
words = phrase.split(" ")
scores = [
True
for y in data["product_name"].str.split(" ")
if jaccard_similarity(words, y) > min_similarity
]
if len(scores) > 0:
found_products.append(phrase)
return found_products
В частности, это раздел, который я хочу оптимизировать sh.
scores = [
True
for y in data["product_name"].str.split(" ")
if jaccard_similarity(words, y) > min_similarity
]
if len(scores) > 0:
found_products.append(phrase)