Twitterのタイムラインを分かち書きにする
Google App Engine上で動く 形態素解析ライブラリ Gomoku が公開されています。jarに日本語辞書が含まれているため、jarを追加するだけで動作します。
早速ですが、Twitterのタイムラインを分かち書きにするページを作ってみました。サーバサイドの形態素解析に Gomoku を利用させていただきました。jarに含まれる辞書の読み込みがあるため、spin-upでは1,500〜2,500 cpu_ms程度かかります。一度ロードされた後は非常に軽快です。
やはり、TwitterのAPI Limitに引っかかる場合がありますね。EC2のmod_proxyを経由するとか試してみようかな。大丈夫そうな感じ。
2011/2/3: URL変更しました。また、githubのリンクが切れていたので直しました。
ソースコードです。
public class GetController extends Controller { private final Twitter twitterService = new TwitterFactory().getInstance(); @Override public Navigation run() throws Exception { if(!validate()) { throw new IllegalArgumentException(errors.toString()); } // タイムラインを取得する ResponseList<Status> timeline = twitterService.getUserTimeline(asString("userName")); // JSONテンプレートを定義する Jsonizer jsonizer = new Jsonizer(); jsonizer.type(Status.class).with(new PropertyGetter<Status>() { @Override public void get(Status e) { property(e.getText()).as("text"); property(e.getCreatedAt().getTime()).as("date"); // 形態素解析の結果をJSONプロパティに入れる property(Tagger.parse(e.getText())).as("parse"); } }); jsonizer.type(Morpheme.class).with(new PropertyGetter<Morpheme>() { @Override public void get(Morpheme e) { String[] featurePart = e.feature.split(","); property(e.surface).as("surface"); property(featurePart[0]).as("feature0"); property(featurePart[1]).as("feature1"); } }); // レスポンスを返す jsonizer.jsonize(timeline).send(response); return null; }https://github.com/int128/elshard/blob/a401b0fe5c4410fae43aedaf3f47e328ab2f7aba/src/demo/org/hidetake/elshard/demo/controller/tweet/parsed/GetController.java