packages feed

cabocha-0.1.0.0: test/Test.hs

import qualified Text.CaboCha as C

main :: IO ()
main = do
    c <- C.new ["cabocha", "-f3", "-n1"]
    let s = "太郎は花子が読んでいる本を次郎に渡した"
    putStrLn =<< C.parse c s
    chunks <- C.parseToChunks c s
    mapM_ printChunk chunks

printToken :: C.Token String ->  IO ()
printToken t = do
    putStrLn "## token"
    putStrLn $ "surface:            " ++ C.tokenSurface t
    putStrLn $ "normalized surface: " ++ C.tokenNormalizedSurface t
    case C.tokenNE t of
        Just x
            | '0' `elem` x -> putStrLn "named entity:       no"
            | otherwise -> return ()
        Nothing -> return ()
    case C.tokenAdditionalInfo t of
        Just x -> putStrLn $ "additional info:    " ++ x
        _ -> return ()
    putStrLn $ joint ", " (C.tokenFeatureList t)

printChunk :: C.Chunk String -> IO ()
printChunk c = do
    putStrLn "# chunk"
    putStrLn $ "link:            " ++ show (C.chunkLink c)
    putStrLn $ "head position:   " ++ show (C.chunkHeadPos c)
    putStrLn $ "func. position:  " ++ show (C.chunkFuncPos c)
    putStrLn $ "token position:  " ++ show (C.chunkTokenPos c)
    putStrLn $ "token size:      " ++ show (C.chunkTokenSize c)
    putStrLn $ "score:           " ++ show (C.chunkScore c)
    case C.chunkAdditionalInfo c of
        Just x -> putStrLn $ "additional info: " ++ x
        _ -> return ()
    mapM_ printToken (C.chunkTokens c)

joint :: String -> [String] -> String
joint _ [] = []
joint _ [xs] = xs
joint glue (x:xs) = x ++ glue ++ joint glue xs