https://github.com/terratensor/lemmatizer
https://github.com/terratensor/lemmatizer
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/terratensor/lemmatizer
- Owner: terratensor
- License: other
- Created: 2025-07-23T10:26:49.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-07-23T11:17:24.000Z (8 months ago)
- Last Synced: 2025-08-22T20:22:07.014Z (7 months ago)
- Language: Go
- Size: 5.89 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Лемматизатор текстовых корпусов
[](https://goreportcard.com/report/github.com/terratensor/lemmatizer)
[](https://opensource.org/licenses/MIT)
Высокопроизводительный инструмент для лемматизации больших текстовых файлов с использованием Mystem от Яндекса.
## Особенности
- 🚀 Обработка файлов до 10ГБ+ с оптимизированными буферами
- ⚡ Многопоточная обработка с использованием всех ядер CPU
- 📊 Реальный мониторинг прогресса с детальной статистикой:
- Прогресс обработки (до 100%)
- Количество обработанных слов
- Скорость обработки (слов/сек)
- Скорость чтения (МБ/сек)
- Использование памяти
- 🔍 Автодетект Mystem (глобальный или локальный)
- 🛠️ Гибкая настройка через переменные окружения
## Установка
### Требования
- Go 1.20+
- Mystem (см. инструкцию ниже)
### Сборка
```bash
git clone https://github.com/terratensor/lemmatizer.git
cd lemmatizer
make build
```
### Установка Mystem
#### Linux
```bash
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)
```bash
brew install mystem
```
## Использование
Базовый запуск:
```bash
./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 |
Примеры:
```bash
# С увеличенными буферами
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 |
## Разработка
Сборка и запуск:
```bash
make build
make run INPUT=input.txt OUTPUT=output.txt
```
Тестирование:
```bash
make test
```
## Лицензия
Проект распространяется под лицензией MIT. Полный текст см. в файле [LICENSE](LICENSE).