Chci vytvořit nějakou jednoduchou matematickou strukturu, která bude obsahovat nějakou užitečnou informaci o přirozeném jazyce. Tuto strukturu chci získat automaticky pokud možno bez toho, abych stroji příliš napovídal jak má struktura vypadat. První pokus jsem udělal takto: Vzal jsem několik gigabytů textu a našel jsem dvojce slov, které mají alespoň padesát stejných kontextů. Kontext je slovo nalevo a slovo napravo. Tak se najdou slova, která mají něco společného. Z těchto dvojic jsem dále vyškrtal ty dvojice, které obsahují slovo, které je ve více jak deseti dvojicích. Tak se odstraní slova, které se všude jen motají a nic užitečného neříkají. Výsledek jsem dal do grafu. Texty byly z internetu. Do češtiny se připletlo dost anglických textů, ale anglická slova si povídají jen sami mezi sebou a mezi česká slova se nepletou. Překvapilo mě, že i takhle jednoduchý algoritmus na takhle "nečistých" datech může udělat docela plantou práci. Je však potřeba vytvořit něco úctyhodnějšího, a proto bude mít tento příspěvek pokračování. Cizím nápadům a připomínkám je nebráním, takže přemýšlejte, co by se dalo udělat.
4 komentáře:
Zaujímavý nápad! Škoda, že je ten obrázok príliš malý (aj keď si naň kliknem) na to, aby sa na ňom dali prečítať slová...
Ve win7-64/Firefox a v iOS5/Safari to je vidět dobře, v symbianu mám taky potíže. Ale nevadí, je to jenom hříčka, časem udělám lepší graf.
Navrhuji spojit různé tvary téhož slova (své/svého/svojí, praha/prahy/praze, ...) -- nevím, jak jednoduše na to (Google při vyhledávání to zjevně umí), ale graf by byl trochu souvislejší :)
Tohle určitě pujde. Je ale třeba vyřešit jeden problém: jak poznat, že jde o ruzná slova, která se jen stejně píší. Slova jako daně, stát, peklo, apod. K tomu snad by šlo použít kontexty. Tenhle problém mám už teď a řeším ho vypouštěním slov s mnoha vazbami, ale do budoucna chci tato slova nikoli mazat, ale udělat např z třídy republika-stát-běžet třídy republika-stát1, stát2-běžet. Po novém roce připravím data, aby si každý mohl takové věci zkoušet.
Okomentovat