I. Obecné ustanovení návrhu programu na parsování OSHB morfollogických tagů
Zde je návrh funkcí pro parsování tagů OSHB:
parseMorphologicalTag(tag: str) -> dict:
- Tato funkce přijímá celý morfologický tag jako vstup.
- Prvním krokem je odříznutí znaku jazyka a uložení informace o jazyce (lang) do slovníku.
- Následně se volají další pomocné funkce pro parsování jednotlivých morfologických oblastí.
- Výstupem je slovník obsahující rozparsované informace o tagu.
parsePartOfSpeech(morph: str) -> dict:
- Tato funkce přijímá morfologickou část označující část řeči (Part of Speech).
- Provádí parsování části řeči a ukládá ji do slovníku.
- Vrací slovník obsahující rozparsované informace o části řeči.
parseVerbStemsHebrew(morph: str) -> dict: (nebo použít univerzální funkci parseVerbStem(morph: str, language: str, stem: str) -> dict:)
- Tato funkce přijímá morfologickou část označující hebrejské verbální kmene (Verb stems).
- Provádí parsování hebrejských verbálních kmenů a ukládá je do slovníku.
- V případě potřeby může volat další pomocné funkce pro podrobnější parsování.
parseVerbStemsAramaic(morph: str) -> dict: (nebo použít univerzální funkci parseVerbStem(morph: str, language: str, stem: str) -> dict:)
- Tato funkce přijímá morfologickou část označující aramejské verbální kmene (Verb stems).
- Provádí parsování aramejských verbálních kmenů a ukládá je do slovníku.
- V případě potřeby může volat další pomocné funkce pro podrobnější parsování.
parseVerbConjugationTypes(morph: str) -> dict:
- Tato funkce přijímá morfologickou část označující typy slovesných konjugací (Verb conjugation types).
- Provádí parsování typů konjugace sloves a ukládá je do slovníku.
parseAdjectiveTypes(morph: str) -> dict:
- Tato funkce přijímá morfologickou část označující typy přídavných jmen (Adjective types).
- Provádí parsování typů přídavných jmen a ukládá je do slovníku.
parseNounTypes(morph: str) -> dict:
- Tato funkce přijímá morfologickou část označující typy podstatných jmen (Noun types).
- Provádí parsování typů podstatných jmen a ukládá je do slovníku.
parsePronounTypes(morph: str) -> dict:
- Tato funkce přijímá morfologickou část označující typy zájmen (Pronoun types).
- Provádí parsování typů zájmen a ukládá je do slovníku.
parsePrepositionTypes(morph: str) -> dict:
- Tato funkce přijímá morfologickou část označující typy předložek (Preposition types).
- Provádí parsování typů předložek a ukládá je do slovníku.
parseSuffixTypes(morph: str) -> dict:
- Tato funkce přijímá morfologickou část označující typy přípon (Suffix types).
- Provádí parsování typů přípon a ukládá je do slovníku.
parseParticleTypes(morph: str) -> dict:
- Tato funkce přijímá morfologickou část označující typy částic (Particle types).
- Provádí parsování typů částic a ukládá je do slovníku.
parsePerson(morph: str) -> dict:
- Tato funkce přijímá morfologickou část označující osobu (Person).
- Provádí parsování informace o osobě a ukládá ji do slovníku.
parseGender(morph: str) -> dict:
- Tato funkce přijímá morfologickou část označující rod (Gender).
- Provádí parsování informace o rodu a ukládá ji do slovníku.
parseNumber(morph: str) -> dict:
- Tato funkce přijímá morfologickou část označující číslo (Number).
- Provádí parsování informace o čísle a ukládá ji do slovníku.
parseState(morph: str) -> dict:
- Tato funkce přijímá morfologickou část označující stav (State).
- Provádí parsování informace o stavu a ukládá ji do slovníku.
Při parsování tagu se nejprve volá funkce parseMorphologicalTag(), která využívá další pomocné funkce pro parsování jednotlivých oblastí morfologie. Každá z těchto funkcí přijímá relevantní morfologickou část, provádí její parsování a ukládá rozparsované informace do slovníku.
II. Ustanovení ohledně parsování verbálního stemu - lépší je univerzální funkce
User note: "Informace obsažené v tagu OSHB jsou pro všechny stemy shodného typu,
tzn. parsování by mělo probíhat stejným způsobem ať je stem jakýkoliv,
ať je jazyk H nebo A."
Informace obsažené v tagu OSHB jsou pro všechny stemy stejného typu (např. všechny hebrejské verbální kmeny "qal" mají stejné informace) a není třeba provádět další parsování na základě písmene verbálního kmene.
V takovém případě by mohla existovat jediná univerzální funkce pro parsování verbálních kmenů, která by extrahovala požadované informace na základě celé morfologické části tagu. Písmeno verbálního kmene by se v této funkci pouze použilo pro identifikaci typu kmene a rozhodnutí, jaké informace jsou s ním spojeny.
Například:
- parseVerbStem(morph: str, language: str, stem: str) -> dict:
- Tato univerzální funkce by přijímala morfologickou část, jazyk a typ verbálního kmene jako vstupy a vrátila by slovník obsahující informace o verbálním kmenu.
- Na základě písmene verbálního kmene a jazyka by se v této funkci rozhodlo, jaké informace mají být extrahovány a vráceny.
- Funkce by mohla obsahovat podmínky nebo přepínače (IF/SWITCH) pro různé kombinace písmen kmene a jazyka a na jejich základě by vrátila požadované informace.
III. Možná pole pro ukládání dat ve skriptovacích jazycích
Navrhuji následující strukturu pro asociativní pole nebo objekt, která by umožnila uložení naparsovaných informací z tagu OSHB:
- Python:
python
parsed_data = {
'lang': '',
'verb_stem_hebrew': '',
'verb_stem_aramaic': '',
'conjugation_type': '',
'adjective_type': '',
'noun_type': '',
'pronoun_type': '',
'preposition_type': '',
'suffix_type': '',
'particle_type': '',
'person': '',
'gender': '',
'number': '',
'state': ''
}
- Perl:
perl
my %parsed_data = (
'lang' => '',
'verb_stem_hebrew' => '',
'verb_stem_aramaic' => '',
'conjugation_type' => '',
'adjective_type' => '',
'noun_type' => '',
'pronoun_type' => '',
'preposition_type' => '',
'suffix_type' => '',
'particle_type' => '',
'person' => '',
'gender' => '',
'number' => '',
'state' => ''
);
- Bash:
bash
declare -A parsed_data=(
['lang']=''
['verb_stem_hebrew']=''
['verb_stem_aramaic']=''
['conjugation_type']=''
['adjective_type']=''
['noun_type']=''
['pronoun_type']=''
['preposition_type']=''
['suffix_type']=''
['particle_type']=''
['person']=''
['gender']=''
['number']=''
['state']=''
)
- AWK:
awk
parsed_data["lang"] = "" parsed_data["verb_stem_hebrew"] = "" parsed_data["verb_stem_aramaic"] = "" parsed_data["conjugation_type"] = "" parsed_data["adjective_type"] = "" parsed_data["noun_type"] = "" parsed_data["pronoun_type"] = "" parsed_data["preposition_type"] = "" parsed_data["suffix_type"] = "" parsed_data["particle_type"] = "" parsed_data["person"] = "" parsed_data["gender"] = "" parsed_data["number"] = "" parsed_data["state"] = ""
- JavaScript:
javascript
let parsed_data = {
'lang': '',
'verb_stem_hebrew': '',
'verb_stem_aramaic': '',
'conjugation_type': '',
'adjective_type': '',
'noun_type': '',
'pronoun_type': '',
'preposition_type': '',
'suffix_type': '',
'particle_type': '',
'person': '',
'gender': '',
'number': '',
'state': ''
};
Tato struktura umožňuje uložit naparsované informace z tagu OSHB na příslušné klíče nebo vlastnosti. Každý klíč nebo vlastnost odpovídá určitému typu informace z tagu OSHB. Před použitím stačí přiřadit hodnoty těmto klíčům nebo vlastnostem na základě provedeného parsování.
IV. Možná pole pro ukládání dat ve Delphi 7 nebo C++ (Visual Studio 2010)
Delphi 7:
delphi
var parsed_data: TStringList; begin parsed_data := TStringList.Create; parsed_data.Values['lang'] := ''; parsed_data.Values['verb_stem_hebrew'] := ''; parsed_data.Values['verb_stem_aramaic'] := ''; parsed_data.Values['conjugation_type'] := ''; parsed_data.Values['adjective_type'] := ''; parsed_data.Values['noun_type'] := ''; parsed_data.Values['pronoun_type'] := ''; parsed_data.Values['preposition_type'] := ''; parsed_data.Values['suffix_type'] := ''; parsed_data.Values['particle_type'] := ''; parsed_data.Values['person'] := ''; parsed_data.Values['gender'] := ''; parsed_data.Values['number'] := ''; parsed_data.Values['state'] := ''; end;
C++ (Visual Studio 2010):
cpp
#include <map>
#include <string>
std::map<std::string, std::string> parsed_data;
parsed_data["lang"] = "";
parsed_data["verb_stem_hebrew"] = "";
parsed_data["verb_stem_aramaic"] = "";
parsed_data["conjugation_type"] = "";
parsed_data["adjective_type"] = "";
parsed_data["noun_type"] = "";
parsed_data["pronoun_type"] = "";
parsed_data["preposition_type"] = "";
parsed_data["suffix_type"] = "";
parsed_data["particle_type"] = "";
parsed_data["person"] = "";
parsed_data["gender"] = "";
parsed_data["number"] = "";
parsed_data["state"] = "";
Toto jsou upravené verze kódu, které by měly být kompatibilní s Delphi 7 a C++ ve Visual Studio 2010.
Žádné komentáře:
Okomentovat