Год назад, для одного из проектов мне понадобилась морфология, google и yandex вариантов для haskell не нашли.
Немного изучив предметную область, написал свой упрощенный вариант морфологии.
Описание
Словарь взял из pymorphy, из функционала присутствует только нормализация, все остальное мне было не нужно.
Пример использования:
12345678910111213141516171819202122232425
moduleMainwhereimportText.Morphology.RussianimportData.Text(pack)-- | import modules for show cyrillic in consoleimportData.ByteString.Char8(putStrLn)importData.Text.Encoding(encodeUtf8)importPreludehiding(putStrLn)main::IO()main=do-- | recreate binary file with morphology base, if you realy need this-- | makeMorph-- | create morph.bin file in in data_dir -- | about data_dir see here [about data_dir](http://neilmitchell.blogspot.ru/2008/02/adding-data-files-using-cabal.html)-- | load binary file from data_dir, and return IO Morphnormal<-normalFormletcheck=normal(pack"есть")mapM_putStrLn$mapencodeUtf8checkletcheck=normal(pack"ржи")mapM_putStrLn$mapencodeUtf8check
В результате:
12345678
>:lMain>mainбытьестьестьрожьржаржать
Если нормальной формы не найденно возвращается пустой список.