Autor Zpráva
truefriend-cz
Profil
Dobrý den. Chci do programu TheBat vytvořit/rozšířit šablonu pro oslovení jménem v 5. pádu. Jméno funguje, zbývá jen příjmení a trochu změnit formát zobrazení.

Způsob jakým bych to chtěl provést je, aby script dokázal určit/rozparsovat na "oslovení+jméno+příjmení" a pak s nimi dále pracovat. V současné verzi se jméno určuje podle koncovky jména. Problém je, že když ten stejnou koncovku bude mít i příjmení tak to určí to příjmení.
Co se týká příjmení tak existuje v PHP někde na internetu (bohužel jsem ztratil seznam těch přípon z jaké na jakou se to převádí) rovnice jakým způsobem se dá zjednodušit přepis jmen z Novák na Nováku, Souček na Součku, apod. Nemusí se pak tam dávat všechna příjmení slovo od slova. Myslím si, že by TheBat na úrovni RegEx s tak velkou databází ani nedovedl pracovat. Dále aby pokud nenajde jméno v databázi tak aby dovedl správně umístit čárku v oslovení.
Když je "Pan David Novák" a oslovení je "Dobrý den Davide," a jméno by to nenašlo tak by se pak ukázalo jen "Dobrý den ," (zůstala by za "Dobrý den" a mezí čárkou nežádoucí mezera). V konečném důsledku by script měl umět převádět jména a jejich tvar takto:

1.
Odesílatel: "Pan David Novák"
Odpověď: "Dobrý den Davide Nováku,"
2.
Odesílatel: "David Novák"
Odpověď: "Dobrý den Davide Nováku,"
3.
Odesílatel: "Novák David"
Odpověď: "Dobrý den Davide Nováku,"
4.
Odesílatel: "David"
Odpověď: "Dobrý den Davide,"
5.
V případě, že jméno neexistuje/není rozpoznáno (ale příjmení ano) (Odesílatel: "Novák") tak:
Odpověď: "Dobrý den pane Nováku,"
pokud je to žena tak:
Odpověď: "Dobrý den paní Nováková,"
6.
V případě, že jméno ani příjmení neexistuje/není rozpoznáno tak:
Odpověď: "Dobrý den,"

Z toho co vím, tak příjmení a asi i jména se dají rozdělit na základ a koncovku (např.: Lu-děk) a pak pracovat pouze s koncovkami, které změní oslovení (např.: Lu-ďku).

Od případného pomocníka bych požadoval:
1. aby mi pomohl s vyhledáním převodní tabulky pro česká případně i slovenská jména a příjmení
2. najít způsob jak vhodně rozparsovat/identifikovat "Oslovení", "Jméno", "Příjmení" a ty pak spojit dle uvedených tvarů ještě s tím, že je rozdělit do skupin například že koncovky žen jsou "paní" a koncovky mužů jsou "pan" a ty pak použít v odpovědích, mělo by to jít přes RegEx v čemž nejsem až tak dobrý, umím rozparsovat části slov ale neumím rozparsovat celá slova ve větě pomocí třeba mezer okolo, aj.

Dokumentaci ohledně Maker a Šablon v TheBat najdete zde:
www.ritlabs.com/en/support/help/73

Poznámka: Scripty zatím obsahují jen pár jmen/definic pro testování.

Verze 1 (funkční), vychází z jednoduchého (a v případě doplnění všech jmen a příjmení hodně obsáhlého) přepsání jména jedna ku jedné dle databáze oddělené znakem "|" a zobrazit ho v 5.pádě:
%_Result=''%-
%_Result='%SetPattRegExp="Petr|Pavel|David|Lukáš|Karel|Honza|Řízek|Marek,"%RegExpMatch(%OFROMNAME)'%-
%IF:"%_Result"='David':%_Result="Davide"%-
%IF:"%_Result"='Lukáš':%_Result="Lukáši"%-
%IF:"%_Result"='':%_Name="%OFROMNAME":%_Name="%_Result"%-
%_Name%-
Ze jména "Pan David Novák" napíše "Davide".

Verze 2 (funkční), ReGex ze spojení "Pan David Novák" dokáže dle "databáze" koncovky slova "David" ("id") určit jméno a odstranit "Pan " a " Novák" a zobrazit ho v pátém pádě.
%_SourceName='Pan David Novák'%-

echo source name: %_SourceName%-

%SetPattRegExp='((\w*)(id|áš|děk|ter))+[ ]'%-
%RegExpBlindMatch='%_SourceName'%-
%_Result0=%SubPatt='1'%-
%_Result1=%SubPatt='2'%-
%_Result2=%SubPatt='3'%-

echo R0: %_Result0
echo R1: %_Result1
echo R2: %_Result2%-

%IF:"%_Result2"='id':%_Result="ide"%-
%IF:"%_Result2"='áš':%_Result="áši"%-
%IF:"%_Result2"='děk':%_Result="ďku"%-
%IF:"%_Result2"='ter':%_Result="tere"%-

%IF:"%_Result2"='':%_Name="%_SourceName":%_Name="%_Result1%-%_Result"%-
echo Name: Dobrý den %_Name,

Výstup:
echo source name: Pan David Novák

echo R0: David
echo R1: Dav
echo R2: id

echo Name: Dobrý den Davide,

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0