Задать вопрос
@motcart

Как разобрать вложенный список с помощью sklearn?

Подскажите как с помощью sklearn обработать такой датасет в виде списка:
tt = {
    'key1': ['value1', 'value2', 'value3'],
    'key2': ['value2', 'value4'],
     ...
}

Список формируется динамически, может быть разное количесвто ключей и значений.

Пользователь вводит строку
data = input()

Из списка надо выбрать ключ подходящий не менее чем на 60% сравнив ввод пользователя и каждый value.
Я смог сделать вывод для списка вида [ключ:значение], но не могу понять как это сделать когда в значении тоже список.
  • Вопрос задан
  • 79 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Lord_of_Rings
@Lord_of_Rings
Северный странник. Злой, но добрый
Можно использовать sklearn для вычисления косинусного сходства между векторами
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# Пример данных
tt = {
    'key1': ['value1', 'value2', 'value3'],
    'key2': ['value2', 'value4'],
}

data = input("Введите строку:  ")

# Преобразование значений в строки
tt_values = [" ".join(values) for values in tt.values()]

# Добавление пользовательского ввода в список значений
tt_values.append(data)

# Преобразование текста в векторы
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(tt_values)

# Вычисление косинусного сходства
cosine_sim = cosine_similarity(X[-1], X[:-1])

# Порог сходства
threshold = 0.6

# Поиск наиболее подходящего ключа
best_key = None
best_similarity = 0

for i, key in enumerate(tt.keys()):
    similarity = cosine_sim[0][i]
    if similarity >= threshold and similarity > best_similarity:
        best_similarity = similarity
        best_key = key

if best_key:
    print(f"Наиболее подходящий ключ: {best_key} с сходством {best_similarity}")
else:
    print("Нет подходящего ключа.")
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
11 дек. 2024, в 22:30
250000 руб./за проект
11 дек. 2024, в 22:15
10000 руб./за проект
11 дек. 2024, в 22:10
3000 руб./за проект