GAE/JでKuromojiを使って形態素解析
http://atilika.org/confluence/pages/viewpage.action?pageId=131141
↑でKuromojiをダウンロードして、展開して出てきた kuromoji-x.x.x.jar を普通に WEB-INF/lib に配置して、下のようなコード(slim3)を書くだけ。
jarファイルが約11MBで、辞書付きの形態素解析ライブラリとしては小さいけれど、GAEのファイルサイズ制限である10MBをわずかにオーバーしているのが残念すぎたのだった。コマンドラインで次のようにjarファイル分割オプションを指定してデプロイ。
C:\...\appengine-java-sdk-1.4.3\bin>appcfg.cmd --enable_jar_splitting update path\to\war
あと1MBほどがんばって削減してくれないかな…。
http://www.team-guangzhou.com/kuromoji/input
public class AnalyzeController extends Controller { private Tokenizer tokenizer = Tokenizer.builder().build(); @Override public Navigation run() throws Exception { String s = asString("text"); if (StringUtil.isEmpty(s)) { s = "何か文章を入力してください。"; } List<Token> tokens = tokenizer.tokenize(s); requestScope("tokens", tokens); return forward("analyze.jsp"); } }
<%@page pageEncoding="utf-8" contentType="application/json; charset=utf-8" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@taglib prefix="f" uri="http://www.slim3.org/functions" %> {"tokens": [ <c:forEach var="token" items="${tokens}" varStatus="loop1"> { "surfaceForm": "${f:h(token.surfaceForm)}", "features": [<c:forEach var="feature" items="${token.allFeaturesArray}" varStatus="loop2">"${f:h(feature)}"<c:if test="${!loop2.last}">,</c:if></c:forEach>] }<c:if test="${!loop1.last}">, </c:if> </c:forEach> ]}