ここでは, 各種のネットワーク呼び出しプロトコルに対応させる で用意したRaSCサービスを,ProtocolBuffers経由で呼び出す 方法について説明します.呼び出し用のクライアントは,Java で作成します.
起動済みのRaSCサービスを使用しますので, 各種のネットワーク呼び出しプロトコルに対応させる を実施して,RaSCサービスを起動しておきます.
まず,RaSCクライアントサンプルパッケージをダウンロードして,解凍します.
$ wget https://alaginrc.nict.go.jp/rasc/resources/rasc-client-1.0.0.zip
$ unzip rasc-client-1.0.0.zip
RaSCクライアントサンプルパッケージを解凍すると,以下のファイルが展開されます.
rasc-client-1.0.0/
+ lib/
+ … (必須ライブラリ群)
+ ClientProtcolBuffers/
+ build.xml (クライアント用 build.xml)
+ src/ (クライアント用Javaソースフォルダ)
+ ClientProtcolBuffers.java (クライアント用ソース)
以下のファイルについて説明します.
まず,ClientProtcolBuffers/src/ClientProtcolBuffers.java の内容を説明します. ClientProtocolBuffers.javaは,Javaで実装したProtocolBuffersクライアントのサンプルコードです.
ClientProtcolBuffers/src/ClientProtcolBuffers.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import java.net.MalformedURLException;
import java.net.URL;
import jp.go.nict.langrid.client.impl.protobuf.PbClientFactory;
import jp.go.nict.wisdom.wrapper.api.TextAnalysisService;
public class ClientProtcolBuffers {
/**
* ProtocolBuffers クライアントサンプル.
*
* @param args args[0] ユーザプログラムに渡す文字列
*/
public static void main(String[] args) {
try {
if(args.length <= 0){
System.out.println("引数にユーザプログラムに渡す文字列を指定してください.");
return;
}
TextAnalysisService s = new PbClientFactory().create(TextAnalysisService.class,
new URL("http://localhost:8080/___WAR_NAME___/pbServices/___SERVICE_NAME___"));
System.out.println(args[0]);
System.out.println("--- result ---");
System.out.println(s.analyze(args[0]));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
|
(参考) jp.go.nict.wisdom.wrapper.api.TextAnalysisService Interface クラス
1 2 3 4 5 6 | package jp.go.nict.wisdom.wrapper.api;
public interface TextAnalysisService {
String analyze(String text) throws Exception;
String[] analyzeArray(String[] text) throws Exception;
}
|
次に,ProtocolBuffersクライアント用build.xmlの内容を説明します.
ClientProtcolBuffers/build.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <?xml version="1.0" encoding="utf-8"?>
<project name="rasc_client" default="client">
<target name="init">
<mkdir dir="build" />
</target>
<target name="clean" depends="init">
<delete dir="build" />
</target>
<target name="client" depends="init">
<mkdir dir="build/client" />
<javac destdir="build/client" encoding="UTF-8"
includeantruntime="false" debug="true">
<src path="./src" />
<classpath>
<fileset dir="../lib" includes="*.jar" />
</classpath>
</javac>
<jar jarfile="build/clientProtocolBuffers.jar">
<fileset dir="build/client" includes="**/*.class" />
<fileset dir="./src" includes="**/*.java" />
<manifest>
<attribute name="Main-Class" value="ClientProtcolBuffers" />
<attribute name="Class-Path"
value=". ../../lib/jp.go.nict.langrid.client.ws_1_2.protobuf.jar
../../lib/wrapper-api.jar ../../lib/jp.go.nict.langrid.client.jar
../../lib/protobuf-java-2.2.0.jar ../../lib/jp.go.nict.langrid.commons.jar
../../lib/jp.go.nict.langrid.commons.cs.jar ../../lib/jp.go.nict.langrid.commons.protobufrpc.jar
../../lib/jp.go.nict.langrid.commons.beanutils.jar ../../lib/jp.go.nict.langrid.language.jar" />
</manifest>
</jar>
</target>
</project>
|
次に,ProtocolBuffersクライアントのビルド方法を説明します.
$ cd rasc-client-1.0.0/ClientProtcolBuffers/
$ ant
最後に,ProtocolBuffersクライアントを実行します.
$ cd build/
$ java -jar clientProtocolBuffers.jar "今日の天気はどうですか"
今日の天気はどうですか
--- result ---
今日 名詞,副詞可能,*,*,*,*,今日,コンニチ,コンニチ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
どう 副詞,助詞類接続,*,*,*,*,どう,ドウ,ドー
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
か 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