ClalisConnectSampleForJava
Clalis Java サンプル†
ダウンロード†
下記リンクよりダウンロードできます。
ClalisSampleJava.zip
GitHubでもソースを公開しています。
https://github.com/LipliStyle/ClalisSampleForJava
Clalis Java サンプルについて†
ClalisをJavaから使用するための簡単なサンプルです。
ソースを読んで頂けると、APIの叩き方が分かるかと思います。
ClalisAPIの実行結果をコンソール出力するコンソールアプリになっています。
ClalisAPIはSOAP、JSON、XMLのインターフェースを用意していますが、
JavaのサンプルはJsonのみです。
Jsonの読み込みに「Gson」を使用しています。
http://code.google.com/p/google-gson/
HTTPをPostするのに「Apache HttpComponents」を使用しています。
http://hc.apache.org/
Eclipseでプロジェクトを作成しています。
ライセンス†
Copyright : 2013 LipliStyle. All Rights Reserved.
ライセンス : MIT License
・本ソフトウェアは無保証です。作者は責任を追いません。
・上記の著作権表示を記載して下さい。
・上記の2項に同意頂ければ自由に使用して頂けます。
ご注意†
ソースコードの使用はライセンスに基づく通りですが、
Clalisサーバーに不用意に負荷をかける用途には使用しないで下さい。
サンプルの紹介と解説†
Javaのコンソールアプリとして作成しています。
Jsonインターフェースを使用したサンプルになっています。
共通メソッドについて†
サンプル内では、HtttpPostの処理、およびHTTPレスポンスのストリームをString型に変換する処理のため、
以下の2つのメソッドを共通で使用しています。
inputStreemToString†
1
2
3
4
5
6
7
8
9
| - | | | - | ! | ! |
|
post†
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| - | - | | | | | | | | | | | - | - | ! ! |
|
形態素解析 ClalisMecab†
概要†
対象の日本語の文章を形態素解析して、単語に分解します。
サンプルでは、「今日はお天気がいいですね。お洗濯にはもってこいです!」という文章を
形態素解析し、コンソール出力する処理となっています。
このメソッドは、日本語の分解結果と品詞のみを返します。
単純に文章を形態素に分解するだけであれば、本メソッドが有効です。
情報が足りない場合は、ClalisMecabPlusメソッドの使用を検討してください。
サーバーサイドで形態素解析器「Mecab」を使用しています。
Mecabについては下記アドレスを参照下さい。
https://code.google.com/p/mecab/
サンプル†
- mainメソッド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
- - | | | | | | | | | | | | - | | ! - | ! !
public static void main(String[] args) { try{ final List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(); nameValuePair.add(new BasicNameValuePair("sentence", "今日はお天気がいいですね。お洗濯にはもってこいです!")); String jsonText = inputStreemToString( post("https://liplis.mine.nu/Clalis/v30/Post/Json/clalisMecab.aspx", nameValuePair).getEntity().getContent()); ResMecabResult result = new Gson().fromJson(jsonText, ResMecabResult.class); for(MsgMecabResult msg : result.resWordList) { System.out.println("単語:" + msg.name + " , 品詞:" + msg.pos + " , 品詞細分類1:" + msg.pos1); } } catch (IOException e) { return ; } }
- ResMecabResult API取得結果格クラス
- MsgMecabResult 分解された1つの要素を表すクラス
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
- | | | | | - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! !
public class MsgMecabResult { public int idx; //インデックス public String name; //分解された文字です。 public String pos; //分解された文字の品詞です。 public String pos1; //分解された文字の品詞細分類1です。 public int getIdx() { return idx; } public void setIdx(int idx) { this.idx = idx; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPos() { return pos; } public void setPos(String pos) { this.pos = pos; } public String getPos1() { return pos1; } public void setPos1(String pos1) { this.pos1 = pos1; } }
形態素解析 ClalisMecabPlus†
概要†
このメソッドはMecabが返してくる全ての情報を取得します。
サンプルでは、「今日はお天気がいいですね。お洗濯にはもってこいです!」という文章を
形態素解析し、コンソール出力する処理となっています。
サンプル†
- mainメソッド
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
- - | | | | | | | | | | | | - | | | | | ! - | ! !
public static void main(String[] args) { try{ final List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(); nameValuePair.add(new BasicNameValuePair("sentence", "今日はお天気がいいですね。お洗濯にはもってこいです!")); String jsonText = inputStreemToString( post("https://liplis.mine.nu/Clalis/v30/Post/Json/clalisMecabFull.aspx", nameValuePair).getEntity().getContent()); ResMecabResultFull result = new Gson().fromJson(jsonText, ResMecabResultFull.class); for(MsgMecabResultFull msg : result.resWordList) { System.out.println("単語:" + msg.name + " , 品詞:" + msg.pos + " , 品詞細分類1:" + msg.pos1 + " , 品詞細分類2:" + msg.pos2 + " , 品詞細分類3:" + msg.pos3 + " , 活用形:" + msg.infetted1 + " , 活用形:" + msg.infetted2 + " , 原形:" + msg.prototype + " , 読み:" + msg.read + " , 発音:" + msg.pronunciation); } } catch (IOException e) { return ; } }
- ResMecabResultFull API取得結果格クラス
- MsgMecabResultFull 分解された1つの要素を表すクラス
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
- | | | | | | | | | | | | - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! - | ! !
public class MsgMecabResultFull { public int idx; //インデックス public String name; //分解された文字です。 public String pos; //分解された文字の品詞です。 public String pos1; //分解された文字の品詞細分類1です。 public String pos2; //分解された文字の品詞細分類2です。 public String pos3; //分解された文字の品詞細分類3です。 public String infetted1; //分解された文字の活用形です。 public String infetted2; //分解された文字の活用形です。 public String prototype; //分解された文字の原形です。 public String read; //分解された文字の読みです。 public String pronunciation; //解された文字の発音です。 public int getIdx() { return idx; } public void setIdx(int idx) { this.idx = idx; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPos() { return pos; } public void setPos(String pos) { this.pos = pos; } public String getPos1() { return pos1; } public void setPos1(String pos1) { this.pos1 = pos1; } public String getPos2() { return pos2; } public void setPos2(String pos2) { this.pos2 = pos2; } public String getPos3() { return pos3; } public void setPos3(String pos3) { this.pos3 = pos3; } public String getInfetted1() { return infetted1; } public void setInfetted1(String infetted1) { this.infetted1 = infetted1; } public String getInfetted2() { return infetted2; } public void setInfetted2(String infetted2) { this.infetted2 = infetted2; } public String getPrototype() { return prototype; } public void setPrototype(String prototype) { this.prototype = prototype; } public String getRead() { return read; } public void setRead(String read) { this.read = read; } public String getPronunciation() { return pronunciation; } public void setPronunciation(String pronunciation) { this.pronunciation = pronunciation; } }
感情付与 ClalisEmotional†
概要†
対象の文章にメタ感情を付与して結果を返します。
サンプルでは、「今日はお天気がいいですね。お洗濯にはもってこいです!」という文章に
感情付与処理を行い、コンソール出力する処理となっています。
サンプル†
- mainメソッド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
- - | | | | | | | | | | | | - | | ! - | ! !
public static void main(String[] args) { try{ final List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(); nameValuePair.add(new BasicNameValuePair("sentence", "今日はお天気がいいですね。お洗濯にはもってこいです!")); String jsonText = inputStreemToString( post("https://liplis.mine.nu/Clalis/v30/Post/Json/clalisEmotional.aspx", nameValuePair).getEntity().getContent()); ResEmotional result = new Gson().fromJson(jsonText, ResEmotional.class); for(MsgLeafAndEmotion msg : result.resWordList) { System.out.println("単語:" + msg.name + " , 感情:" + msg.emotion + " , 感情値:" + msg.point); } } catch (IOException e) { return ; } }
- ResEmotional API取得結果格クラス
- MsgLeafAndEmotion分解された1つの要素を表すクラス
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
- | | | | - | ! - | ! - | ! - | ! - | ! - | ! !
public class MsgLeafAndEmotion { public String name; //分解された文字です。 public int emotion; //分解された文字の感情です。 public int point; //分解された文字の感情値です。 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getEmotion() { return emotion; } public void setEmotion(int emotion) { this.emotion = emotion; } public int getPoint() { return point; } public void setPoint(int point) { this.point = point; } }
口調変換 ClalisTone†
概要†
対象の文章を口調変換ルールファイルに従って変換します。
サンプルでは、「今日はお天気がいいですね。お洗濯にはもってこい!」という文章を
「https://liplis.mine.nu/xml/Tone/LiplisLili.xml」の口調変換ルールに従って
口調変換を行い、結果をコンソール出力する処理となっています。
サンプル†
- mainメソッド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
- - - ! | | | | | | | | | | | | | | - | ! !
public static void main(String[] args) { try{ //ポストデータの作成 final List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(); nameValuePair.add(new BasicNameValuePair("sentence", "今日はお天気がいいですね。お洗濯にはもってこい!")); nameValuePair.add(new BasicNameValuePair("toneFileUrl", "https://liplis.mine.nu/xml/Tone/LiplisLili.xml")); String jsonText = inputStreemToString( post("https://liplis.mine.nu/Clalis/v30/Post/Json/ClalisTone.aspx", nameValuePair).getEntity().getContent()); ResTone result = new Gson().fromJson(jsonText, ResTone.class); System.out.println(result.result); } catch (IOException e) { return ; } }
- ResTone API取得結果格クラス
口調変換+感情付与 ClalisToneEmotion†
概要†
対象の文章を口調変換ルールファイルに従って変換します。
さらに、感情付与を行います。
サンプルでは、「今日はお天気がいいですね。お洗濯にはもってこい!」という文章を
「https://liplis.mine.nu/xml/Tone/LiplisLili.xml」の口調変換ルールに従って
口調変換を行い、結果をコンソール出力する処理となっています。
サンプル†
- mainメソッド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
- - | | | | | | | | | | | | | - | | ! - | ! !
public static void main(String[] args) { try{ final List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(); nameValuePair.add(new BasicNameValuePair("sentence", "今日はお天気がいいですね。お洗濯にはもってこい!")); nameValuePair.add(new BasicNameValuePair("toneFileUrl", "https://liplis.mine.nu/xml/Tone/LiplisLili.xml")); String jsonText = inputStreemToString( post("https://liplis.mine.nu/Clalis/v30/Post/Json/clalisToneEmotional.aspx", nameValuePair).getEntity().getContent()); ResEmotional result = new Gson().fromJson(jsonText, ResEmotional.class); for(MsgLeafAndEmotion msg : result.resWordList) { System.out.println("単語:" + msg.name + " , 感情:" + msg.emotion + " , 感情値:" + msg.point); } } catch (IOException e) { return ; } }
- ResEmotional API取得結果格クラス
- MsgLeafAndEmotion 分解された1つの要素を表すクラス
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
- | | | | - | ! - | ! - | ! - | ! - | ! - | ! !
public class MsgLeafAndEmotion { public String name; //分解された文字です。 public int emotion; //分解された文字の感情です。 public int point; //分解された文字の感情値です。 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getEmotion() { return emotion; } public void setEmotion(int emotion) { this.emotion = emotion; } public int getPoint() { return point; } public void setPoint(int point) { this.point = point; } }
Web日本語抽出 ClalisWebExtractJp†
概要†
対象のURLのサイトから日本語を抽出して返します。
サンプルでは、「http://www.yahoo.co.jp/」のサイトから日本語抽出し、
結果をコンソール出力する処理となっています。
サンプル†
- mainメソッド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
- - | | | | | | | | | | | | | - | ! !
public static void main(String[] args) { try{ final List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(); nameValuePair.add(new BasicNameValuePair("url", "http://www.yahoo.co.jp/")); String jsonText = inputStreemToString( post("https://liplis.mine.nu/Clalis/v30/Post/Json/clalisWebExtractJp.aspx", nameValuePair).getEntity().getContent()); ResWebSummary result = new Gson().fromJson(jsonText, ResWebSummary.class); System.out.println(result.result); } catch (IOException e) { return ; } }
- ResWebSummary API取得結果格クラス
Web日本語文章抽出 ClalisWebExtractJpSentenceList†
概要†
対象のURLのサイトから日本語を文章ごとに抽出して返します。
サンプルでは、「http://www.yahoo.co.jp/」のサイトから日本語文章を抽出し、
結果をコンソール出力する処理となっています。
サンプル†
- mainメソッド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
- - | | | | | | | | | | | | - | ! - | ! !
public static void main(String[] args) { try{ final List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(); nameValuePair.add(new BasicNameValuePair("url", "http://www.yahoo.co.jp/")); String jsonText = inputStreemToString( post("https://liplis.mine.nu/Clalis/v30/Post/Json/clalisWebExtractJpSentenceList.aspx", nameValuePair).getEntity().getContent()); ResWebSummaryList result = new Gson().fromJson(jsonText, ResWebSummaryList.class); for(String msg : result.resWordList) { System.out.println(msg); } } catch (IOException e) { return ; } }
- ResWebSummaryList API取得結果格クラス
Web日本語重要文章抽出 ClalisWebExtractJpSentenceRelevanceList†
概要†
対象のURLのサイトから日本語を文章ごとに抽出し、
重要な文章の順番にソートして返します。
サンプルでは、「http://www.yahoo.co.jp/」のサイトから日本語文章を抽出し、
結果をコンソール出力する処理となっています。
サンプル†
- mainメソッド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
- - | | | | | | | | | | | | - | ! - | ! !
public static void main(String[] args) { try{ final List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(); nameValuePair.add(new BasicNameValuePair("url", "http://www.yahoo.co.jp/")); String jsonText = inputStreemToString( post("https://liplis.mine.nu/Clalis/v30/Post/Json/clalisWebExtractJpSentenceRelevanceList.aspx", nameValuePair).getEntity().getContent()); ResWebSummaryList result = new Gson().fromJson(jsonText, ResWebSummaryList.class); for(String msg : result.resWordList) { System.out.println(msg); } } catch (IOException e) { return ; } }
- ResWebSummaryList API取得結果格クラス