Kódfejtő blog

Magánhangzó azonosítás Sukhotin algoritmussal

2012. március 01. 19:59 - L. B. Alberti

 

Magánhangzó azonosítás Sukhotin algoritmussal

Az 1970-es évek elején, Borisz Viktorovics Sukhotin, kidolgozott egy algoritmust, amivel egy szövegrészletben azonosítani lehet a magánhangzókat.

Ezt fogjuk most áttekinteni egy példán keresztül. Az érdekessége az, hogy „papír-ceruza” módszerrel is remekül működik

Vegyük példának a ’KIVITTE’ szót. Most tekintsünk el attól, hogy nyílt szöveget nézünk. Az eljárás működik minden olyan nyelvre, írásmódra ahol mássalhangzók, illetve magánhangzók fordulnak elő. Mindegy, hogy balról jobbra, vagy jobbról balra írnak vele. Szóval vesszük azt a szót, vagy szöveg töredéket, amiben azonosítani kívánjuk a hangzókat, és

  1. lépés: Számláljuk le, hogy melyik karakter hányszor fordul elő a többi karakter mellett. Az K mellett található az I (illetve I mellett az K) és a E (illetve E mellett az K). Azért számoljuk bele az első és utolsó betűt egymás mellett levőnek, hogy az írás irányából eső tévedést kizárhassuk, illetve ha csak egy szöveg töredéket vizsgálunk, nem minden esetben tudhatjuk hol kezdődik a szó. Ha leszámlálunk mindent, ezt a szimmetrikus mátrixot kapjuk.

 

 
K
I
V
T
E
K
0
1
0
0
0
I
1
0
2
1
0
V
0
2
0
0
0
T
0
1
0
1
1
E
1
0
0
1
0

 

  1. lépés: Töltsük fel a bal felső sarokból a jobb alsóba irányuló átlót nullákkal. Ha ebben az átlóban nullától eltérő érték szerepelne, az azt mutatja, hogy valamelyik betű önmaga mellett áll. Szóval töltsük fel nullákkal.

 

 
K
I
V
T
E
K
0
1
0
0
0
I
1
0
2
1
0
V
0
2
0
0
0
T
0
1
0
0
1
E
1
0
0
1
0

 

  1. lépés: Adjuk össze a sorokban lévő számokat, és jelöljük meg mindet mássalhangzónak

 

 
K
I
V
T
E
Sum
K
0
1
0
0
0
2
mássalhangzó
I
1
0
2
1
0
4
mássalhangzó
V
0
2
0
0
0
2
mássalhangzó
T
0
1
0
0
1
2
mássalhangzó
E
1
0
0
1
0
2
mássalhangzó

 

  1. lépés: Keressük meg azt a sort, ahol a legmagasabb az előfordulások összege. Ez a mássalhangzó valójában magánhangzó. Jelöljük meg.

 

 
K
I
V
T
E
Sum
K
0
1
0
0
0
2
mássalhangzó
I
1
0
2
1
0
4
magánhangzó
V
0
2
0
0
0
2
mássalhangzó
T
0
1
0
0
1
2
mássalhangzó
E
1
0
0
1
0
2
mássalhangzó

 

  1. lépés: Annak a sornak az összegéből vonjuk ki kétszer a magánhangzó előfordulását, amelyik betű mellett megtalálható. Például: Az K mellett egyszer fordul elő, tehát a K sorának az összege így alakul: 2-(2*1)=0; A V sorának az összege: 2-(2*2)=-2 és így tovább

 

 
K
I
V
T
E
Sum
K
0
1
0
0
0
0
mássalhangzó
I
1
0
2
1
0
4
magánhangzó
V
0
2
0
0
0
-2
mássalhangzó
T
0
1
0
0
1
0
mássalhangzó
E
1
0
0
1
0
2
mássalhangzó

 

Ismételjük a 4. lépést, amíg van nullánál nagyobb érték.

 

