OLTM: One-Line-Text-Miner β version
ツイート
このエントリーをはてなブックマークに追加

OLTM: One-Line-Text-Miner β version

Last update: 2018-12-25
松村 真宏 <>

はじめに

Yahoo! JAPANの日本語形態素解析Web APIを使ってワンライナーでテキストマイニングするスクリプトです。Mac OSXのターミナル,もしくはWindows 10のWSL(Windows Subsystem for Linux)のターミナルから実行できます。

使い方

  1. Mac OSXの場合はたぶんなにもしなくてOKです(知らんけど)。Windows 10の場合はWSLをインストールしてください。WSLの設定についてはWindows Subsystem for Linuxをインストールしてみよう!が参考になります。デフォルトではtidyが入っていないので,ターミナルから以下のコマンドでインストールしてください。
    sudo apt install tidy
  2. アプリケーションIDを取得して,ターミナルから以下のコマンでAPPID変数に設定してください。
    APPID='dj00...' ← 取得したClient IDを入力してください
  3. 分析したいテキストデータ(サンプルデータはa.txt,文字コードはUTF-8)を準備してください。
  4. 以下のスクリプトをターミナルにコピペして実行してください。形容詞,名詞,動詞の単語の頻度をカウントして上位20語を出力します。
    cat a.txt|while read V;do curl -s "http://jlp.yahooapis.jp/MAService/V1/parse?appid=$APPID&sentence=$(echo $V)&filter=1|9|10&response=baseform,pos"|tidy --indent-cdata true -xml -utf8 -i 2> /dev/null|grep -o "]*>[^<]*\(.*\)<\/bas/\1/";done > b.txt;cat b.txt|sort|uniq -c|sort -nr|head -20
    出力ファイルをcsvファイルとして保存したいときは以下のスクリプトを使えば「c.csv」というファイルが出力されます。
    cat a.txt|while read V;do curl -s "http://jlp.yahooapis.jp/MAService/V1/parse?appid=$APPID&sentence=$(echo $V)&filter=1|9|10&response=baseform,pos"|tidy --indent-cdata true -xml -utf8 -i 2> /dev/null|grep -o "]*>[^<]*\(.*\)<\/bas/\1/";done > b.txt;cat b.txt|sort|uniq -c|sort -nr|head -20|awk '{print $1","$2}' > c.csv

パラメータの設定について

filterオプションにより品詞の指定ができます。上記例では「filter=1|9|10」になっているので,形容詞,名詞,動詞を指定しています。

filterに指定可能な品詞番号:
1 : 形容詞
2 : 形容動詞
3 : 感動詞
4 : 副詞
5 : 連体詞
6 : 接続詞
7 : 接頭辞
8 : 接尾辞
9 : 名詞
10 : 動詞
11 : 助詞
12 : 助動詞
13 : 特殊(句読点、カッコ、記号など)

出力単語数を変更するにはheadの引数を変更してください。上記例では「head -20」になっているので,上位20件だけ出力するように指定しています。

Text Mining on the Command Lineにもいろいろ載っています。

Web APIの利用制限について

OLTMでは,テキストデータを1行ごとにAPIに送ってるので,たとえば100行のテキストデータを分析すると100回リクエストを行います。リクエストの上限は1日5万回(詳しくは利用制限をご覧ください)なので,大きなテキストデータを分析するのには向いていません。その際はTTMをお使いください。

スクリーンショット

手前がMac OSXの実行結果,奥がWindows 10 WSLの実行結果です。

更新履歴