поиск похожих фраз в файлах

Если у вас есть много текстовых файлов в формате txt то вы можете в них найти похожие фразы на ту что вы ввели через input 
для этого поместите в папку эту программу на питоне и запустите её
->

import os
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

def read_txt_files_from_folder(folder='.'):
    texts = []
    filenames = []
    for filename in os.listdir(folder):
        if filename.endswith('.txt'):
            path = os.path.join(folder, filename)
            with open(path, 'r', encoding='utf-8') as f:
                content = f.read()
                # Разобьём содержимое на строки, чтобы считать фразы
                lines = content.splitlines()
                for line in lines:
                line = line.strip()
                if line:  # пропускаем пустые строки
                texts.append(line)
                filenames.append(filename)
    return texts, filenames

def main():
    texts, filenames = read_txt_files_from_folder('.')
    if not texts:
        print("В папке нет текстовых фраз.")
        return

    query = input("Введите фразу для поиска: ").strip()
    if not query:
        print("Пустая фраза.")
        return

    try:
        top_n = int(input("число фраз для вывода: "))
    except ValueError:
        print("это целое число")
        return

    # Векторизуем все фразы + запрос
    vectorizer = TfidfVectorizer()
    all_texts = texts + [query]
    tfidf_matrix = vectorizer.fit_transform(all_texts)

    # Вектор запроса - последний
    query_vec = tfidf_matrix[-1]
    texts_vec = tfidf_matrix[:-1]

    # Косинусное сходство
    similarities = cosine_similarity(texts_vec, query_vec).flatten()

    # Отфильтруем по условию 0.1 <= sim <= 0.3
    filtered = [(i, sim) for i, sim in enumerate(similarities) if 0.1 <= sim <= 0.3]

    if not filtered:
        print("Нет фраз с таким сходством")
        return

    # Сортируем по убыванию сходства
    filtered.sort(key=lambda x: x[1], reverse=True)

    # Выводим топ n фраз
   
    for i, (idx, sim) in enumerate(filtered[:top_n], 1):
        print(f" {texts[idx]} ( {filenames[idx]})")

if __name__ == '__main__':
    main()




  **


диапазон косинусного сходства фраз здесь задается параметром  0.1 <= sim <= 0.3





пример поиска фраз ->



 знаем ли мы хорошо что самое важное и ценное в нашей жизни

поиск фраз ->

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


Рецензии