поиск фраз в файлах txt по ключевым словам

import os
import nltk
from nltk.stem import PorterStemmer

# Загрузка необходимых ресурсов NLTK
nltk.download('punkt')

def get_stems(words):
    ps = PorterStemmer()
    return set(ps.stem(word) for word in words)

def find_phrases_in_files(keywords):
    folder_path = os.getcwd()  # Получаем текущую директорию
    stems = get_stems(keywords)
    found_phrases = set()

    # Проходим по всем файлам в указанной папке
    for filename in os.listdir(folder_path):
        if filename.endswith('.txt'):
            with open(os.path.join(folder_path, filename), 'r', encoding='utf-8') as file:
                text = file.read()
                # Разделяем текст на предложения
                sentences = nltk.sent_tokenize(text)

                for sentence in sentences:
                # Проверяем наличие ключевых слов или их корней в предложении
                if any(stem in sentence for stem in stems):
                found_phrases.add(sentence.strip())

    return found_phrases

def main():
    keywords = input("Введите ключевые слова через пробел: ").split()
    found_phrases = find_phrases_in_files(keywords)

    print("\nНайденные фразы:")
    for phrase in found_phrases:
        print(phrase)

if __name__ == "__main__":
    main()




в папке с программой есть много текстов txt
нужно ввести ключевые слова input через пробел
и затем найти фразы в текстах с этими словами и их корнями

отбросить повторы среди фраз
вывести найденные фразы

Этот код делает следующее:

Считывает все текстовые файлы в указанной папке.
Разделяет текст на предложения.
Проверяет каждое предложение на наличие ключевых слов и их корней.
Сохраняет уникальные предложения в набор found_phrases, чтобы избежать повторов.
Выводит найденные фразы.
Вы можете улучшить этот код, добавив дополнительные функции, такие как обработка регистра, игнорирование пунктуации и т. д., в зависимости от ваших потребностей.


Рецензии

Завершается прием произведений на конкурс «Георгиевская лента» за 2021-2025 год. Рукописи принимаются до 24 февраля, итоги будут подведены ко Дню Великой Победы, объявление победителей состоится 7 мая в ЦДЛ. Информация о конкурсе – на сайте georglenta.ru Представить произведения на конкурс →