JavaScriptでYahoo APIのキーフレーズ解析を実装する方法

このQ&Aのポイント
  • JavaScriptを使用してYahoo APIのキーフレーズ解析を実装する方法について解説します。
  • Yahoo APIを使ってキーフレーズ解析を行うプログラムを作成し、スコアの高いキーフレーズのみを表示する方法を説明します。
  • Yahoo APIのキーフレーズ解析を利用することで、テキストに含まれる重要なキーワードを抽出することができます。
回答を見る
  • ベストアンサー

初投稿です!javascriptで質問があります!

こんにちは 最近jweb apiを勉強している学生です。 yahoo apiのキーフレーズ解析を用いて何か作ろうとしているのですが少し躓いてしまいました。 下記のプログラムはキーフレーズ解析のサンプルなのですが、このプログラムを一番スコアの高いものだけが表示されるようにしたいです。 どなたか知恵をお貸しいただけないでしょうか? よろしくお願いします。 //////index.html///////////////////////////// <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>キーフレーズ抽出(Yahoo! API使用)を試す - js do it</title> <meta name="Description" content="" /> <meta name="Keywords" content="" /> <link rel="stylesheet" type="text/css" media="screen,print" href="style.css" /> </head> <body> <!-- generated by: jsdo.it - http://jsdo.it/kjunichi/qpO3 --> <!-- Copyright kjunichi - http://jsdo.it/kjunichi --> <!-- Licensed under MIT License - http://www.opensource.org/licenses/mit-license.php --> <textarea id="targetText" rows="10" cols="45"></textarea> <input id="start" type="button" value="解析"> <div id="result"></div> <!-- Begin Yahoo! JAPAN Web Services Attribution Snippet --> <a href="http://developer.yahoo.co.jp/about"> <img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn1_125_17.gif" title="Webサービス by Yahoo! JAPAN" alt="Web Services by Yahoo! JAPAN" width="125" height="17" border="0" style="margin:15px 15px 15px 15px"></a> <!-- End Yahoo! JAPAN Web Services Attribution Snippet --> <script type="text/javascript" src="http://jsdo.it/lib/jquery-1.6.2/js"></script> <script type="text/javascript" src="index.js"></script> </body> </html> //////index.js////////////////////////////////////////////////////////////////// var apiBaseUrl = "http://jlp.yahooapis.jp/KeyphraseService/V1/extract?callback=?"; var appid = "opensesami"; $(function(){ $("#start").click(function() { //alert($("#targetText").val()); $.getJSON(apiBaseUrl, { "appid" : appid, "sentence" : $("#targetText").val(), "output" : "json" }, function(data) { //alert(data); $.each(data, function(item,score){ //alert(item); $("#result").append(item + "," + score + "<br>"); }); } ); }); });

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こそーとw。 function(data) {  var ary = eval('[' + (new Array (102)).join ('[],') + ']');  var obj, p, t;  for (var p in data)   if (data.hasOwnProperty (p))    (t = data[p]),alert(t),    ary[t].push ({ item: p, score: t });  alert([ary[100][0].item, ary[100][0].score]);  return ary; } aryは ちいさいじゅん。 scoreが おなじ ばあいも あるので、そこも はいれつで かえすよ そーとは、さいそく !!?

105atu
質問者

お礼

ありがとうございました。 ソートまで教えていただき本当に助かりました! 最速か催促かどっちか一瞬迷ったのは内緒ですw

その他の回答 (1)

回答No.1

function(data) {  var obj;  for (var p in data)   if (data.hasOwnProperty (p))    if (obj.score <= data[p])     obj = { item: p, score: data[p] };    alert([obj.item, obj.score]); } すでにそーとされてる?

105atu
質問者

補足

回答ありがとうございます! ソートはしてないです・・・ 厚かましいお願いになりますがソートのほうも教えてくださると助かります。

