Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze |
kurz:regularni_vyrazy [2021/03/10 11:54] – jankocek | kurz:regularni_vyrazy [2024/10/07 11:18] (aktuální) – [Kategorie znaků unicodu] michalkren |
---|
Stejně jako u většiny úloh s regulárními výrazy i v tomto případě existuje více postupů, jak se dobrat ke stejnému výsledku. My jsme si vybrali ten využívající symbol ''?'', který specifikuje, které segmenty se ve slově **nemusejí** vždy vyskytovat. Zápis je takovýto: ''j?est?l?i'' (tzn. předpokládáme, že zredukovat lze hlásky //j//, //t// a //l//) a výsledek tento: | Stejně jako u většiny úloh s regulárními výrazy i v tomto případě existuje více postupů, jak se dobrat ke stejnému výsledku. My jsme si vybrali ten využívající symbol ''?'', který specifikuje, které segmenty se ve slově **nemusejí** vždy vyskytovat. Zápis je takovýto: ''j?est?l?i'' (tzn. předpokládáme, že zredukovat lze hlásky //j//, //t// a //l//) a výsledek tento: |
| |
{{:kurz:jestli-frekvence.png?direct|}} | [{{:kurz:jestli-frekvence.png?direct&300|Frekvenční distribuce podob //jestli// v korpusu ORAL2013}}] |
| |
FIXME DOPLNIT https://www.korpus.cz/kontext/freqs?maincorp=oral2013&viewmode=kwic&pagesize=415&attrs=word&attr_vmode=visible-kwic&base_viewattr=word&refs=%3Ddoc.id%2C%3Dsp.pohlavi%2C%3Dsp.vek%2C%3Dsp.vzdelani%2C%3Dsp.vzdelanityp&q=~HQeo4Qioqcac&fcrit=word%2Fie%200~0%3E0&flimit=1&fpage=1&ftt_include_empty=0 | |
POPISEK: Frekvenční distribuce podob //jestli// v korpusu ORAL2013 | |
| |
Ve frekvenčním seznamu se ocitly dva překvapivé tvary: //jesti// a //esti//. Pomocí modře označeného **p** ([[manualy:kontext:frekvencni_distribuce#frekvencni_seznam_vypis|pozitivní filtr]]) ve frekvenčním seznamu můžeme hned zkontrolovat, zda jde o námi hledaný význam (v obou případech tomu tak je) a nakolik je použití tohoto konkrétního tvaru regionálně či jinak podmíněné (zdá se to být východomoravské specifikum -- 6 případů ze 7, respektive 8 z 9 spadá do této nářeční oblasti). | Ve frekvenčním seznamu se ocitly dva překvapivé tvary: //jesti// a //esti//. Pomocí modře označeného **p** ([[manualy:kontext:frekvencni_distribuce#frekvencni_seznam_vypis|pozitivní filtr]]) ve frekvenčním seznamu můžeme hned zkontrolovat, zda jde o námi hledaný význam (v obou případech tomu tak je) a nakolik je použití tohoto konkrétního tvaru regionálně či jinak podmíněné (zdá se to být východomoravské specifikum -- 6 případů ze 7, respektive 8 z 9 spadá do této nářeční oblasti). |
| |
^ regulární výraz ^ znaky ^ co zastupuje ^ další informace ^ | ^ regulární výraz ^ znaky ^ co zastupuje ^ další informace ^ |
| **seznam** | ''[ ]'' | alternativa, možnost výběru **jednoho** libovolného znaku ze znaků uvnitř hranatých závorek | v rámci seznamu je možné používat také pomlčku (''-'') jako operátor rozsahu (např. ''[a-z]'', ''[1-9]'') pro alfabetické znaky a číslice | | | **seznam** | ''[ ]'' | alternativa, možnost výběru **jednoho** libovolného znaku ze znaků uvnitř hranatých závorek | v rámci seznamu je možné používat také pomlčku (''-'') jako operátor rozsahu (např. ''[0-9]'') pro číslice | |
| **inverzní seznam** | ''[^ ]'' | výběr **jednoho** libovolného znaku **s výjimkou** znaků uvnitř hranatých závorek | pokud je prvním znakem seznamu stříška (''^''), jde o inverzní seznam: tedy jeden libovolný znak kromě těch uvedených uvnitř hranatých závorek | | | **inverzní seznam** | ''[^ ]'' | výběr **jednoho** libovolného znaku **s výjimkou** znaků uvnitř hranatých závorek | pokud je prvním znakem seznamu stříška (''^''), jde o inverzní seznam: tedy jeden libovolný znak kromě těch uvedených uvnitř hranatých závorek | |
| **svislá čára** | ''|'' | alternativa, ovšem ne jenom mezi jednotlivými znaky, ale mezi řetězci tvořícími celek | kombinuje se často s kulatými závorkami, které pomáhají určit prioritu vyhodnocení | | | **svislá čára** | ''|'' | alternativa, ovšem ne jenom mezi jednotlivými znaky, ale mezi řetězci tvořícími celek | kombinuje se často s kulatými závorkami, které pomáhají určit prioritu vyhodnocení | |
|''\.\!?''|sekvence interpunkčních znamének tečka vykřičník otazník| | |''\.\!?''|sekvence interpunkčních znamének tečka vykřičník otazník| |
|''[\.\!?]''|všechny tečky, vykřičníky a otazníky| | |''[\.\!?]''|všechny tečky, vykřičníky a otazníky| |
| |
| ==== Kategorie znaků unicodu ==== |
| |
| Jednotlivé znaky v řetězci je také možné zastoupit pomocí definovaných [[https://en.wikipedia.org/wiki/Unicode_character_property#General_Category|kategorií znaků unicodu]]. Na pozici jednoho znaku se ve výrazu uvede šablona ''\p{ }'', v níž se mezi složené závorky uvede požadovaná kategorie. Pro vyhledávání v korpusu jsou patrně nejužitečnější kategorie velkých (''Lu'') a malých (''Ll'') písmen uvnitř nadřazené kategorie písmen (''L''). Např. zadání ''\p{Lu}'' tak vyhledá libovolné velké písmeno. Je ale také možné vyhledávat znaky všech typů závorek, uvozovek, interpunkci aj. Další kategorie jsou uvedeny např. [[https://www.regular-expressions.info/unicode.html|zde pod nadpisem Unicode Categories]]. |
| |
| <WRAP round important 50%> |
| Upozornění: ''\p{Lu}'' **//není totéž//** co ''[A-Z]''. Zatímco unicodová kategorie pro velká písmena je obecně platná pro všechny jazyky a abecedy (a zahrnuje tedy např. "Á", "Ü" nebo "Ž"), znakové třídě ''[A-Z]'' odpovídá jen 26 velkých písmen anglické abecedy bez diakritických znamének (a tedy např. "Á", "Ü" nebo "Ž" nezahrnuje)! Důrazně proto doporučujeme vždy, když potřebujete pracovat s rozsahem písmen, používat unicodové kategorie. |
| </WRAP> |
| |
| Kategorie unicodu lze libovolně kombinovat s regulárními výrazy: |
| |
| ^ Dotaz ^ Výsledek ^ |
| | ''\p{Lu}.*'' | jakékoliv tvary obsahující počáteční velké písmeno | |
| | ''\p{Lu}+'' | tvary složené jen z velkých písmen (např. zkratky) | |
| | ''\p{Lu}\p{Ll}+'' | tvary s počátečním velkým písmenem a ostatními malými (např. propria nebo slova na začátku vět) | |
| | ''[^\p{L}]'' | jakýkoliv jeden nealfabetický znak (tj. nikoliv libovolné písmeno) | |
| | ''\p{L}.*[0-9].*'' | tvary začínající na písmeno a obsahující číslici | |
| |
| |
</WRAP> | </WRAP> |
| |
Použili jsme dotaz ''vy.+(lý|ný)'' s výchozím atributem ''lemma|word'', slovní druh jsme omezili na přídavná jména. Celkem jsme dostali 105 373 případů, mezi nejčastějšími figurují slova //vyspělý// (2220), //vytrvalý// (1127), //vybledlý// (695) z první skupiny, z druhé pak //vybraný// (6390), //vyrovnaný// (3158), //vyrobený// (2760) a další. | Použili jsme dotaz ''vy.+(lý|ný)'' s výchozím atributem ''lemma|word''. Celkem jsme dostali 105 373 případů, mezi nejčastějšími figurují slova //vyspělý// (2220), //vytrvalý// (1127), //vybledlý// (695) z první skupiny, z druhé pak //vybraný// (6390), //vyrovnaný// (3158), //vyrobený// (2760) a další. |
| |
S tímto dotazem úzce souvisí nástroj [[manualy:morfio|Morfio]], který slouží pro slovotvornou analýzu. | |
| |
===== Vyzkoušejte si na závěr ===== | ===== Vyzkoušejte si na závěr ===== |