Skip to main content

Library for processing serbian language

Project description

SrbAI - Python biblioteka za procesiranje srpskog jezika

SrbAI je projekat prikupljanja algoritama i modela za procesiranje srpskog jezika u jedinstvenu Python biblioteku. Biblioteka treba da sadrži kako osnovne metode za procesiranje srpskog, poput stemmera, prepoznavanje vrsta reči (part-of-speech tagging), negacija, do naprednijih funkcionalnosti, poput prepoznavanje imenovanih entiteta (named entity tagging), klasifikacije, itd. Biblioteka jednostavno može da se proširi novim metodima, tako da je ideja da se veći broj studenata, doktoranada i drugih ljudi koji rade i su zainteresovani za razvoj srpskog procesiranja jezika uključe u razvoj projekta.

Vizija projekta je da postane jedinstven i sveobuhvatan resurs za obradu srpskog jezika koji bi se koristio bilo u akademske, bilo u komercijalne svrhe.

Instalacija

Kada klonirate paket, možete ga instalirati uz pomoć:

python -m pip install --upgrade build .

Paket se može kreirati uz pomoć komande:

python -m build

Nakon čega se može instalirati uz pomoć python pip komande

Upotreba

Nakon instalacije, paket se može importovati kao

import srbai

Transliteracija

Za transliteraciju postoje 2 metode, jedna za transliteraciju sa ćirilice na latinicu, dok druga za transliteraciju sa latinice na ćirilicu

from srbai.Alati.Transliterator import transliterate_cir2lat, transliterate_lat2cir

lat = transliterate_cir2lat("Текст на ћирилици. ")
cir = transliterate_lat2cir("Tekst na latinici. ")

Stemmer

Stemer se može koristiti uz pomoć sledeće dve funkcije:

  • stem_str - pretvara ulazni tekst u stemmovani izlazni string
  • stem_arr - pretvata ulazni tekst u niz string-ova koji su stemmovani

Primer:

from srbai.SintaktickiOperatori.stemmer_nm import stem_str, stem_arr

sent = stem_str("Jovica je išao u školu. Marija je dobra devojka.")
from srbai.SintaktickiOperatori.stemmer_nm import stem_str, stem_arr

sent_arr = stem_arr("Jovica je išao u školu. Marija je dobra devojka.")

Spell checker za srpski jezik

U okviru SrbAI projekta je implementiran i spell checker zasnovan na rečnicima poteklim iz OpenOffice projekta. Implementacija je zasnovana na Trie strukturi podataka i Levensteinovoj distanci. Ovaj rečnik se može koristiti na sledeći način:

from srbai.SintaktickiOperatori.spellcheck import SpellCheck
sc = SpellCheck('sr-latin') #postoji opcija i #sr-cyrilic za ćirilicu
word = "predetori"
correction = sc.spellcheck(word)
if correction:
    print(f"Did you mean '{correction}'?")
else:
    print("No close match found.")

Izlaz treba da izgleda na sledeci nacin:

Did you mean 'predatori'?

Pronalaženje vrsta reči (Part-of-speech tagging)

Za pronalaženje vrsta reči u rečenici i morfološku analizu koristimo HunPos model koji je treniran za srpski i hrvatski jezik.

O karakteristikama modela, oznakama vrsta reči možete više pročitati na http://nlp.ffzg.hr/data/tagging/msd-hr.html

Da bi se model instancirao u memoriju, koristi se klasa, radi brže kasnije obrade i optimizacije resursa.

Primeri korišćenja:

from srbai.SintaktickiOperatori.POS_tagger import POS_Tagger

pt = POS_Tagger()
tags = pt.tag('Jovica je išao u školu. Marija je dobra devojka.')
# [('Jovica', b'N-msn'), ('je', b'Vcr3s'), ('išao', b'Vmp-sm'), ('u', b'Sa'), ('školu', b'N-fsa'), ('.', b'Z'), ('Marija', b'N-fsn'), ('je', b'Vcr3s'), ('dobra', b'Agpfsn'), ('devojka', b'N-fsn'), ('.', b'Z')]

