Dotaz: Skloňování a synonyma (v PHP)

MyEgo.cz

home foto blogy mywindows.cz kontakt

Dotaz: Skloňování a synonyma (v PHP)

PHP 26.08.10

Pro jeden projekt potřebuji získat pro každé slovo nejen databázi všech jeho možných tvarů, ale i synonyma. Takže třeba pro slovo "zelená" získat i tvary "zelený", "zelené" a další, pro slovo "gauč" získat ekvivalentní "sedací souprava". Potřeboval bych ideálně poznat i kořen slova.

Zkoušel jsem pspell_suggest a podobné funkce v PHP, ale jsou zcela nespolehlivé, české slovníkové podklady pspellu jsou strašné.

Teoreticky by šel vzít slovník třeba z OpenOffice.org, převést jej do databázové podoby a používat alespoň pro ona synonyma.

Řešil jste někdo podobný problém?


Komentáře

  1. 1 Lavor Daniel 26.08.10, 08:08:46
    FB

    Pro různé tvary bych si postupně pomocí skriptu, který by čerpal z http://prirucka.ujc.cas.cz/... , vytvořil databázi. Nějaký čas by to asi zabralo, ale udělá se to jednou a je po problému. Synonyma Vás už napadly - OpenOffice.

  2. 2 Petr Duchek 26.08.10, 10:08:05
    FB

    České slovníkové podklady pspellu opravdu strašné nejsou (pokud máte slovník v systému a správně nastavené kódování).

    <?php
    $pspell_link = pspell_new("cs", "", "","utf-8");
    $suggestions = pspell_suggest($pspell_link, "koníšek");

    foreach ($suggestions as $suggestion)
    {
    echo "$suggestion\n";
    }
    ?>

    Výsledek:

    Honíšek
    Konášek
    Koníček
    Kotíšek
    Kožíšek
    koníček
    kožíšek
    koní šek
    koní-šek

    Výsledky jsou seřazeny abecedně a jsou to jen návrhy pro správné hláskování, takže pro určování synonym nepoužitelné.

    Ale je tu možnost použít slovník pro StarDict (česká synonyma k nalezení zde: http://lludvik.blogspot.com/2009/02/free-dictionary-stardict.html...) a PECL Extension (http://code.google.com/p/php-stardict/...)... případně udělat vlastní implementaci čistě v PHP.

  3. 3 Radek Hulán 26.08.10, 10:08:52
    FB

    [2] synonyma umím vyřešit přes slovníky OpenOffice, to je dostatečně kvalitní databáze.

    Otázkou je jak na skloňování a kořen slova.

  4. 4 Kotisch Petr 27.08.10, 12:08:17
    FB

    [3] Kvalitní morfologický slovník vytvořili na ÚFALu. Existuje i verze ke stažení zdarma s dostatečným počtem lemmat.

  5. 5 Tomáš Herceg 27.08.10, 10:08:13
    FB

    Nedávno jsem řešil podobný problém v C#, a tak jsem přeportoval stemmer z projektu Sphinx a trochu doplnil. Skloňování ve fulltextu neřeším (lemmatizátor je podstatně složitější než stemmer), prostě za kořen dám hvězdičku a najde to většinu tvarů.

  6. 6 Petr Duchek 27.08.10, 02:08:15
    FB

    [5] Tak pro aplikaci v C# by šel určitě použít http://hunspell.sourceforge.net/... , který využívá i OO.org - úmí krásně skloňovat podle vzorů, ale jeho nasazení do webové aplikace by bylo složitější.