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.

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.7.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

SrbAI-0.0.7-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for SrbAI-0.0.7.tar.gz
Algorithm Hash digest
SHA256 8705cc852a6850de078ccc16d570b6b915dac58ea30becd9b912e9649bcaedb4
MD5 2c3e34cf0306bb6c5d1c360938fffc94
BLAKE2b-256 a9a8b66fa4ee2c6a1b67e008b9343b81ee61388f1064cce9e915eef149fe9643

See more details on using hashes here.

File details

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

File metadata

  • Download URL: SrbAI-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 21.0 kB
  • 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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 16f8de79127c4e34d8e0205488beed0487effbf16faaa72eb38169dfcc28b5b3
MD5 fdf8b40d121f7ad64e65d1a3d3f9f7ca
BLAKE2b-256 d0906ed8f75b845e4a8f7e728eb3384c47c9ebeae22f2eff2ae50b371b30525e

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