4. lépés (másodszor) Kiválasztjuk azt a mássalhangzót, amelyiknek legmagasabb a Sum értéke, és magánhangzónak jelöljük.

 

 
K
I
V
T
E
Sum
K
0
1
0
0
0
0
mássalhangzó
I
1
0
2
1
0
4
magánhangzó
V
0
2
0
0
0
-2
mássalhangzó
T
0
1
0
0
1
0
mássalhangzó
E
1
0
0
1
0
2
magánhangzó

 

5. lépés (másodszor) Kivonjuk az előfordulásának a kétszeresét abból a sorból amelyet a szomszédos betűje jelöl.

 

 
K
I
V
T
E
Sum
K
0
1
0
0
0
-2
mássalhangzó
I
1
0
2
1
0
4
magánhangzó
V
0
2
0
0
0
-2
mássalhangzó
T
0
1
0
0
1
-2
mássalhangzó
E
1
0
0
1
0
2
magánhangzó

 

Mivel nincs több nullánál nagyobb összeg, így meghatározhatjuk, hogy az I és az E magánhangzó. Mivel nyílt szöveggel teszteltük ez ugye nyilvánvaló is volt J

Előfordulhatnak olyan esetek, amikor több azonos érték is előfordul az összeg oszlopban és emiatt nem ad pontos eredményt az algoritmus. Ha leprogramozzuk az algoritmust, célszerű minél hosszabb szövegrészletet elemezni, hogy a tévesztések lehetőségét kiiktassuk.

Mivel a trilaterális elemzés végén, gyakorlási szándékkal feladott házi feladat megoldásával mindenki tojt a fejemre, ezért ettől most eltekintünk.

16 komment

A bejegyzés trackback címe:

https://kodblog.blog.hu/api/trackback/id/tr984282178

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

mig8 (törölt) 2012.03.04. 07:15:35

Bocsánat, nem gondoltam volna, hogy feladatom is van :)

Amúgy megcsináltad ezt a két elemzést az FBI-osra? Mit mond? Nekem különben az az érzésem az FBI-osnál, hogy van még egy csavar benne.

L. B. Alberti 2012.03.04. 10:46:59

@mig8: Megcsináltam, de nem vezetett számomra értelmezhető eredményre.

Véleményem szerint valami kódokat, rövidítéseket használt, és azt titkosította. Szerintem ennyi szövegrészlet alapján nem lehet érdemben megfejteni...

mig8 (törölt) 2012.03.05. 20:55:36

Bocs, hogy ezt mondom, de sejtettem. Ha nem haragszol elmondom, hogy én miket gondolok.

1. Amint a múltkor megjegyeztem, az első oldal tetején van egy ilyen: P1. Azaz page 1, ha angol a nyelv - és miért ne lenne az St Luisban?

2. Az első oldal alján vannak számok: 71, 74, 75. Mögöttük ugyanaz a karaktersorozat ismétlődik: NCBE. Ez nagyon hasonlít pl egy bevásárlólistához, pl: krumpli 3 kiló, répa 2 kiló, stb. Csak persze más dolgokból más mértékegység szerint.

3. Gyanús az első sor jobb széle, a zárójelek közötti rész. Tegyük fel, hogy levelet írt McCormick. Akkor itt dátumnak kellene lennie.

4. Végül mi van ha nem 1-1 megfeleltetés kell minden karakternek, hanem vmi más, mondjuk 1-2? Nyilván fontos volt, hogy más ne tudja könnyen dekódolni, ugyanakkor az is fontos lehetett, hogy gyorsan lehessen kódolni.

L. B. Alberti 2012.03.06. 08:47:24

Mért haragudnék?

Ez az NCBE szál szerintem ott sántít, hogy az első szövegbne szinte minden sor végén szerepel, nem csak a számok után.

Ha P1 a page 1. valóban miért ne lehetne, akkor több oldalnak kellene lennie. Azok hol vannak?

Ha levélnek írta, akkor valakinek tudnia kellene a megfejtést, elméletileg jelentkezhetett volna... (ha ugyan még él...). Szerintem inkább napló (ettől még lejet ott dátum), vagy az írásképből ítélve csak jegyzetek...