FastText

FastText je model mašinskog učenja koji enkodira vektorski prostor na osnovu ulaznog korpusa. Vektorski prostor se sastoji iz vektora reči srpskog jezika koje se nalaze unutar ulaznog korpusa. Osnovna ideja jeste da ovaj model ponudi način da se reči srpskog jezika mapiraju na vektorski prostor kako bi se dalje mogle koristiti kao ulazni vektori za neke druge modele. Sam vektorski prostor očuvava semantičku i strukturalnu sličnost reči.

Kako bi se model koristio potrebno je namestiti konfiguraciju za jezik i za model. Konfiguracije se mogu pronaći unutar configs direktorijuma FastText modula, koji se i sam nalazi unutar direktorijuma JezickiModeli. Preporučeno je da se iskoristi već postojeća konfiguracija za model jer se ona pokazala kao najbolja u većini situacija, dok za jezičku konfiguraciju samo treba postaviti putanje ka korpusu na kojem će se model trenirati, putanju do stowords fajla, koji je već prisutan za srpski jezik, kao i putanje željene lokacije čuvanja modela. Samo je važno da se na kraju konfiguracije sačuvaju unutar svojih direktorijuma pod config.yaml kako bi modul mogao da ih pronađe na osnovu imena, tako, na primer, ako napravite novu jezičku konfiguraciju za engleski jezik, sačuvali biste je unutar configs/languages/english gde bi naziv konfiguracije onda bio config.yaml. Isto važi i za konfiguracije modela.

Modul se može koristiti kako bi se natrenirala skroz nova mreža, odnosno embedovao skroz novi vektorski prostor. Takođe ako već postoji natrenirani model onda ga je moguće koristiti kako bi se dobila vektorska reprezentacija neke prosleđene reči, kao i pronalaženje najsličnijih reči nekoj prosleđenoj reči.

Primeri kako se ovo može postići i kako se model koristi nakon postavljanja konfiguracija se nalazi u __main__.py fajlu unutar modula. Takođe unutar modula se nalaze primer konfiguracije za srpski jezik, kojem je potrebno promeniti samo corpus_path ukoliko želite odmah da ga koristite. Kao i primer jednog kratkog korpusa na srpskom.

Colab notebooks

Autori i kontributori

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

SrbAI-0.0.15.tar.gz (4.6 MB view details)

Uploaded Source

Built Distribution

SrbAI-0.0.15-py3-none-any.whl (4.6 MB view details)

Uploaded Python 3

File details

Details for the file SrbAI-0.0.15.tar.gz.

File metadata

  • Download URL: SrbAI-0.0.15.tar.gz
  • Upload date:
  • Size: 4.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for SrbAI-0.0.15.tar.gz
Algorithm Hash digest
SHA256 2abfc8d2727d98f208a39148cc8a9bd77338d274386da1cb03e8dfe68ef9a9e4
MD5 8acdec416d077b943070613f91bcbfb1
BLAKE2b-256 64aacc58cae6d8d552a1fcdbf2fcc34f50936ee675505e8ede783ef1ab9e5b54

See more details on using hashes here.

File details

Details for the file SrbAI-0.0.15-py3-none-any.whl.

File metadata

  • Download URL: SrbAI-0.0.15-py3-none-any.whl
  • Upload date:
  • Size: 4.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for SrbAI-0.0.15-py3-none-any.whl
Algorithm Hash digest
SHA256 17ad026da4abe58fd95b69cfec0a191c88e7bb245aaae371fcf396ccee3d1c05
MD5 c941ad6927c88a3529a56bc4bab86739
BLAKE2b-256 323c71a2d27f28733719304c64fdbe20f6346fd7bbd85aba0cc2be3f67c9bbde

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page