関連するQ&A

  • PHPのプログラムで質問です。

    PHPのプログラムで質問です。 yahooのAPIで知恵袋サンプルプログラムで知恵袋質問でもサイトをコピーしてきたんですが、エラーが出てきて実行できません。 どのように変更すれば実行できますか? <?php * http://e.developer.yahoo.co.jp/webservices/register_application */ $appid = '<dj0zaiZpPVZFUU5lWnQxM3dSSCZzPWNvbnN1bWVyc2VjcmV0Jng9ZTY->'; // <-- ここにあなたのアプリケーションIDを設定してください。 $CHIE_SEARCH_API_HOST = 'chiebukuro.yahooapis.jp'; $CHIE_SEARCH_API_URL = '/Chiebukuro/V1/questionSearch'; $CHIE_SEARCH_API_APPID = $appid; function escapestring($str) { return htmlspecialchars($str, ENT_QUOTES); } print<<<EOM <html> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8"> <title>知恵袋デモサイト - 質問検索(php)</title> </head> <body> <h1>知恵袋デモサイト - 質問検索(php)</h1> EOM; print '<form action="./'. basename($_SERVER['SCRIPT_NAME']) .'">'; print '<input type="text" name="query" value="' . escapestring($_GET['query']) . '">'; print '<input type="submit" value="search">'; print '</form>'; $responseXML = ''; { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://${CHIE_SEARCH_API_HOST}${CHIE_SEARCH_API_URL}?appid=${CHIE_SEARCH_API_APPID}&query=".urlencode($_GET['query'])); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $responseXML = curl_exec($curl); curl_close($curl); } { $xmlObj = simplexml_load_string($responseXML); foreach($xmlObj->{'Result'}->{'Question'} as $que) { print("<li>{$que->{'Content'}}<br><a href=\"{$que->{'Url'}}\">{$que->{'Url'}}</a>\n"); } } print<<<EOM <hr /> <!-- Begin Yahoo! JAPAN Web Services Attribution Snippet --> <a href="http://developer.yahoo.co.jp/about"> <img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn2_105_17.gif" width="105" height="17" title="Webサービス by Yahoo! JAPAN" alt="Webサービス by Yahoo! JAPAN" border="0" style="margin:15px 15px 15px 15px"></a> <!-- End Yahoo! JAPAN Web Services Attribution Snippet --> </body> </html> EOM; ?>

    • ベストアンサー
    • PHP
  • PHPのプログラムで質問です。

    yahooのAPIで知恵袋サンプルプログラムで知恵袋質問でもサイトをコピーしてきたんですが、エラーが出てきて実行できません。 どのように変更すれば実行できますか? これで解答いただいてアプリケーションIDを入れて実行したらエラーが出たためもう一度質問です。 Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /opt/lampp/htdocs/www/sample3.php on line 28 エラーはこのようなエラーです。 よろしくお願いします。 <?php /** * Yahoo! JAPAN Web APIのご利用には、アプリケーションIDの登録が必要です。 * あなたが登録したアプリケーションIDを $appid に設定してお使いください。 * アプリケーションIDの登録URLは、こちらです↓ * http://e.developer.yahoo.co.jp/webservices/regis … */ $appid = ''; // <-- ここにあなたのアプリケーションIDを設定してください。 $CHIE_SEARCH_API_HOST = 'chiebukuro.yahooapis.jp'; $CHIE_SEARCH_API_URL = '/Chiebukuro/V1/questionSearch'; $CHIE_SEARCH_API_APPID = $appid; function escapestring($str) { return htmlspecialchars($str, ENT_QUOTES); } print<<<EOM <html> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8"> <title>知恵袋デモサイト - 質問検索(php)</title> </head> <body> <h1>知恵袋デモサイト - 質問検索(php)</h1> EOM; print '<form action="./'. basename($_SERVER['SCRIPT_NAME']) .'">'; print '<input type="text" name="query" value="' . escapestring($_GET ['query']) . '">'; print '<input type="submit" value="search">'; print '</form>'; if("" !== $_GET['query']){ $responseXML = ''; { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http:// ${CHIE_SEARCH_API_HOST}${CHIE_SEARCH_API_URL}?appid= ${CHIE_SEARCH_API_APPID}&query=".urlencode($_GET['query'])); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $responseXML = curl_exec($curl); curl_close($curl); } { $xmlObj = simplexml_load_string($responseXML); foreach($xmlObj->{'Result'}->{'Question'} as $que) { print("<li>{$que->{'Content'}}<br><a href=\"{$que->{'Url'}}\">{$que-> {'Url'}}</a>\n"); } } } print<<<EOM <hr /> <!-- Begin Yahoo! JAPAN Web Services Attribution Snippet --> <a href="http://developer.yahoo.co.jp/about"> <img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn2_105_17 … width="105" height="17" title="Webサービス by Yahoo! JAPAN" alt="Webサービス by Yahoo! JAPAN" border="0" style="margin:15px 15px 15px 15px"></a> <!-- End Yahoo! JAPAN Web Services Attribution Snippet --> </body> </html> EOM; ?>

    • ベストアンサー
    • PHP
  • javascriptのalertで文字化けが解消されません。(外部js

    javascriptのalertで文字化けが解消されません。(外部jsファイル読込による) htmlファイル <meta http-equiv="Content-Script-Type" content="text/javascript"> <script language="JavaScript" src="**/**.js" charset="shift_jis"></script> いろいろ調べまして、charset="shift_jis"を指定したり、utf-8にしましたがうまくいきません。 jsファイル function testalert() { alert('テスト'); } ご教授をよろしくお願いします。

  • javascriptで困っています。教えてください

    以下のようにjavascriptの内容を書いた外部のテキストファイルを読み込んで、実行しようとしているのですが、うまくいきません。普通にjavascriptを読み込むのは分かっているのですが、このような方法ができないのでしょうか?よろしくお願いします。 <!doctype html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>無題ドキュメント</title> </head> <body> <div id="jsbox"></div> <script type="text/javascript"> var jsbox = document.getElementById("jsbox"); //非同期通信///////////////////////////////////////////// var xmlHttp; loadText(); function loadText(){ if (window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); }else{ if (window.ActiveXObject){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }else{ xmlHttp = null; } } xmlHttp.onreadystatechange = checkStatus; xmlHttp.open("GET", "http://xxxxxxxxxxxx/js_test.txt", true); xmlHttp.send(null); } function checkStatus(){ if (xmlHttp.readyState == 4 && xmlHttp.status == 200){ var str = xmlHttp.responseText;alert(str); jsbox.innerHTML = str; test_js(); } } ///////////////////////////////////////////////////////////////// </script> </body> </html> テキストファイルをhttp://xxxxxxxxxxxx/js_test.txtに置き、テキストファイルの内容が <script type="text/javascript"> function test_js(){ alert("test"); } </script>

  • javascriptについて教えてください。

    divのボタンを作りたいと思い、調べながらjQueryを使う方法は以下のようにしたらいい事は分かったのですが、jQueryを使わずにしようと思い $(function(){ $("div").click(function(){ var x = this.id; alert(x); }); }); の部分を document.getElementsByTagName("div").onclick = function(){ var x = this.id;  alert(x); }; としてみたのですが、うまくいきません。jQueryを使わずに同じようなボタンを作るにはどうしたらいいのでしょうか? <!doctype html> <html> <head> <meta charset="UTF-8"> <title>無題ドキュメント</title> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.4.min.js"></script> <script type="text/javascript" language="javascript"> $(function(){ $("div").click(function(){ var x = this.id; alert(x); }); }); </script> </head> <body> <div id="aaa" class="div_link">a</div> <div id="bbb" class="div_link">b</div> <div id="ccc" class="div_link">c</div> <div id="ddd" class="div_link">d</div> <div id="eee" class="div_link">e</div> </body> </html>

  • javascriptで困っています。

    以下のような、現在地を取得するhtmlコンテンツを作ったのですが、スマホによってきちんと取得できたり、Failed to start Geolocation serviceというメッセージが出たりします。いずれの場合もGPSはオンにしています。メッセージが出るのはブラウザーの影響とか何かあるのでしょうか?ブラウザーがサポートしていない場合はLocation APIがサポートされていません。と表示するようにしているのですが、Failed to start Geolocation serviceが出る原因が分かりません。ご存知の方がいらっしゃいましたら、教えてください。よろしくお願いします。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8" /> <title>現在地取得</title> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <style> #map { width: 480px; height: 640px; border: solid 1px #ccc; } </style> </head> <body> <h1>Location API サンプル</h1> <div id="map"></div> <div id="message"></div> <script> window.onload =function() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); var options = { zoom: 15, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById('map'), options); var marker = new google.maps.Marker({ position: latlng, map: map, title: '現在地' }); }, function(e) { document.getElementById('message').innerHTML = typeof e == 'string' ? e : e.message; }); } else { document.getElementById('message').innerHTML = 'Location APIがサポートされていません。'; } }; </script> </body> </html>

  • JavaScriptがFirefoxで動かない・・・

    よろしくお願いいたします。 IEでは正常に動作するのですが、Firefoxで実行してみると ボタンを押しても何の反応もありません。 どのように変更すればFirefoxで動作するのでしょうか? よろしくお願いいたします。 <SCRIPT LANGUAGE="JavaScript"> <!-- function warning(){ alert("テストです。"); } //--> </SCRIPT> <FORM><INPUT type="button" value="ボタンを押して。" onClick="warning()"></FORM> 上記のコードを外部に独立させて・・・ 【コード】 <script type="text/javascript" src="sample3.js"></script> <input type = "button" name = "button3" value = "sample3" onclick = "Func3();"> 【sample3.js】 function Func3() { alert("js外部ファイル記述"); } です。 FC2ブログで活用したいのですが・・・ 改行の扱いは「HTMLタグのみ」に設定しています。 ご回答、よろしくお願いいたします。

  • Javascript 数か所のTextに10キーを

    scriptの超初心者です。以下のように記述して(サンプルを参照して)1か所の入力は可能になりましたが、同じページ上で他の部分はscriptが聞いていないようなのですが、IDなどを変えていくべきですか?つまり二か所目のIDに数字を加えて、scriptでの#部分も数字を付け加える必要がありますか? html <input type="text" width="4" height="3" name="sen17" value="" id="defaultKeypad"> script <script type="text/javascript"> $(function() { $('#defaultKeypad').keypad(); $('#viewKeypad').click(function() { alert('現在の入力値: ' + $('#defaultKeypad').val()); }); $('#removeKeypad').toggle(function() { $(this).text('Re-attach'); $('#defaultKeypad').keypad('destroy'); }, function() { $(this).text('Remove'); $('#defaultKeypad').keypad(); } ); }); metaには <script type="text/javascript" src="jquery.keypad.js"></script> 必要なjsファイルは配置してあります 超基本的な質問で済みませんが、よろしくお願いします。

  • カプセル化?について

    このようなプログラムを書いたのですが、ボタンをクリックしてもalert2が実行されません何故でしょうか!!>< どうかお願いします。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> <head> <script type = 'text/javascript' charset = 'UTF-8' src = 'jslb_ajax.js'></script> <script type = 'text/javascript' charset = 'UTF-8' src = 'cookie.js'></script> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <script src="http://maps.google.com/maps?file=api&v=1&key=ABQIAAAAsm3eIraQIktrtviyd0JlXBTcyTBaKMmwi780-Sh78Ay3Pg36mBS27UkGZUGL-mR0X2zg4ieZWlneBA" type="text/javascript"></script> </head> <script type="text/javascript"> //<![CDATA[ function onLoad(){ var map = new GMap(document.getElementById("map")); map.addControl(new GScaleControl()); map.centerAndZoom(new GPoint(139.745449, 35.658715), 12); function _alert2(){ alert("koneko"); } onLoad.prototype.alert2 = _alert2; } function koneko(){ alert("fff"); obj.alert2(); } var obj = new onLoad(); //]]> </script> <body onLoad = "onLoad()"> <div id="map" style="width: 600px; height: 600px"></div> <input type = "button" value ="botan" onclick = "koneko()"> </body> </html>

  • javascriptで困っています

    初心者webプログラマーです javascriptでエンドロールのようなものを作ろうとしています。以下の1つのhtmlファイルで作ると動くのですが <html> <head> <title>エンドロール</title> <style type="text/css"> #txt{ position: absolute; top: 320px; } #container{ width:320px; height:320px; position:relative; top:0px; left:0px; overflow:hidden; } </style> </head> <body onLoad="setInterval('endroll()', 50);"> <script type="text/javascript"> var y = 320; function endroll(){ document.getElementById("txt").style.top = y; y -= 2; if(y<-400){y=320} } </script> <div id="container"> <div id="txt"> aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbb ccccccccccccccccccccc ddddddddddddddddddddd eeeeeeeeeeeeeeeeeeeee fffffffffffffffffffff ggggggggggggggggggggg hhhhhhhhhhhhhhhhhhhhh iiiiiiiiiiiiiiiiiiiii </div> </div> </body> </html> これを、htmlファイル、cssファイル、jsファイルに分けてつくると、動かなくなります-----index.html---------------------------------------------------------------------- <html> <head> <link rel="stylesheet" href="endroll.css" type="text/css" /> <script src="endroll.js"></script> <title>エンドロール</title> </head> <body> <div id="container"> <div id="txt"> aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbb ccccccccccccccccccccc ddddddddddddddddddddd eeeeeeeeeeeeeeeeeeeee fffffffffffffffffffff ggggggggggggggggggggg hhhhhhhhhhhhhhhhhhhhh iiiiiiiiiiiiiiiiiiiii </div> </div> </body> </html> -------endroll.css--------------------------------------------------------------- @charset "utf-8"; #txt{ position: absolute; top: 320px; } #container{ width:320px; height:320px; position:relative; top:0px; left:0px; overflow:hidden; } ---------endroll.js-------------------------------------------------------------- window.onload = function(){ start_endroll(); } var y = 320; // 繰り返し処理の内容 function endroll(){ document.getElementById("txt").style.top = y; y -= 2; if(y<-400){y=320} } // 繰り返し処理の開始 function start_endroll() { timerID = setInterval('endroll()',50); } いろいろ調べてみたのですが、解決できませんでした。長い質問になりましたが、どなたか教えていただければありがたいです。よろしくお願いします。

専門家に質問してみよう