Skip to main content

🕉️ 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)

Source distribution for sanskrit-tagger 0.3.13
File Size Uploaded
sanskrit_tagger-0.3.13.tar.gz 27.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sanskrit-tagger 0.3.13
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.3.13 This release

2 release files

0.3.12

2 release files

0.3.11

2 release files

0.3.10

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page