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.14.tar.gz (3.7 MB view details)

Uploaded Source

Built Distribution

SrbAI-0.0.14-py3-none-any.whl (3.8 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: SrbAI-0.0.14.tar.gz
  • Upload date:
  • Size: 3.7 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.14.tar.gz
Algorithm Hash digest
SHA256 b9c3243a0b52fae6ca256dad77ad4b4a0b3107db6fbffd68c7c4cb662fc9af82
MD5 a80c25b5e5189c71fb6096abafec0662
BLAKE2b-256 4bd94a6c91586f650f68a60765041ee8eae25cadeace6a8053eeb32ae12eae48

See more details on using hashes here.

File details

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

File metadata

  • Download URL: SrbAI-0.0.14-py3-none-any.whl
  • Upload date:
  • Size: 3.8 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.14-py3-none-any.whl
Algorithm Hash digest
SHA256 4b8f3837e7d3adc5d70f7110e5b406acd34e03a3965384452ca759efec54bbc5
MD5 6eb3a3f22f08cce946c7ad53ce850937
BLAKE2b-256 d2ab15b5fdea0e54a1bc099ea775594221c7572d8d81762dc9076177fad6c728

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