GASTMはGoogleスプレッドシート上でテキストマイニングを実行します。インターネットに繋がっていてChromeが動く環境なら動くと思います(未確認)。形態素解析はGAS (Google Apps Script)を使ってYahoo! JAPANの日本語形態素解析Web APIを呼び出していますが,それ以外はスプレッドシートの関数のみで処理しています。
var appid = "(Client IDを入れて下さい)"
のところには,上記で取得したClient IDを入れて下さい。
(「Googleスプレッドシートの機械学習アドオンを日本語で試す」のウェブページを大いに参考にしました)function yahoo_nlp(text)
{
var appid = "(Client IDを入れて下さい)";
// var filter = "1%7C2%7C3%7C4%7C5%7C6%7C7%7C8%7C9%7C10"; // 全ての品詞
var filter = "1%7C9%7C10"; // 形容詞,名詞,動詞
var response = "surface,reading,pos,baseform,feature";
var url = "http://jlp.yahooapis.jp/MAService/V1/parse?appid="+appid+"&response="+response+"&results=ma&sentence="+text+"&filter="+filter;
var namespace = XmlService.getNamespace("urn:yahoo:jp:jlp");
// APIを呼ぶ
var xml = UrlFetchApp.fetch(url);
// XMLをパース
var document = XmlService.parse(xml.getContentText());
var entries = document.getRootElement();
var ma_result = entries.getChild("ma_result", namespace);
var word_list = ma_result.getChild("word_list", namespace);
var word = word_list.getChildren("word", namespace);
var ret = "";
for (var i = 0; i < word.length; i++) {
// スペース区切りで抽出
ret += word[i].getAllContent()[3].asElement().getText() + "|" + word[i].getAllContent()[2].asElement().getText() + " ";
}
return ret;
}
=yahoo_nlp(A1)
すると以下のように「形態素|品詞」が半角スペース区切りで出力されます。
セルB1をB2〜B22までコピーすると,全てのテキストデータが形態素解析されます。
=transpose(split(CONCATENATE(B:B)," "))
=unique(C:C)
=countif(C:C,D1)
セルE1をE2〜E22までコピーすると,全ての語の頻度が出力されます。
=sort(D:E,2,0)
スクリプト中のfilter変数で品詞を指定しています。上記スクリプトでは filter = "1%7C9%7C10"
(filter=1|9|10の意味,|は%7CにURLエンコードされてます)になっているので,形容詞,名詞,動詞を指定しています。ここを書き換えれば品詞を指定できます。
filterに指定可能な品詞番号:
1 : 形容詞
2 : 形容動詞
3 : 感動詞
4 : 副詞
5 : 連体詞
6 : 接続詞
7 : 接頭辞
8 : 接尾辞
9 : 名詞
10 : 動詞
11 : 助詞
12 : 助動詞
13 : 特殊(句読点、カッコ、記号など)
GASTMでは,yahoo_nlp()を呼び出すたびに1回リクエストを送っています。リクエストの上限は1つのアプリケーションIDにつき24時間で5万回(詳しくは利用制限をご覧ください)なので,大きなテキストデータを分析する際にはご注意下さい。
コマンドライン原理主義の方はワンライナーで同じことができる OLTM: One-Line-Text-Miner をお使い下さい。