pelegrinova / morfo_segmentace

poloautomatická segmentace textu na morfémy + výpočet dat pro MAL: pokusy
3 stars 1 forks source link

Náhrada grafémů: seznam povolených znaků #38

Open Glutexo opened 3 years ago

Glutexo commented 3 years ago

V tuto chvíli probíhá čištění textu odebíráním nechtěných znaků. Je to však vhodný přístup? Nabízí se místo seznamu vyřazovaných znaků naopak mít seznam povolených. Jenže které to jsou? S českými znaky si nevystačíme. Ale snad bychom mohli ponechat tzv. znaky slov (word characters). Tuto třídu znaků používá Python, aby určil jaké znaky se mohou vyskytovat v názvech proměnných.

Za tímto účelem bychom mohli použít již přítomné volání re.sub.

text = re.sub(r"([^\w\s]|[\d])+", "", text)

[^\w\s] znamená „všechny znaky, jež nejsou (^) ani znaky slov (\w), ani bílé znaky (\s). Číslice jsem nahradil za \d, neboť do této kategorie spadají všechny číslice, nejen ty arabské. Též je to sémantičtější: říkáme tím, že nechceme číslovky, a ne, že nechceme konkrétní znaky.

Celý výraz tedy říká: nahraď mezerou všechny řady (+) znaků sestávajících se z těchto vyloučených. Číslice tam musejí být zvlášť, neboť se považují za znaky slov.

>>> text = "proč. ne? protože, proto! kö'bliha 100dola ar٦ab"
>>> print(re.sub(r"([^\w\s]|[\d])+", "", text))
proč ne protože proto köbliha dola arab

Pokud se rozhodneme jít touto cestou, nepotřebujeme #37.