Инструмент для извлечения ключевых слов из текстовых документов с собственной реализацией алгоритма TF-IDF, сравнением с библиотечной реализацией scikit-learn и интерактивным консольным интерфейсом
Этот проект представляет собой комплексное решение для анализа текстовых документов и выделения наиболее значимых ключевых слов. Основные особенности:
- Реализация TF-IDF с нуля - собственная, чистая реализация алгоритма TF-IDF без использования сторонних библиотек для векторного представления
- Сравнительный анализ TF-IDF - прямое сравнение результатов собственной реализации с библиотечной реализацией scikit-learn с подробным разбором формул и весов
- Детальный разбор формул - наглядное сравнение математических формул TF-IDF между реализациями на конкретных примерах
- Интерактивный консольный интерфейс - удобный CLI для поиска документов и анализа ключевых слов
- Анализ стоп-слов - автоматическое удаление и анализ стоп-слов для повышения качества результатов
- Умный поиск с пагинацией - поиск документов по ключевым словам с постраничной навигацией
- Клонируйте репозиторий:
git clone https://github.com/ваш-username/text-keyword-extractor.git
cd text-keyword-extractor- Установите зависимости:
pip install -r requirements.txt- Скачайте датасет с Kaggle и поместите файл
bbc-text-cls.csvв папкуdata/
from src.keyword_extractor import KeywordExtractor
# Загрузка данных и извлечение ключевых слов
extractor = KeywordExtractor()
extractor.load_data()
extractor.build_vocabulary()
extractor.tokenize_documents()
extractor.compute_tf()
extractor.compute_idf()
extractor.compute_tfidf()
# Извлечение ключевых слов для документа
keywords = extractor.extract_keywords(document_index=0, top_n=10)
print(f"Топ-{top_n} ключевых слов: {keywords}")
# Поиск документов по слову
matching_docs = extractor.find_documents_with_word("technology")
print(f"Документов со словом 'technology': {len(matching_docs)}")python main.py- Поиск статей по слову
- Введите слово для поиска
- Просматривайте результаты с постраничной навигацией
- Используйте команды:
далее- следующая страницапредыдущая- предыдущая страницановый- новый поискназад- возврат в меню[1-10]- выбор документа для анализа
- Анализ документа
- Просмотр темы документа и превью содержания
- Извлечение топ-10 ключевых слов с TF-IDF весами
- Возможность сравнения с sklearn реализацией TF-IDF
- Сравнение TF-IDF реализаций
- Ручная реализация:
idf = log(N / df) - Sklearn:
idf = log((1 + N) / (1 + df)) + 1с L2 нормализацией - Сравнение весов одинаковых слов
- Анализ различий в ранжировании
- Случайный анализ
- Автоматический выбор случайного документа
- Быстрый анализ без необходимости поиска
- Информация о данных
- Количество загруженных документов
- Размер словаря
- Распределение документов по категориям
- Статус вычисленных матриц
text-keyword-extractor/
├── src/
│ └── keyword_extractor.py # Основной класс для извлечения ключевых слов
├── data/ # Папка для датасета
├── main.py # Интерактивная программа
├── requirements.txt # Зависимости Python
├── .gitignore # Игнорируемые файлы Git
└── README.md # Документация
Шапошников Илья Андреевич