Сокращение списка слов по словамPython

Программы на Python
Ответить
Anonymous
 Сокращение списка слов по словам

Сообщение Anonymous »

Помимо использования чат-бота, такого как o1 mini, есть ли другой локальный способ сократить список слов с 10 до 3 слов? Я чувствую, что из-за контекста, словесных ассоциаций, семантического значения слов должна быть какая-то экстраполяция, чтобы сократить список, но пока мои попытки не увенчались успехом.
Конечная цель — сократить список до такого уровня, который можно будет найти.
пример с использованием Chatgpt 1o mini

Код: Выделить всё

reduce the list of words to 3 terms able to used in search. Combine words if they make sense in context to all other words in the list. Each term should combine words meaningfully, and no word should be repeated across the terms. return in list form

["rpg", "role playing", "fantasy", "monster", "Dungeons", "dragons", "master", "monster", "job", "class"]
результат: Dungeons Dragons, ролевая игра, класс монстров

вот попытки, которые я пробовал использовать Python
попытка 1: UMAP, косинусное сходство

Код: Выделить всё

from sklearn.metrics.pairwise import cosine_similarity

def concatenate_overlap(list_of_list):
pooled = [set(subList) for subList in list_of_list]
merging = True
while merging:
merging = False
for i, group in enumerate(pooled):
merged = next((g for g in pooled[i + 1:] if g.intersection(group)), None)
if not merged:
continue
group.update(merged)
pooled.remove(merged)
merging = True
return [list(x) for x in pooled]

text_list = ["rpg", "role playing", "fantasy", "monster", "Dungeons", "dragons", "master", "monster", "job", "class"]

MODEL_NAME = 'Alibaba-NLP/gte-multilingual-base'
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModel.from_pretrained(MODEL_NAME, trust_remote_code=True)
batch_dict = tokenizer(text_list, max_length=8192, padding=True, truncation=True, return_tensors='pt')
outputs = model(**batch_dict)
embeddings = outputs.last_hidden_state[:, 0][:768]
similarity_matrix = cosine_similarity(embeddings.detach())
np.fill_diagonal(similarity_matrix, 0)
to_merge_list: List[List[int]] = []
for idx, topic_similarity_scores in enumerate(similarity_matrix):
similar_words = list(np.where(0.8> min_similarity)[0])
similar_words.append(idx)
to_merge_list.append(similar_words)

to_concat = concatenate_overlap(to_merge_list)
words = [text_list[a[0]] for a in to_concat]

результат: ['rpg', 'монстр', 'Подземелья', 'драконы', 'мастер', 'монстр', 'задание', ' class']

попытка 2: модель суммирования

Код: Выделить всё

summarizer = pipeline("summarization", model="facebook/bart-large-cnn")

word_list = ["rpg", "role playing", "fantasy", "monster", "Dungeons", "dragons", "master", "monster", "job", "class"]
text = ", ".join(word_list)
summarizer(text, max_length=50, do_sample=False)
результат: ролевые игры, ролевые игры, фэнтези, монстр, подземелья, драконы, мастер, монстр. работа, класс. рпг, ролевая игра, фэнтези. монстр, подземелья, драконы. хозяин, монстры, хозяин. работа,. class

редактирование: критерии просты: сократите список слов до фразы из 3 или 4 слов, по которой можно осуществлять поиск. В случае с Chatgpt 01 он дал мне 3 выражения из нескольких слов для поиска. Для двух примеров. В идеале это дало бы мне что-то такое же маленькое.
Я планирую взять списки слов и свести их к подсказкам для поиска.

Подробнее здесь: https://stackoverflow.com/questions/793 ... t-of-words
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»