Clalis HTML5 + Javascript サンプル†
ダウンロード†
下記ボタンよりダウンロードできます。
ClalisSample4.1.zip
GitHubでもソースを公開しています。
https://github.com/LipliStyle/ClalisSampleForJavaScript
以下のURLにデモとして公開しています。
https://liplis.mine.nu/Sister/ClalisSampleJavaScript/
Clalis HTML5 + Javascript サンプルについて†
ClalisをHTML5 + JavascriptのWebアプリから使用するための簡単なサンプルです。
ソースを読んで頂けると、APIの叩き方が分かるかと思います。
ClalisAPIの実行結果をテキストエリアに表示するサンプルとなっています。
ClalisAPIはSOAP、JSON、XMLのインターフェースを用意していますが、
HTML5 + JavascriptのサンプルはJsonのみです。
※IEでは動きません!!!
ライセンス†
Copyright : 2013 LipliStyle. All Rights Reserved.
ライセンス : MIT License
・本ソフトウェアは無保証です。作者は責任を追いません。
・上記の著作権表示を記載して下さい。
・上記の2項に同意頂ければ自由に使用して頂けます。
ご注意†
ソースコードの使用はライセンスに基づく通りですが、
Clalisサーバーに不用意に負荷をかける用途には使用しないで下さい。
サンプルの紹介と解説†
対象の日本語の文章を形態素解析して、単語に分解します。
サンプルでは、テキストボックスに入力された文章を
形態素解析し、テキストエリアに出力する処理となっています。
このメソッドは、日本語の分解結果と品詞のみを返します。
単純に文章を形態素に分解するだけであれば、本メソッドが有効です。
情報が足りない場合は、ClalisMecabPlusメソッドの使用を検討してください。
サーバーサイドで形態素解析器「Mecab」を使用しています。
Mecabについては下記アドレスを参照下さい。
https://code.google.com/p/mecab/
サンプル†
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
| -
-
!
|
-
-
|
!
-
|
!
|
-
-
|
|
|
-
-
|
|
|
!
!
|
|
|
|
!
|
-
-
|
-
|
!
|
-
|
!
|
|
|
!
|
-
!
-
|
|
|
|
-
|
|
|
!
|
|
!
!
| function clalisMecab(sentence) {
var url = 'https://liplis.mine.nu/Clalis/v30/Post/Json/clalisMecab.aspx';
if (getUserAgent() == 'ie') {
clalisMecabIe(sentence);
}
else {
clalisMecabFx(sentence);
}
function clalisMecabFx(sentence) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', url, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
clalisMecabSetResult(
eval( '(' + xmlhttp.responseText + ')'
));
}
}
xmlhttp.setRequestHeader("content-type",
"application/x-www-form-urlencoded;charset=UTF-8");
xmlhttp.send("sentence=" + sentence);
}
function clalisMecabIe(pSentence) {
var xdr = new XDomainRequest();
xdr.onerror = function () {
alert("error");
}
xdr.onload = function () {
clalisMecabSetResult(eval( '(' + xdr.responseText + ')' ));
}
xdr.open('POST', url);
xdr.send("sentence=" + encodeURI(sentence));
}
function clalisMecabSetResult(jsonDoc)
{
var i = 0;
var result = "";
for(i = 0; i < jsonDoc.resWordList.length; i++)
{
result = result + "単語:" + jsonDoc.resWordList[i].name +
" ,品詞:" + jsonDoc.resWordList[i].pos +
" ,品詞細分類1:" + jsonDoc.resWordList[i].pos1 + "\n";
}
document.getElementById("resultClalisMecab").value = result;
}
}
|
形態素解析 ClalisMecabPlus†
このメソッドはMecabが返してくる全ての情報を取得します。
サンプルでは、テキストボックスに入力された文章を
形態素解析し、テキストエリアに出力する処理となっています。
サンプル†
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
| -
-
!
|
-
-
|
!
-
|
!
|
-
-
|
|
|
-
-
|
|
|
!
!
|
|
|
|
!
|
-
-
|
|
-
|
!
|
-
|
!
|
|
|
!
|
-
!
-
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
!
|
|
!
!
| function clalisMecabFull(sentence) {
var url = 'https://liplis.mine.nu/Clalis/v30/Post/Json/clalisMecabFull.aspx';
if (getUserAgent() == 'ie') {
clalisMecabFullIe(sentence);
}
else {
clalisMecabFullFx(sentence);
}
function clalisMecabFullFx(sentence) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', url, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
clalisMecabFullSetResult(
eval( '(' + xmlhttp.responseText + ')'
));
}
}
xmlhttp.setRequestHeader("content-type",
"application/x-www-form-urlencoded;charset=UTF-8");
xmlhttp.send("sentence=" + sentence);
}
function clalisMecabFullIe(sentence) {
var xdr = new XDomainRequest();
xdr.onerror = function () {
alert("error");
}
xdr.onload = function () {
clalisMecabFullSetResult(eval( '(' + xdr.responseText + ')' ));
}
xdr.open('POST', url);
xdr.send("sentence=" + encodeURI(sentence));
}
function clalisMecabFullSetResult(jsonDoc)
{
var i = 0;
var result = "";
for(i = 0; i < jsonDoc.resWordList.length; i++)
{
result = result + "単語:" + jsonDoc.resWordList[i].name +
" , 品詞:" + jsonDoc.resWordList[i].pos +
" , 品詞細分類1:" + jsonDoc.resWordList[i].pos1 +
" , 品詞細分類2:" + jsonDoc.resWordList[i].pos2 +
" , 品詞細分類3:" + jsonDoc.resWordList[i].pos3 +
" , 活用形:" + jsonDoc.resWordList[i].infetted1 +
" , 活用形:" + jsonDoc.resWordList[i].infetted2 +
" , 原形:" + jsonDoc.resWordList[i].prototype +
" , 読み:" + jsonDoc.resWordList[i].read +
" , 発音:" + jsonDoc.resWordList[i].pronunciation + "\n";
}
document.getElementById("resultClalisMecabPlus").value = result;
}
}
|
対象の文章にメタ感情を付与して結果を返します。
サンプルでは、テキストボックスに入力された文章に
感情付与処理を行い、テキストエリアに出力する処理となっています。
サンプル†
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
| -
-
!
|
-
-
|
!
-
|
!
|
-
-
|
|
|
-
-
|
|
|
!
!
|
|
|
|
!
|
-
-
|
|
-
|
!
|
-
|
!
|
|
|
!
|
-
!
-
|
|
|
|
|
-
|
|
|
!
|
|
!
!
| function clalisEmotional(sentence) {
var url = 'https://liplis.mine.nu/Clalis/v30/Post/Json/clalisEmotional.aspx';
if (getUserAgent() == 'ie') {
clalisEmotionalIe(sentence);
}
else {
clalisEmotionalFx(sentence);
}
function clalisEmotionalFx(sentence) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', url, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
clalisEmotionalSetResult(
eval( '(' + xmlhttp.responseText + ')'
));
}
}
xmlhttp.setRequestHeader("content-type",
"application/x-www-form-urlencoded;charset=UTF-8");
xmlhttp.send("sentence=" + sentence);
}
function clalisEmotionalIe(sentence) {
var xdr = new XDomainRequest();
xdr.onerror = function () {
alert("error");
}
xdr.onload = function () {
clalisEmotionalSetResult(eval( '(' + xdr.responseText + ')' ));
}
xdr.open('POST', url);
xdr.send("sentence=" + encodeURI(sentence));
}
function clalisEmotionalSetResult(jsonDoc)
{
var i = 0;
var result = "";
for(i = 0; i < jsonDoc.resWordList.length; i++)
{
result = result + "単語:" + jsonDoc.resWordList[i].name +
" , 感情:" + jsonDoc.resWordList[i].emotion +
" , 感情値:" + jsonDoc.resWordList[i].point + "\n";
}
document.getElementById("resultClalisEmotional").value = result;
}
}
|
対象の文章を口調変換ルールファイルに従って変換します。
サンプルでは、1つ目のテキストボックスに入力された文章をを
2つ目のテキストボックスに指定されたURLの口調変換ルールに従って
口調変換を行い、結果をテキストエリアに出力する処理となっています。
サンプル†
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
| -
-
!
|
-
-
|
!
-
|
!
|
-
-
|
|
|
-
-
|
|
|
|
!
!
|
|
|
|
!
|
-
-
|
|
-
|
!
|
-
|
|
|
!
|
|
|
!
!
| function clalisTone(sentence, rureUrl) {
var url = 'https://liplis.mine.nu/Clalis/v30/Post/Json/ClalisTone.aspx';
if (getUserAgent() == 'ie') {
clalisToneIe(sentence, rureUrl);
}
else {
clalisToneFx(sentence, rureUrl);
}
function clalisToneFx(sentence, rureUrl) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', url, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var jsonDoc = eval( '(' + xmlhttp.responseText + ')' );
document.getElementById("resultClalisTone").value =
jsonDoc.result;
}
}
xmlhttp.setRequestHeader("content-type",
"application/x-www-form-urlencoded;charset=UTF-8");
xmlhttp.send("sentence=" + sentence + "&toneFileUrl=" + rureUrl);
}
function clalisToneIe(sentence, rureUrl) {
var xdr = new XDomainRequest();
xdr.onerror = function () {
alert("error");
}
xdr.onload = function () {
var jsonDoc = eval( '(' + xdr.responseText + ')' );
document.getElementById("resultClalisTone").value =
jsonDoc.result;
}
xdr.open('POST', url);
xdr.send("sentence=" + encodeURI(sentence) + "&toneFileUrl=" + rureUrl);
}
}
|
口調変換+感情付与 ClalisToneEmotion†
対象の文章を口調変換ルールファイルに従って変換します。
さらに、感情付与を行います。
サンプルでは、「今日はお天気がいいですね。お洗濯にはもってこい!」という文章を
「https://liplis.mine.nu/xml/Tone/LiplisLili.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
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
| -
-
!
|
-
-
|
!
-
|
!
|
-
-
|
|
|
-
-
|
|
|
!
!
|
|
|
|
!
|
-
-
|
|
-
|
!
|
-
|
!
|
|
|
!
|
-
!
-
|
|
|
|
|
-
|
|
|
!
|
|
!
!
| function clalisToneEmotional(sentence, rureUrl) {
var url = 'https://liplis.mine.nu/Clalis/v30/Post/Json/ClalisToneEmotional.aspx';
if (getUserAgent() == 'ie') {
clalisToneEmotionalIe(sentence, rureUrl);
}
else {
clalisToneEmotionalFx(sentence, rureUrl);
}
function clalisToneEmotionalFx(sentence, rureUrl) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', url, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
clalisToneEmotionalSetResult(
eval( '(' + xmlhttp.responseText + ')'
));
}
}
xmlhttp.setRequestHeader("content-type",
"application/x-www-form-urlencoded;charset=UTF-8");
xmlhttp.send("sentence=" + sentence + "&toneFileUrl=" + rureUrl);
}
function clalisToneEmotionalIe(sentence, rureUrl) {
var xdr = new XDomainRequest();
xdr.onerror = function () {
alert("error");
}
xdr.onload = function () {
clalisToneEmotionalSetResult(eval( '(' + xdr.responseText + ')' ));
}
xdr.open('POST', url);
xdr.send("sentence=" + encodeURI(sentence) + "&toneFileUrl=" + rureUrl);
}
function clalisToneEmotionalSetResult(jsonDoc)
{
var i = 0;
var result = "";
for(i = 0; i < jsonDoc.resWordList.length; i++)
{
result = result + "単語:" + jsonDoc.resWordList[i].name +
" , 感情:" + jsonDoc.resWordList[i].emotion +
" , 感情値:" + jsonDoc.resWordList[i].point + "\n";
}
document.getElementById("resultClalisToneEmotional").value = result;
}
}
|
対象のURLのサイトから日本語を抽出して返します。
サンプルでは、テキストボックスに入力されたURLのサイトから日本語を抽出し、
結果をテキストエリアに出力する処理となっています。
サンプル†
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
| -
-
!
|
-
-
|
!
-
|
!
|
-
-
|
|
|
-
-
|
|
|
!
!
|
|
|
|
!
|
-
-
|
|
-
|
!
|
-
|
|
|
!
|
|
!
!
| function clalisWebExtractJp(targetUrl) {
var url = 'https://liplis.mine.nu/Clalis/v30/Post/Json/clalisWebExtractJp.aspx';
if (getUserAgent() == 'ie') {
clalisWebExtractJpIe(targetUrl);
}
else {
clalisWebExtractJpFx(targetUrl);
}
function clalisWebExtractJpFx(targetUrl) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', url, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var jsonDoc = eval( '(' + xmlhttp.responseText + ')' );
document.getElementById("resultClalisWebExtractJp").value =
jsonDoc.result;
}
}
xmlhttp.setRequestHeader("content-type",
"application/x-www-form-urlencoded;charset=UTF-8");
xmlhttp.send("url=" + targetUrl);
}
function clalisWebExtractJpIe(targetUrl) {
var xdr = new XDomainRequest();
xdr.onerror = function () {
alert("error");
}
xdr.onload = function () {
var jsonDoc = eval( '(' + xdr.responseText + ')' );
document.getElementById("resultClalisWebExtractJp").value =
jsonDoc.result;
}
xdr.open('POST', url);
xdr.send("url=" + targetUrl);
}
}
|
対象のURLのサイトから日本語を文章ごとに抽出して返します。
サンプルでは、テキストボックスに入力されたURLのサイトから日本語文章を抽出し、
結果をテキストエリアに出力する処理となっています。
サンプル†
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
| -
-
!
|
-
-
|
!
-
|
!
|
-
-
|
|
|
-
-
|
|
|
!
!
|
|
|
|
!
|
-
-
|
|
-
|
!
|
-
|
|
|
!
|
|
!
|
-
!
-
|
|
|
|
|
-
|
!
|
|
|
!
!
| function clalisWebExtractJpSentenceList(targetUrl) {
var url = 'https://liplis.mine.nu/Clalis/v30/Post/Json/clalisWebExtractJpSentenceList.aspx';
if (getUserAgent() == 'ie') {
clalisWebExtractJpSentenceListIe(targetUrl);
}
else {
clalisWebExtractJpSentenceListFx(targetUrl);
}
function clalisWebExtractJpSentenceListFx(targetUrl) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', url, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
clalisWebExtractJpSentenceListSetResul(
eval( '(' + xmlhttp.responseText + ')'
));
}
}
xmlhttp.setRequestHeader("content-type",
"application/x-www-form-urlencoded;charset=UTF-8");
xmlhttp.send("url=" + targetUrl);
}
function clalisWebExtractJpSentenceListIe(targetUrl) {
var xdr = new XDomainRequest();
xdr.onerror = function () {
alert("error");
}
xdr.onload = function () {
clalisWebExtractJpSentenceListSetResul(
eval( '(' + xdr.responseText + ')'
));
}
xdr.open('POST', url);
xdr.send("url=" + targetUrl);
}
function clalisWebExtractJpSentenceListSetResul(jsonDoc)
{
var i = 0;
var result = "";
for(i = 0; i < jsonDoc.resWordList.length; i++)
{
result = result + jsonDoc.resWordList[i] + "\n";
}
document.getElementById("resultClalisWebExtractJpSentenceList").value
= result;
}
}
|
対象のURLのサイトから日本語を文章ごとに抽出し、
重要な文章の順番にソートして返します。
サンプルでは、「http://www.yahoo.co.jp/」のサイトから日本語文章を抽出し、
結果をコンソール出力する処理となっています。
サンプル†
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
| -
-
!
|
-
-
|
!
-
|
!
|
-
-
|
|
|
-
-
|
|
|
!
!
|
|
|
|
!
|
-
-
|
|
-
|
!
|
-
|
|
|
!
|
|
!
|
-
!
-
|
|
|
|
-
|
!
|
|
|
!
!
| function clalisWebExtractJpSentenceRelevanceList(targetUrl) {
var url = 'https://liplis.mine.nu/Clalis/v30/Post/Json/clalisWebExtractJpSentenceRelevanceList.aspx';
if (getUserAgent() == 'ie') {
clalisWebExtractJpSentenceRelevanceListIe(targetUrl);
}
else {
clalisWebExtractJpSentenceRelevanceListFx(targetUrl);
}
function clalisWebExtractJpSentenceRelevanceListFx(targetUrl) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', url, true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
clalisWebExtractJpSentenceRelevanceListSetResul(
eval( '(' + xmlhttp.responseText + ')'
));
}
}
xmlhttp.setRequestHeader("content-type",
"application/x-www-form-urlencoded;charset=UTF-8");
xmlhttp.send("url=" + targetUrl);
}
function clalisWebExtractJpSentenceRelevanceListIe(targetUrl) {
var xdr = new XDomainRequest();
xdr.onerror = function () {
alert("error");
}
xdr.onload = function () {
clalisWebExtractJpSentenceRelevanceListSetResul(
eval( '(' + xdr.responseText + ')'
));
}
xdr.open('POST', url);
xdr.send("url=" + targetUrl);
}
function clalisWebExtractJpSentenceRelevanceListSetResul(jsonDoc)
{
var i = 0;
var result = "";
for(i = 0; i < jsonDoc.resWordList.length; i++)
{
result = result + jsonDoc.resWordList[i] + "\n";
}
document.getElementById("resultClalisWebExtractJpSentenceRelevanceList").value
= result;
}
}
|