Skip to content

IlyaShaposhnikov/text-keyword-extractor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Text Keyword Extractor

Инструмент для извлечения ключевых слов из текстовых документов с собственной реализацией алгоритма TF-IDF, сравнением с библиотечной реализацией scikit-learn и интерактивным консольным интерфейсом

Описание

Этот проект представляет собой комплексное решение для анализа текстовых документов и выделения наиболее значимых ключевых слов. Основные особенности:

  • Реализация TF-IDF с нуля - собственная, чистая реализация алгоритма TF-IDF без использования сторонних библиотек для векторного представления
  • Сравнительный анализ TF-IDF - прямое сравнение результатов собственной реализации с библиотечной реализацией scikit-learn с подробным разбором формул и весов
  • Детальный разбор формул - наглядное сравнение математических формул TF-IDF между реализациями на конкретных примерах
  • Интерактивный консольный интерфейс - удобный CLI для поиска документов и анализа ключевых слов
  • Анализ стоп-слов - автоматическое удаление и анализ стоп-слов для повышения качества результатов
  • Умный поиск с пагинацией - поиск документов по ключевым словам с постраничной навигацией

Установка

  1. Клонируйте репозиторий:
git clone https://github.com/ваш-username/text-keyword-extractor.git
cd text-keyword-extractor
  1. Установите зависимости:
pip install -r requirements.txt
  1. Скачайте датасет с Kaggle и поместите файл bbc-text-cls.csv в папку data/

Использование

Как Python библиотека:

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. Поиск статей по слову
  • Введите слово для поиска
  • Просматривайте результаты с постраничной навигацией
  • Используйте команды:
    • далее - следующая страница
    • предыдущая - предыдущая страница
    • новый - новый поиск
    • назад - возврат в меню
    • [1-10] - выбор документа для анализа
  1. Анализ документа
  • Просмотр темы документа и превью содержания
  • Извлечение топ-10 ключевых слов с TF-IDF весами
  • Возможность сравнения с sklearn реализацией TF-IDF
  1. Сравнение TF-IDF реализаций
  • Ручная реализация: idf = log(N / df)
  • Sklearn: idf = log((1 + N) / (1 + df)) + 1 с L2 нормализацией
  • Сравнение весов одинаковых слов
  • Анализ различий в ранжировании
  1. Случайный анализ
  • Автоматический выбор случайного документа
  • Быстрый анализ без необходимости поиска
  1. Информация о данных
  • Количество загруженных документов
  • Размер словаря
  • Распределение документов по категориям
  • Статус вычисленных матриц

Структура проекта

text-keyword-extractor/
├── src/
│   └── keyword_extractor.py   # Основной класс для извлечения ключевых слов
├── data/                      # Папка для датасета
├── main.py                    # Интерактивная программа
├── requirements.txt           # Зависимости Python
├── .gitignore                 # Игнорируемые файлы Git
└── README.md                  # Документация

Автор

Шапошников Илья Андреевич

ilia.a.shaposhnikov@gmail.com

About

A manual TF-IDF implementation for keyword extraction from BBC News, featuring comparative benchmarking against scikit-learn's TF-IDF and an interactive console interface with paginated search

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages