[~]$ sudo svn checkout https://svn.java.net/svn/sen~svn/trunk/sen /opt/sen
[~]$ cd /opt/sen [/opt/sen]$ sudo ant ・・・ jar: [copy] Copying 1 file to /opt/sen/build/classes/net/java/sen/resources [jar] Building jar: /opt/sen/lib/sen.jar BUILD SUCCESSFUL Total time: 2 seconds [/opt/sen]$
[~]$ cd /opt/sen/dic [/opt/sen/dic]$ sudo ant必要なら ant -Dperl.bin=[Perlのインストール先]\perl というように perl のインストール先を指定する
[~]$ cd /opt/sen/bin [/opt/sen/bin]$ export SEN_HOME=/opt/sen [/opt/sen/bin]$ sh sen.sh Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8 done. Please input Japanese sentence: [INFO] Dictionary - token file = /opt/sen/dic/token.sen [INFO] Dictionary - time to load posInfo file = 13[ms] [INFO] Dictionary - double array trie dictionary = /opt/sen/dic/da.sen [INFO] DoubleArrayTrie - loading double array trie dict = /opt/sen/dic/da.sen [INFO] DoubleArrayTrie - loaded time = 0.4[ms] [INFO] Dictionary - pos info file = /opt/sen/dic/posInfo.sen [INFO] Dictionary - time to load pos info file = 1[ms] [INFO] Tokenizer - connection file = /opt/sen/dic/matrix.sen [INFO] Tokenizer - time to load connect cost file = 61[ms] すもももももももものうち すもも (すもも) 名詞-一般(0,3,3) スモモ スモモ も (も) 助詞-係助詞(3,4,1) モ モ もも (もも) 名詞-一般(4,6,2) モモ モモ も (も) 助詞-係助詞(6,7,1) モ モ もも (もも) 名詞-一般(7,9,2) モモ モモ の (の) 助詞-連体化(9,10,1) ノ ノ うち (うち) 名詞-非自立-副詞可能(10,12,2) ウチ ウチ
形態素解析のサンプルに「すもももももももものうち」を使うのは、言語処理の分野でのお約束らしい
[~]$ mvn install:install-file -Dfile=/opt/sen/lib/sen.jar -DgroupId=sen -DartifactId=sen -Dversion=1.2.2.1 -Dpackaging=jar -DgeneratePom=true
$ cat ~/.m2/repository/sen/sen/1.2.2.1/sen-1.2.2.1.pom <?xml version="1.0" encoding="UTF-8"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>sen</groupId> <artifactId>sen</artifactId> <version>1.2.2.1</version> <description>POM was created from install:install-file</description> <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> </dependencies> </project>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.snail.exam</groupId> <artifactId>SENExam</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>SENExam</name> <url>http://maven.apache.org</url> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>sen</groupId> <artifactId>sen</artifactId> <version>1.2.2.1</version> </dependency> <dependency> <groupId>com.ibm.icu</groupId> <artifactId>icu4j</artifactId> <version>4.6.1</version> </dependency> </dependencies> </project>
package com.snail.exam.senexam; import com.ibm.icu.text.Transliterator; import net.java.sen.StringTagger; import net.java.sen.Token; /** * Hello world! * */ public class App { public static void main(String[] args) { try { String kanji = "金がなければくよくよします女に振られりゃなきまする\n" + "腹が減ったらおまんま食べて命尽きればあの世行き\n" + "有難や有難や\n"; String path = "/opt/sen/conf/sen.xml"; StringBuilder sb = new StringBuilder(); StringTagger tagger = StringTagger.getInstance(path); Transliterator tr = Transliterator.getInstance("Katakana-Latin"); Token[] token = tagger.analyze(kanji); if (token != null) { StringBuilder srcSb = new StringBuilder(); StringBuilder kanaSb = new StringBuilder(); for (int i = 0; i < token.length; i++) { srcSb.append(token[i].getSurface()); srcSb.append(" "); kanaSb.append(token[i].getReading()); kanaSb.append(" "); } sb.append(srcSb); sb.append("\n"); sb.append(kanaSb); sb.append("\n"); sb.append(tr.transform(kanaSb.toString())); sb.append("\n\n"); } System.out.println(sb.toString()); } catch (Exception e) { e.printStackTrace(); } } }
金 が なけれ ば くよくよ し ます 女 に 振ら れりゃ なき まする 腹 が 減っ たら お まんま 食べ て 命 尽きれ ば あの世 行き 有難 や 有 難 や キン ガ ナケレ バ クヨクヨ シ マス オンナ ニ フラ レリャ ナキ マスル ハラ ガ ヘッ タラ オ マンマ タベ テ イノチ ツキレ バ アノヨ イキ アリガタ ヤ ユウ ナン ヤ kin ga nakere ba kuyokuyo shi masu on'na ni fura rerya naki masuru hara ga he~tsu tara o manma tabe te inochi tsukire ba anoyo iki arigata ya yuu nan yaちょっとおかしいところがあるけど、りっぱに解析されている。