поиск фраз с помощью модели трансформера

я попробовал эту программу - она вроде работает
однако не знаю насколько хорошее качество этого алгоритма поиска фраз в вашем  тексте  фразы.txt
при поиске фраз здесь используется трансформер
SentenceTransformer - all-MiniLM-L6-v2
а также для ускорения работы  используются ресурсы матриц вашей видео карты



 **


import numpy as np
from sentence_transformers import SentenceTransformer, util

# Загружаем модель
model = SentenceTransformer('all-MiniLM-L6-v2')

# Считываем текст из файла
with open('фразы.txt', 'r', encoding='utf-8') as file:
    text = file.read()

# Разбиваем текст на предложения
sentences = text.split('. ')  # простой разбор на предложения

# Ограничиваем количество предложений
max_sentences = 200  # например, 200 предложений
sentences = sentences[:max_sentences]

# Ввод фразы для поиска
query = input("Введите фразу для поиска: ")

# Получаем эмбеддинги для запроса и предложений
query_embedding = model.encode(query, convert_to_tensor=True)
sentence_embeddings = model.encode(sentences, convert_to_tensor=True)

# Вычисляем косинусное сходство
cosine_scores = util.pytorch_cos_sim(query_embedding, sentence_embeddings)[0]

# Получаем топ-5 наиболее релевантных предложений
top_results = np.argpartition(-cosine_scores, range(5))[:5]
top_results = top_results[np.argsort(-cosine_scores[top_results])]

# Выводим результаты
print("\nТоп-5 наиболее релевантных предложений:")
for i in top_results:
    print(f"{sentences[i]} ( {cosine_scores[i]:.4f})")





Убедитесь что у вас установлены необходимые библиотеки.
 вы можете установить их с помощью pip:

pip install sentence-transformers numpy










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



далее модель ищет связи в этих строках ->


1. 
я живой - но постарел 
может много не успел

(Связь: размышления о возрасте и упущенных возможностях)

2. 
он душой в миры летел
словно птица он взлетел

(Связь: образ полёта и духовного путешествия)

3. 
разум время одолел
целый месяц пролетел

(Связь: восприятие времени и преодоление его течения разумом)

4. 
в голове моей засел
много мыслей жизни тел

(Связь: внутренние размышления и накопление опыта)

5. 
лишь немного онемел
ни о чём не сожалел

(Связь: несмотря на некоторые трудности, отсутствует сожаление)

6. 
звук в его душе звенел
он душою словно пел

(Связь: внутренняя гармония и эмоциональное состояние)

7. 
без него мир опустел 
всю округу оглядел

(Связь: влияние человека на окружающий мир и его восприятие)

8. 
как прибой морской ревел
словно ветер налетел

(Связь: природные образы, символизирующие силу и перемены)



- могу помочь найти ещё пары cтрок  и объяснить эти связи


Рецензии