mig8 (törölt) 2012.03.07. 14:39:15

@L. B. Alberti:

P1. Két oldal van meg, ennyit találtak nála. De attól még lehet több. Vagy ha összesen van két oldal, de valamiért fontos, hogy lehessen tudni, hogy melyik az első, akkor én is csak az egyiket jelölném meg.

Dátum. Én is azt hiszem, hogy jegyzetek, mondjuk naplójegyzetek. Ha valaki rendszerető, szokott az ilyenre dátumot írni.

NCBE. Nem feltétlenül. Tegyük fel, hogy azt jelenti: "centi". Mindenki szokta mondani, hogy "pár centi", "x-valahány centi", "hány centi" és itt sincs csak szám mellette. Azonkívül te is ismersz olyan rejtjelezést biztos, amiben többször kijön ugyanaz a karakterlánc, nem?

Még egy érdekességet megemlítenék. Első oldal, legalsó sorban: WLD'S. Az angol nyelvet feltételezve, ekkor "WLD" egy személy neve lehet, hisz a nyelvtanban a birtokos szerkezet csak személyek neve után szokott lenni ilyen: 'S.

ágika47 2012.04.04. 10:29:43

Kedves L.B.Alberti!

Segítséget szeretnék kérni egy kódolt szöveg megfejtéséhez: FKJU FBONKO-DBOKP BNSMKCC WZVTSD. Próbálkoztam vele, de nem sikerült megfejtenem. Előre is köszönöm.

L. B. Alberti 2012.04.04. 20:18:38

@ágika47: esetleg kicsit bővebb infó a szövegről? (szövegkörnyezet, nyelv, stb.)

ágika47 2012.04.04. 21:05:47

@L. B. Alberti: Kedves L.B.Alberti! Ez a legutóbbi Múlt-kor újságban jelent meg. Egy híres embertől származó idézet, mert még a dátumát is kérik a megfejtéshez. Üdv. Ágika47.

L. B. Alberti 2012.04.05. 13:21:39

@ágika47: Kedves Ágika! Megnéztem az újságban. Ez egy egyszerű behelyettesítéses titkosírással készült. Minden betűnek egy másik felel meg. Mivel a játék még él, nem szeretném elrontani mások örömét, azzal, hogy ide kiírom a megfejtését. Támpontnak csak annyit, hogy indulj ki abból a kétbetűs szóból, amit ide nem másoltál be :)
Egyébként az idézet nyelve magyar.

ágika47 2012.04.05. 15:43:56

Köszönöm,akkor még próbálkozom, hátha sikerül....

ágika47 2012.04.11. 13:09:55

Hát sajnos eddig semmi. A kétbetűs szóhoz azért kaphatnék segítséget, hogy legalább legyen valamilyen kiindulási pontom? Sokat segítene, és talán így nem veszem el mások játékát sem....

L. B. Alberti 2012.04.14. 10:55:46

@ágika47: Végezz egy gyakoriság elemzést a szöveg betűire. A kétbetűs szó a leggyakoribb magyar magánhangzóval kezdődik. Arra figyelj, hogy nem használt a rejtvény készítője ékezetes betűket!

ágika47 2012.04.14. 15:12:41

Köszönöm, akkor megpróbálok az ebből az e-ből indulni...

ágika47 2012.04.22. 13:15:26

Köszönöm, végre sikerült a segítségeddel megfejtenem! Azért a kötőjel kicsit megtévesztő volt, a helyesírás szabályai szerint azt a szór egybe kell írni....

L. B. Alberti 2012.04.23. 14:00:27

@ágika47: Gratulálok!

Valószínű, az újság tördelésénél került bele a kötőjel (elválasztó jel), ahelyett, hogy kisebb betűkkel szerkesztették volna.

ágika47 2012.04.23. 14:22:22

Köszönöm. Igaz, az újság címe is el van választva. Lehet, hogy szeretik ezt a jelet. Mondjuk egy címben még megengedhető, de egy rejtvényben azért zavaró...
süti beállítások módosítása