( arpi_esp | 2022. 07. 02., szo – 19:24 )

es az igert output, ahogy a gepbol kijott, modositas nelkul:

 

 

Ha már ennyire (kovaszos)uborkaszezon van, elővettem egy régi otletem: írni egy olyan programot, ami ékezet nélküli szöveget|szövegét ekezetesit. Tuti írt már valaki ilyet, hallottam már olyanról aki ismer olyat akinek az ukannya látott is talán valahol az erdőben, de én nem találtam.

Az eredeti ötletem az volt, hogy neurális hálóval, szövegkörnyezet alapján word2vec-et felhasználva találna|találná ki, hogy a többféle|többfelé írásmód közül vajon ott melyikre lehet szükség. Ehhez először is fogtam pár ezer újságcikket, és osszedobtam egy python scriptet (gen_map.py) ami szavanként megnézi a gyakoriságot és a végén kilistázza melyikek azok a szavak, ahol többféle|többfelé ékezetes alak tartozik ugyanahhoz az ékezet nelkulihez. A meglepetés akkor jött, mikor lefuttattam (pár bugfix utan:)), és kiderült, hogy a szavak kb 90%-ának csak egyféle alakja van, tehát 1:1 lekepzesrol van szó. A maradékban viszont nagyon sok olyan van, ahol nem a szöveg témája (amire a word2vec jó lenne) miatt kell különböző alakot használni, hanem a nyelvtan, pl. ragozás|rágózás miatt. így első körben el is vetettem|vétettem a neurális hálót, nézzük meg|még csak simán statisztikailag hogy működik!

összeszedtem a word2vec tanításhoz gyűjtött anyagokból 4GB-nyi tiszta szép magyar szöveget|szövegét (wikipedia mellett újságcikkek, könyvek szovege), kb összesen félmillió szó:

5632380 518183909 4166064575 input.txt

Egy óra alatt lefutott ezen is, 8822173 különböző szó, de ebből csak 511820 szó fordult elő|élő 25-ször legalább, így a többivel nem is foglalkozunk. Ezek közül 24377 esetén van 1-nél több alak ugyanahhoz az ekezetlenitett verzióhoz, összesen 337570 esetén tér el az ékezetes változat, tehát itt is több, mint 90%-a 1:1 csere lesz!

Az eredményt kidumpoltam pickle-vel (wordmap.pck) és írtam egy másik scriptet (use_map.py) a teszteléshez, ez stdin-en kapott tx-ben kicseréli az ékezetes megfelelokre a szavakat (ahol több lehetőség van, ott a 2 leggyakoribbat írja bele |-al elvalasztva), és kiírja az stdout-ra. meg|még nem tökéletes, kisbetu-nagybetu kezelés és nem space-el elválasztott szaval esetén bugzik, de ez csak teszt...

Kommentbe felrakom ezen írás automatikusan ekezetesitett verzióját, ha pedig kiprobalnad, itten vala:

http://thot.banki.hu/ekezet/

A kiprobalashoz elég a use_map.py és wordmap.pck file. a py script stdin-rol stdout-ra (unix pipe/filter logika) dolgozik!

TODO: bugok javítása, és lefuttatni sokkal nagyobb inputon is.

A'rpi