поиск фраз в файлах txt по ключевым словам
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, чтобы избежать повторов.
Выводит найденные фразы.
Вы можете улучшить этот код, добавив дополнительные функции, такие как обработка регистра, игнорирование пунктуации и т. д., в зависимости от ваших потребностей.
Свидетельство о публикации №125011706611