pochi-goya

ちゃんとしたプログラマになりたい

GooglePlayからレビュー取得

形態素解析はできるようになった.

次は色々処理する対象を取得しなければならない. 学生の頃はAmazonのレビューを泥臭い方法(wget)で取得していたが, さすがにそんなことはもうしたくない...

今時,レビューってどこに集まるかな?ということで, AppStore系だろうと考え,ひとまずGooglePlayからレビューを持ってくるようにしてみた.

AndroidMarketAPIというオープンソースライブラリがあったので, ありがたく使わせていただくことに.

以下のコードで,無事アプリのレビューを取得できました. importが半端なのは,気にしない.

import com.gc.android.market.api.MarketSession;
import com.gc.android.market.api.model.Market;
import java.util.List;

public class AndroidMarketAPI {
    public static void main(String args[]) {

        MarketSession session = new MarketSession();
        session.getContext().setAndroidId("0123012301230123");// ここはよくわかってない
        session.getContext().setDeviceAndSdkVersion("passion:8");// ここもよくわかってない
        session.getContext().setVersion(1002012);// ここもっとよくわかってない

        session.login(/*Googleアカウント*/,/*パスワード*/);

        Market.CommentsRequest commentsRequest = Market.CommentsRequest.newBuilder()
                .setAppId(/*アプリのID*/)
                .setStartIndex(0)
                .setEntriesCount(10)
                .build();

        session.append(commentsRequest, new MarketSession.Callback<Market.CommentsResponse>() {
            @Override
            public void onResult(Market.ResponseContext context, Market.CommentsResponse response) {
                List<Market.Comment> comments = response.getCommentsList();
                for( Market.Comment comment : comments ) {
                    System.out.println(comment.getText());
                }
            }
        });

        session.flush();
    }

}

javaでMecab

Java系言語,あわよくばWebフレームワーク系の勉強のために,何か作ろう思ってネタはないかと思っていたところ,ふと学生時代にやってた自然言語処理をやってみようと思いつく.

学生時代はperlMecabを使っていましたが,

MecabJavaから呼べるのかしらと調べてみると,

ちゃんとJavaバインディングがありました

ちょっとMakefileをいじりつつ(64bit向けビルドしたり,JDKのパスをあわせたり)導入し, 無事以下のコードが動作しました.

import org.chasen.mecab.Tagger;
import org.chasen.mecab.Node;

public class main {
    public static void main(String args[]) {
        Tagger tagger = new Tagger("-Ochasen");
        Node node = tagger.parseToNode("すもももももももものうち");
        for(; node != null; node = node.getNext() ) {
            System.out.println( node.getSurface() + ":" + node.getFeature() + "\n");
        }
    }

    static {
        System.loadLibrary("MeCab");
    }

}

結果は以下.

:BOS/EOS,*,*,*,*,*,*,*,*

すもも:名詞,一般,*,*,*,*,すもも,スモモ,スモモ

も:助詞,係助詞,*,*,*,*,も,モ,モ

もも:名詞,一般,*,*,*,*,もも,モモ,モモ

も:助詞,係助詞,*,*,*,*,も,モ,モ

もも:名詞,一般,*,*,*,*,もも,モモ,モモ

の:助詞,連体化,*,*,*,*,の,ノ,ノ

うち:名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ

:BOS/EOS,*,*,*,*,*,*,*,*

次はどうしようかな.どこかから素材になる文章をひっぱってこようか. それともScalaから使ってみようか.