Извлечение объектов из списка строк - PullRequest
0 голосов
/ 17 июня 2020

У меня есть список строк и строки, которые выглядят следующим образом:

    mylist = ["the yam is sweet", "what is the best time to come", "who ate my food", "no empty food on the table", "what can I do to make you happy"]  # about 20k data
    myString1 = "Is yam a food"  # String can be longer than this
    myString2 = "should I give you a food"
    myString3 = "I am not happy"

Я хочу сравнить каждую из myString с каждой строкой в ​​моем списке и собрать процент сходства в трех разных списках. Таким образом, конечный результат будет выглядеть так:

   similar_string1 = [70, 0.5, 50, 55, 2]
   similar_string2 = [50, 0.5, 70, 85, 2]
   similar_string3 = [20, 15, 0, 5, 80]

Итак, mystring1 будет сравниваться с каждой строкой в ​​mylist и вычислять процентное сходство. То же самое с myString2 и myString3. Затем соберите каждый из этих процентов в список, как показано выше.

Я читал, что можно использовать TF-IDF для векторизации mylist и mystring, а затем использовать косинусное сходство для их сравнения, но я никогда не работаю над чем-то вроде этого раньше, и я буду рад, если у кого-нибудь есть идея, процесс или код, который поможет мне начать работу.

Спасибо

1 Ответ

0 голосов
/ 03 июля 2020

Реализация python для получения косинусного сходства уже обсуждалась в Вычислить косинусное сходство с учетом 2 строк предложений

Вы можете проверить ссылку выше и использовать фрагмент кода ниже:

'''
vector1 = text_to_vector(myString1)
vector2 = text_to_vector(myString2)
vector3 = text_to_vector(myString3)
similar_string1 = []
similar_string2 = []
similar_string3 = []

for ele in mylist:  
    vector = text_to_vector(ele)
    cosine = get_cosine(vector1, vector)
    similar_string1.append(cosine)
    cosine = get_cosine(vector2, vector)
    similar_string2.append(cosine)
    cosine = get_cosine(vector3, vector)
    similar_string3.append(cosine)


        
print(similar_string1)
print(similar_string2)
print(similar_string3)
'''

Имена переменных такие же, как вы упомянули в вопросе. Очевидно, этот код можно оптимизировать в соответствии с вашими требованиями.

Дайте мне знать, если вы ничего не поняли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...