ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

紀元前2000年の文字を機械学習で解読

2017-11-02 19:00:59 | Weblog
あとでみるためにURLをメモ

紀元前2000年の文字を機械学習で解読せよ。Tensorflowを用いた歴史的プロジェクト発足
https://bita.jp/dml/ubisoft

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

5W1HにわけるAI(API)を使ってみる

2017-11-02 16:10:32 | Weblog
Chromeで日本語音声認識して、しゃべらせてみる
http://blog.goo.ne.jp/xmldtp/e/0480f55d4ad3e6df568eae8336bc4d7c

の処理部分(上記サイトの例ではalertになっている)を考える。
たぶん、5W1Hにわけて、何を、いつ、どうするかが判断できたほうが
よいだろう・・・

というので、まず、文章(これは、音声識別で取れた)を5W1Hに分解する
API(AI)を使ってみよう!




■概要

5W1Hに分解してくれるAPIは、

5W1H API
http://www.metadata.co.jp/5w1h-api-ma9


ただこれを、ブラウザからなにも考えないで
	$.ajax({
	      	url:'http://ap.mextractr.net/ma9/mext5w1h',
                type:'GET',
		datatype:"text",
                data:{
                        'apikey':'メタデータさんから受け取ったAPIキー',
                        'out':'atom',
                        'text':encodeURIComponent(buf)
                    }
	})

   :
(以下省略)
   :

のように呼び出すと、エラーになる。F12キーで見ると、こんなかんじ

これは、

【解説付き】chromeでXMLHttpRequestをローカルのファイルで行う方法
https://qiita.com/growsic/items/a919a7e2a665557d9cf4
にあるように、クロスドメイン制約。

HTMLファイルと同じサーバーにPHPをおいて、そこから、curlで
上記APIサーバーにアクセスする。

XMLが返ってくるから、それを解析する。
うだうだ言っていないで、ソースを出すね。




■ソースコード

・入力された文字を読み込んで
・5W1H APIを(呼び出すPHPプログラムを)呼び出し
・受け取った結果のXMLを分解している

こんなかんじ。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<title>Web Speech API</title>
<script>
function check()
{
	var buf = $("#mytext").val();

	$.ajax({
	      	url:'5w1h.php',
                type:'GET',
		datatype:"text",
                data:{
                        'text':encodeURIComponent(buf)
                    }
	})
        .done(function(data){
		xml = $.parseXML(data);
    		who  = "";
		$(xml).find( "gd\\:who" ).each(function(index , elm){
			who = who + " " + $(elm).attr("valueString");
		});
    		when  = "";
		$(xml).find( "gd\\:when" ).each(function(index , elm){
			when = when + " " + $(elm).attr("valueString");
		});
    		where  = "";
		$(xml).find( "gd\\:where" ).each(function(index , elm){
			where = where + " " + $(elm).attr("valueString");
		});
		buf = "いつ:"+ when + " どこ:" + where + " 誰:" + who + "\n"+data;
		$("#mytext").val(buf);
        })
        .fail(function(){
		alert("error");
        });

}

$(function()
{
	$("#mytext").val("");
});

</script> 
</head>
<body>
言葉<BR/>
<textarea id="mytext" style="width:400px;height:100px;border:#A6523F solid 3px;"> </textarea>
<br/>
<input type="button" onClick="check();" value="開始" />
<BR/>
</body>
</html>


このソースは

http://js.studio-kingdom.com/jquery/utilities/parse_xml

https://qiita.com/zakiyamaaaaa/items/bdda422db2ccbaea60d9


を参考にしている。また、5W1H APIを呼び出すプログラムは
こんなかんじ
<?php

$url = "http://ap.mextractr.net/ma9/mext5w1h";
$url = $url . "?apikey=メタデータさんから受け取ったAPIキー";
$url = $url . "&out=atom";
$url = $url . "&text=" .$_REQUEST["text"];

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$html =  curl_exec($ch);

echo $html;
curl_close($ch); 

?>


このソースは

https://qiita.com/wanwanland/items/a5f9574fadd214d7b5c8

https://qiita.com/futosu/items/ad61eb7584dc70ccce76

を参考にしている。

APIキーは上記メタデータ株式会社の
http://www.metadata.co.jp/5w1h-api-ma9
「下記、利用登録フォームからお申し込みください。」の
下にあるURLから申し込むともらえる。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする