Skip to content

mdocekal/namegen

Repository files navigation

namegen

Program pro generování tvarů jmen osob, lokací a událostí.

Ukázka funkce

vstup

Leonardo da Vinci		P:::M	https://cs.wikipedia.org/wiki/Leonardo_da_Vinci

výstup

Leonardo da Vinci		P:::M	Leonardo[k1gMnSc1]#G da#7 Vinci#L|Leonarda[k1gMnSc2]#G da#7 Vinci#L|Leonardu[k1gMnSc3]#G/Leonardovi[k1gMnSc3]#G da#7 Vinci#L|Leonarda[k1gMnSc4]#G da#7 Vinci#L|Leonardo[k1gMnSc5]#G da#7 Vinci#L|Leonardu[k1gMnSc6]#G/Leonardovi[k1gMnSc6]#G da#7 Vinci#L|Leonardem[k1gMnSc7]#G da#7 Vinci#L	https://cs.wikipedia.org/wiki/Leonardo_da_Vinci
Leonardo da Vinci		P:::M	Leonardo[k1gMnSc1]#G da#S Vinci[k1gMnSc1]#S|Leonarda[k1gMnSc2]#G da#S Vinciho[k1gMnSc2]#S|Leonardu[k1gMnSc3]#G/Leonardovi[k1gMnSc3]#G da#S Vincimu[k1gMnSc3]#S|Leonarda[k1gMnSc4]#G da#S Vinciho[k1gMnSc4]#S|Leonardo[k1gMnSc5]#G da#S Vinci[k1gMnSc5]#S|Leonardu[k1gMnSc6]#G/Leonardovi[k1gMnSc6]#G da#S Vincim[k1gMnSc6]#S|Leonardem[k1gMnSc7]#G da#S Vincim[k1gMnSc7]#S	https://cs.wikipedia.org/wiki/Leonardo_da_Vinci

Závislosti

Je nutné mít k dispozici Morfologický analyzátor pro češtinu ( MA - odkaz na interní wiki ).

Název skriptu spouštějící analyzátor lze nastavovat v konfiguračním souboru v sekci DATA_FILES položka MA. Očekává se, že tento skript se jménem, které je uvedeno v konfiguračním souboru, existuje ve složce každého jazyka. Více o samotných složkách jazyků lze nalézt v README.md ve složce data

Další závislosti jsou uvedeny v souboru requirements.txt.

Nápověda

Nápovědu lze vyvolat zadáním:

./namegen.py -h

Formát vstupu

Formát vstupního souboru je následující:

<název>\t<jazyk>\t<druh>\t<URLs>

Jazyk

Tento sloupec má význam pro filtrování a výběr jazyka dle kterého se má dané jméno zpracovávat. Podporované jazyky lze nalézt ve složce:

data/languages/

V konfiguračním souboru (více) je možné si nastavit filtr na základě jazyka. Jedná se o pole LANGUAGES v sekci FILTERS. Pokud není jazyk uveden (sloupec je prázdný) rozumí se jako neznámí (UNKNOWN). Více informací k filtrování lze nalézt přímo v konfiguračním souboru.

Příklad označení jména jako českého:

Leonardo da Vinci	cs	P:::M	https://cs.wikipedia.org/wiki/Leonardo_da_Vinci

Druh

Jméno osoby:

<Type: P=Person>:<Subtype: F/G=Fictional/Group>:<Future purposes: determine regular name and alias>:<Gender: F/M=Female/Male>

Příklad pro mužské jméno:

Leonardo da Vinci		P:::M	https://cs.wikipedia.org/wiki/Leonardo_da_Vinci

Příklad pro ženské jméno:

Ada Lovelaceová		P:::F	https://cs.wikipedia.org/wiki/Ada_Lovelace

Název lokace:

L

Příklad:

Velké Meziříčí		L	https://cs.wikipedia.org/wiki/Velké_Meziříčí

Také je možné druh vynechat. V tom případe namegen předpokládá, že se jedná o jméno osoby a odhadne, zda-li jde o ženské, či mužské.

Název události:

Je připravena i podpora pro události. Spíše budoucí užití. Gramatika je v raném stadiu. Je použita gramatika vycházející z lokací.

E

Příklad:

Bitva na Bílé hoře	cs	E	https://cs.wikipedia.org/wiki/Bitva_na_B%C3%ADl%C3%A9_ho%C5%99e

URLs

Jedná se pouze o dodatečná data, které namegen pouze propouští na výstup.

Formát výstupu

Formát vstupního souboru je následující:

<název>\t<jazyk>\t<druh>\t<tvary>\t<URLs>

Kde sloupce jsou stejné jako na vstupu až na sloupec obsahující tvary, který může vypadat například takto:

Leonardo[k1gMnSc1]#G da#7 Vinci#L|Leonarda[k1gMnSc2]#G da#7 Vinci#L|Leonardu[k1gMnSc3]#G/Leonardovi[k1gMnSc3]#G da#7 Vinci#L|Leonarda[k1gMnSc4]#G da#7 Vinci#L|Leonardo[k1gMnSc5]#G da#7 Vinci#L|Leonardu[k1gMnSc6]#G/Leonardovi[k1gMnSc6]#G da#7 Vinci#L|Leonardem[k1gMnSc7]#G da#7 Vinci#L

Jednotlivé podoby jména/názvu jsou odděleny pomocí | s tím, že prvně je uvedena podoba pro 1. pád a dále podoba pro 2. pád a tak dále.

Pomocí parametru --whole, lze nastavit, že chceme vypisovat tvary, pouze pokud jsme schopni vypsat všechny pády.

Nyní si rozeberme formát podoby jména pro jeden pád. Máme zde vždy jednotlivá slova oddělená původními oddělovači, kdy každé jednotlivé slovo je následováno značkami (uzavřenými v hranatých závorkách) popisujícími dané slovo. Za znakem # je označen druh slova. Možné druhy slov jsou popsány v:

data/grammars/README.md

Toto README obsahuje mimo jiné i informace, které lze vztáhnout ke značkám v hranatých závorkách. Je zde totiž uveden popis terminálů (více o terminálech v data/grammars/README.md), které používají obdobná značení. Například terminál

1{t=G,c=1,n=S,g=M}

by mohl odpovídat:

[k1gMnSc1]#G

Formát výstupu chybových slov

Pomocí argumentu --error-words je možné si vypsat slova, která poskytnutý morfologický analyzátor pro daný jazyk zpracování nezná.

Na výstupu je na každém řádku uveden záznam v následujícím formátu:

<kód jazyka na vstupu>\t<kód jazyka pro zpracování>\t<problémové slovo>\t<označení typu slova ve jméně(jméno, příjmení,...)>[\t<odhad mluvnických kategorií pro muže a ženy>]\t<druh názvu (mužský, ženský,...)>\t@\t<libovolné množství zdrojových jmen ve formátu jméno\tURL>[\t<další poznámky>]

Příklady:

cs	cs	Javorskij	jS	k1gMnSc1::	P:::M	@	Svatý Viktor Nikolajevič Javorskij	https://cs.wikipedia.org/wiki/Viktor_Nikolajevič_Javorskij
	cs	Bithýnie	jL	P:::M	@	Sv. Auxentius z Bithýnie	https://cs.wikipedia.org/wiki/Auxentius_z_Bithýnie

Druhý řádek ukazuje případ, kdy není dán jazyk na vstupu a je zvolen výchozí.

Příklad

Chceme vygenerovat tvary jmen uložených v souboru example.txt a výsledek uložit do souboru gen.txt:

./namegen.py -o gen.txt example.txt 

Složka data

Složka

data

obsahuje soubor s výčtem slov, které se mají identifikovat jako tituly (Bc., Mgr., …)

data/titles.txt

Více informací o titulech lze získat v:

data/README.md

Dále tato složka obsahuje podsložku s gramatikami. Více informací o gramatikách lze nalézt v následující sekci.

Pro generování tvarů jmen používá namegen gramatik, které jsou uloženy v

data/languages/

pro každý podporovaný jazyk. Například konkrétně pro češtinu

data/languages/cs/grammars/

Z těchto gramatik například určuje části jména/názvu, které se mají ohýbat. Více informací ke gramatikám lze získat ve zmiňované složce v souboru README.md.

Jaká z gramatik bude na konkrétní jméno použita je určeno dle jazyka a druhu jména/názvu. Mapování

druh -> soubor s gramatikou

je uvedeno v konfiguračním souboru.

Konfigurační soubor se nachází přímo v kořenovém adresáři a jeho název je:

namegen_config.ini

Konfigurační soubor obsahuje i popis jednotlivých parametrů.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published