У меня есть много описаний продуктов в виде текста от моего поставщика. Вкратце, я могу определить некоторые шаблоны в описании продукта, такие как:
This product is red.
This product is yellow.
The product is made out of steel.
The product is made out of plastic.
The product is made out of glass.
Моя задача - извлечь шаблоны из текста. Результат будет:
This product is [color].
The product is made out of [product_material].
Я попробовал ручной подход к нему: сначала я очистил данные и разделил их на предложения, а затем:
def remove(list1, pos):
newlist = []
# traverse in the list
for x in range(len(list1)):
# if index not equal to pos
if x != pos:
newlist.append(list1[x])
return(newlist)
#lines variable is a list of sentences from product descriptions
for l_tokenized in enumerate(lines):
for element_first_arr in range(0, len(l_tokenized)):
first_arr_tmp = l_tokenized
deleted_element_first_arr_tmp = remove(first_arr_tmp,element_first_arr)
for line_to_compare_with in enumerate(lines):
for element_second_arr in range(0, len(line_to_compare_with)):
second_arr_tmp = line_to_compare_with
del_element_second_array = remove(second_arr_tmp, element_second_arr)
if first_arr_tmp == del_element_second_array:
print(first_arr_tmp)
print(del_element_second_array)
Это дает желаемый результат, но невозможно выполнить его по всем описаниям, поскольку 1 такой l oop занимает ~ 15 минут, а их тысячи.
Есть ли лучший подход?