Skip to content

terratensor/lemmatizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Лемматизатор текстовых корпусов

Go Report Card Лицензия: MIT

Высокопроизводительный инструмент для лемматизации больших текстовых файлов с использованием Mystem от Яндекса.

Особенности

  • 🚀 Обработка файлов до 10ГБ+ с оптимизированными буферами
  • ⚡ Многопоточная обработка с использованием всех ядер CPU
  • 📊 Реальный мониторинг прогресса с детальной статистикой:
  • Прогресс обработки (до 100%)
  • Количество обработанных слов
  • Скорость обработки (слов/сек)
  • Скорость чтения (МБ/сек)
  • Использование памяти
  • 🔍 Автодетект Mystem (глобальный или локальный)
  • 🛠️ Гибкая настройка через переменные окружения

Установка

Требования

  • Go 1.20+
  • Mystem (см. инструкцию ниже)

Сборка

git clone https://github.com/terratensor/lemmatizer.git
cd lemmatizer
make build

Установка Mystem

Linux

wget https://download.cdn.yandex.net/mystem/mystem-3.1-linux-64bit.tar.gz
tar -xzf mystem-3.1-linux-64bit.tar.gz
sudo mv mystem /usr/local/bin/

macOS (Homebrew)

brew install mystem

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

Базовый запуск:

./lemmatizer входной_файл.txt выходной_файл.txt

Пример вывода:

Processing file: corpus.txt
Input size: 2.8 GB
Output file: output.txt
Starting lemmatization...
Progress: 100.0% | Words: 12,345,678 | Speed: 45,678/s | 15.6 MB/s | Mem: 124.3MB (peak: 256.7MB)

Processing completed in 2m30s
Total words processed: 12,345,678
Average speed: 45,678 words/sec
Data rate: 15.6 MB/s
Peak memory usage: 256.7 MB

Расширенные настройки

Переменные окружения

Переменная По умолчанию Описание
BUFFER_SIZE 100MB Размер буфера чтения/записи
CHAN_BUFFER_SIZE 1,000,000 Размер буфера каналов обработки
MYSTEM_PATH auto Путь к бинарнику Mystem

Примеры:

# С увеличенными буферами
BUFFER_SIZE=256MB ./lemmatizer large_input.txt output.txt

# С указанием пути к Mystem
MYSTEM_PATH=./custom_path/mystem ./lemmatizer input.txt output.txt

# Комбинированный пример
BUFFER_SIZE=1GB CHAN_BUFFER_SIZE=2000000 ./lemmatizer huge_corpus.txt result.txt

Производительность

Типичные показатели на современных CPU:

Размер файла Время обработки Использование памяти
100MB ~15 сек 50-100MB
1GB ~2.5 мин 100-300MB
10GB ~25 мин 300-800MB

Разработка

Сборка и запуск:

make build
make run INPUT=input.txt OUTPUT=output.txt

Тестирование:

make test

Лицензия

Проект распространяется под лицензией MIT. Полный текст см. в файле LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published