Yahoo!の形態素解析APIを使ってたのを思い出したので、そのメモ。
Clojureから、Yahoo!のこのAPIを使って、任意の文字列を形態素解析できるようにします。
・Yahoo!日本語形態素解析API
テキストデータと言えば、青空文庫
・「青空文庫/夏目漱石/それから」
Clojure側ではとりあえず、
- httpのリクエストを送リ、データを受け取る。
- データをClojureの内部形式(ハッシュマップ、そして、リスト)に戻す。
という2つの処理が出来ればOK。簡単です。
リクエストは、Clojureのhttp-agentというラッパーを使います。
Yahoo!日本語形態素解析APIは、XML形式でデータを返してくれます。
今回は、そのデータを一旦、ローカルに保存して、ClojureのXMLパーサを使って、データをハッシュマップにマッピングします。そこから、必要なデータだけ抜き出して、単語列にします。
以下が実行結果とコード。
以下が実行結果とコード。
user=> (load-file "use-yjma-api.clj") #'user/tokenizer user=> (tokenizer kana "誰か慌ただしく門前を馳けて行く足音がした時、代助の頭の中には、大きな俎下駄が空から、ぶら下つてゐた。けれども、その俎下駄は、足音の遠退くに従つて、すうと頭から抜して消えて仕舞つた。さうして眼が覚めた。") ("だれ" "か" "あわただしく" "もんぜん" "を" "はせ" "け" "て" "いく" "あしおと" "が" "し" "た" "とき" "、" "しろ" "たすけ" "の" "あたま" "の" "なか" "に" "は" "、" "おおきな" "まないた" "げた" "が" "そら" "から" "、" "ぶらさがり" "つて" "ゐ" "た" "。" "けれども" "、" "その" "まないた" "げた" "は" "、" "あしおと" "の" "とおのく" "に" "じゅう" "つて" "、" "すう" "と" "あたま" "から" "ぬき" "し" "て" "きえ" "て" "しまい" "つた" "。" "さ" "う" "し" "て" "め" "が" "さめ" "た" "。") user=> (tokenizer kanji "誰か慌ただしく門前を馳けて行く足音がした時、代助の頭の中には、大きな俎下駄が空から、ぶら下つてゐた。けれども、その俎下駄は、足音の遠退くに従つて、すうと頭から抜して消えて仕舞つた。さうして眼が覚めた。") ("誰" "か" "慌ただしく" "門前" "を" "馳" "け" "て" "行く" "足音" "が" "し" "た" "時" "、" "代" "助" "の" "頭" "の" "中" "に" "は" "、" "大きな" "俎" "下駄" "が" "空" "から" "、" "ぶら下" "つて" "ゐ" "た" "。" "けれども" "、" "その" "俎" "下駄" "は" "、" "足音" "の" "遠退く" "に" "従" "つて" "、" "すう" "と" "頭" "から" "抜" "し" "て" "消え" "て" "仕舞" "つた" "。" "さ" "う" "し" "て" "眼" "が" "覚め" "た" "。")
- app-idには、yahooから与えられたアプリケーションIDを記述します。
- (平)仮名と漢字を選べます。(XMLデータには、両方の結果があります)
- リクエストの日本語のエンコードには、java.net.URLEncoder/encode
- take-tokensは、ネストしたハッシュマップから、単語の列を生成する。
0 件のコメント :
コメントを投稿