🕉️ Sanskrit Tagger
Вспомогательная библиотека для сегментации и морфологического теггинга предложений на санскрите с использованием предобученных моделей.
Работает на основе моделей из проекта sanskrit_nlp_models
Основные возможности:
-
Сегментация текста: Снятие сандхи, разделение текста на слова и основы в сложных словах.
-
Морфологический анализ: Определение части речи (POS), падежа, рода, числа и глагольных форм.
-
Factory-интерфейс: Удобное создание моделей одной функцией.
-
Поддержка IAST, HK, Devanagari: Работает с латинской транслитерацией санскрита.
-
Дополнительно: Поддержка Beam Search для генерации нескольких альтернативных вариантов сегментации.
📊 Препроцессинг
Пайплайн предобработки включает:
- Фильтрацию непечатных Unicode-символов (ZWNJ
\u200c, ZWJ\u200d, невидимые пробелы) без повреждения структуры строк для корректного разбиения. - Нормализацию знаков препинания (замена ведийских данд
।,॥и западной пунктуации на пробелы). - Перевод в систему SLP1, так как модели обучены на данный в SLP1. Ответ выводится в системе IAST.
🚀 Быстрый старт (Quick Start)
pip install sanskrit_tagger
📥 Загрузка моделей
Модели обучались на корпусе санскритских текстов и доступны напрямую через torch.hub. Вы можете выбрать одну из архитектур:
import torch
device = 'cuda' if torch.cuda.is_available() else 'cpu'
# загрузка модели классификации
model = torch.hub.load('koleslena/sanskrit_nlp_models', 'pos_tagger_model', device=device, force_reload=True)
# загрузка модели сегментации
model_segmenter = torch.hub.load('koleslena/sanskrit_nlp_models', 'segmenter_model', device=device, force_reload=True)
from sanskrit_tagger.tagger_factory import get_pos_tagger, get_segmenter
# Создание сегментатора
segmenter = get_segmenter(model_segmenter, device=device)
test_splitter_sentences = ["agnihotrātsamutthāya harṣeṇa mahatānvitā",
"uvāca cainaṁ varadā vacanaṁ pārthivaṁ tadā"]
# Получение разделения
segmented = segmenter(test_splitter_sentences)
for sent, predicted in zip(test_splitter_sentences, segmented):
print(f"Input: {sent}")
print(f"Output: {predicted}")
# Создание теггера
pos_tagger = get_pos_tagger(model, device=device)
# Текст должен быть разбит на слова
sentence = " ".join(segmented)
# Получение результата
for sent_tokens, sent_tags in zip(sentence.split(), pos_tagger(sentence)):
print(' '.join('{}-{}'.format(tok, tag) for tok, tag in zip(sent_tokens, sent_tags)))
📊 Пример вывода (Output Example)
Библиотека возвращает детальные теги для каждого токена:
atha-ADV kanyā-NOUN Gen Fem Sing pradāne-NOUN Loc Neut Sing...
🛠 Технические подробности
Библиотека инкапсулирует логику предобработки и пост-обработки векторов предсказаний моделей, позволяя сосредоточиться на лингвистическом анализе, а не на тензорах.
Metadata
Release files for sanskrit-tagger 0.3.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sanskrit_tagger-0.3.13.tar.gz | 27.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sanskrit_tagger-0.3.13-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 50.5 kB
Release files / sanskrit_tagger-0.3.13.tar.gz
| Download URL | sanskrit_tagger-0.3.13.tar.gz |
|---|---|
| Size | 27.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
922bd3aa8e2c697c1abcc8ce0e264605e89f96d158413e58381f6ab4836be0cf
|
|
BLAKE2b-256 checksum How to use checksums |
cace66d1b4768d739d73a17f795d5c86ac70cfada7edbf80ad516122b28bb610
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.9
|
Release files / sanskrit_tagger-0.3.13-py3-none-any.whl
| Download URL | sanskrit_tagger-0.3.13-py3-none-any.whl |
|---|---|
| Size | 23.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
090e0681ed8a38b0072b1d8f1d8edc20824ef4d4dd1e7fa96b2c0c298bfa3dee
|
|
BLAKE2b-256 checksum How to use checksums |
39d1b999a6ca0668b12f57cf01e1d07ba88bae2869089b9e7d99a3f75789bb7e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.9
|