2015年6月6日土曜日

haskellでMeCab(形態素解析)をやってみた

お酒にやられた体に必要なものは、メカブです...

まずはインストール


超有名な形態素解析エンジンのMeCabさんをインストゥールする、まずは本体と辞書
karky7 ~ # emerge -pv app-text/mecab

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] app-text/mecab-0.996::gentoo  USE="unicode -static-libs" 1,366 KiB
[ebuild  N     ] app-dicts/mecab-ipadic-2.7.0.20070801::gentoo  USE="unicode" 11,922 KiB

Total: 2 packages (2 new), Size of downloads: 13,288 KiB

 * IMPORTANT: 34 news items need reading for repository 'gentoo'.
 * Use eselect news read to view new items.

karky7 ~ # 
さすがgentoo一発ですね、つづいてMeCab Haskell
karky7 ~ # emerge -pv dev-haskell/mecab

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ~] dev-haskell/mecab-0.4.0-r1:0/0.4.0::haskell  USE="doc hoogle hscolour profile" 0 KiB

Total: 1 package (1 reinstall), Size of downloads: 0 KiB

 * IMPORTANT: 34 news items need reading for repository 'gentoo'.
 * Use eselect news read to view new items.

karky7 ~ # 

Haskellで動かしてみる


いっぱいオプションがあるのですが、わからないのでつかわない
{-# LANGUAGE OverloadedStrings #-}
import Text.MeCab

main :: IO()
main = do
  let str = [ "和人が和人でシャープA", "カズトも荒んでる",
              "ヨシロウトカズトガナイスガイ", "ヨシロウとカズトがナイスガイ" ]
  mapM_ putStr =<< mapM wakati str

wakati :: MeCabString s => s -> IO s
wakati str = new2 "-O wakati -l2" >>= parse' str

parse' :: MeCabString s => s -> MeCab -> IO s
parse' = flip parse
うごかしてみると、
~/Code/haskell/MeCab $ runghc MeCab5.hs
和人 が 和人 で シャープ A
カズト も 荒ん でる
ヨシロウトカズトガナイスガイ
ヨシロウ と カズト が ナイスガイ
~/Code/haskell/MeCab 
ヨシロウトカズトガカタカナでつながっていると分けられないようです、MeCabも分けられない強力な繋がりをもっているのでしょう...



0 件のコメント:

コメントを投稿