目次
サンプル・プログラムの実行例
サンプル・プログラム
| keyphrase.php | サンプル・プログラム本体。 |
| .pahooEnv | クラウドサービスを利用するためのアカウント情報などを記入する .env ファイル。 使い方は「各種クラウド連携サービス(WebAPI)の登録方法」を参照。include_path が通ったディレクトリに配置すること。 |
| pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 2.1.0 | 2025/09/15 | .pahooEnv導入 |
| 2.0 | 2021/10/02 | キーフレーズ抽出(V2)に変更,PHP8対応,リファラチェック改良 |
| 1.1 | 2017/03/25 | PHP7 対応 |
| 1.0 | 2014/08/02 | 初版 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 2.0.1 | 2025/08/11 | getParam() bug-fix |
| 2.0.0 | 2025/08/11 | pahooLoadEnv() 追加 |
| 1.9.0 | 2025/07/26 | getParam() 引数に$trim追加 |
| 1.8.1 | 2025/03/15 | validRegexPattern() debug |
| 1.8.0 | 2024/11/12 | validRegexPattern() 追加 |
準備:PHP の https対応
Windowsでは、"php.ini" の下記の行を有効化する。
extension=php_openssl.dllLinuxでは --with-openssl=/usr オプションを付けて再ビルドする。→OpenSSLインストール手順
これで準備は完了だ。
準備:pahooInputData 関数群
また、各種クラウドサービスに登録したときに取得するアカウント情報、アプリケーションパスワードなどを登録した .pahooEnv ファイルから読み込む関数 pahooLoadEnv を備えている。こちらについては、「各種クラウド連携サービス(WebAPI)の登録方法」をご覧いただきたい。
キーフレーズ抽出
| URL |
|---|
| https://jlp.yahooapis.jp/KeyphraseService/V2/extract |
| フィールド名 | 要否 | 内 容 | |
|---|---|---|---|
| id | 必須 | JSON-RPC 2.0のid。値は任意で、指定した値がレスポンスのidに返る。 | |
| jsonrpc | 必須 | "2.0" 固定。 | |
| method | 必須 | "jlp.keyphraseservice.extract" 固定。 | |
| params | q | 必須 | 解析対象のテキスト。UTF-8エンコード。 |
準備:アプリケーションIDなど
keyphrase.php
53: // 各種定数(START) ===========================================================
54:
55: // 表示幅(ピクセル)
56: define('WIDTH', 600);
57:
58: // Yahoo! JAPAN Webサービス アプリケーションID【各自で設定】
59: // 取得方法:https://www.pahoo.org/e-soul/webtech/php06/php06-01-02.shtm#Yahoo
60: if (isset($_ENV['PAHOO_YAHOO_APPLICATION_ID'])) {
61: define('YAHOO_APPLICATION_ID', $_ENV['PAHOO_YAHOO_APPLICATION_ID']);
62: } else {
63: define('YAHOO_APPLICATION_ID', '');
64: }
65:
66: // Yahoo!JAPAN キーフレーズ抽出(V2)【変更不可】
67: define('YAHOO_KEYPHRASE_URL', 'https://jlp.yahooapis.jp/KeyphraseService/V2/extract');
68:
69: // リンク先の検索対象ドメイン名
70: define('SEARCH_DOMAIN', 'pahoo.org');
71:
72: // サンプル・テキスト
73: define('SAMPLE_TEXT', "1000年(長保2年)2月25日、藤原道長の長女、藤原彰子が第66代・一条天皇の中宮(皇后)となる。\n女房として、「源氏物語」の作者である紫式部や、歌人・和泉式部をしたがえ、朝廷に華麗な文芸サロンを形成した。\nまた、これより少し前、中宮定子の女房として、「枕草子」の作者とされる清少納言が仕えており、この頃、国文学が盛んになった。");
74:
75: // 各種定数(END) ===============================================================
取得したIDは、ファイル .pahooEnv もしくは、本プログラムの定数 APPLICATION_ID に格納する。
その他、変更不可と記載のない定数は任意に変更して構わない。
解説:キーフレーズを取り出す
keyphrase.php
176: /**
177: * 「Yahoo!JAPAN キーフレーズ抽出」を用いてキーフレーズを取り出す
178: * @param string $sentence 解析するテキスト
179: * @param array $items 解析結果を格納する配列
180: * @return bool TRUE:成功/FALSE:失敗
181: */
182: function getKeyphrase($sentence, &$items) {
183: $url = YAHOO_KEYPHRASE_URL;
184: $post = array(
185: 'id' => '1234-1', // ダミー
186: 'jsonrpc' => '2.0', // 固定値
187: 'method' => 'jlp.keyphraseservice.extract', // 固定値
188: 'params' => array(
189: 'q' => (string)$sentence // 対象テキスト
190: )
191: );
192: $json = json_encode($post);
193:
194: // WebAPIにパラメータをPOST渡しする
195: $stream = stream_context_create(array('http' => array(
196: 'header' => "Content-Type: application/json\r\n" .
197: "User-Agent: Yahoo AppID: " . YAHOO_APPLICATION_ID . "\r\n",
198: 'method' => 'POST',
199: 'content' => $json,
200: )));
201:
202: // WebAPIリクエスト
203: $res = @file_get_contents($url, FALSE, $stream);
204:
205: if ($res == FALSE) {
206: $this->error = TRUE;
207: $this->errmsg = 'WebAPI error: ' . $url;
208: return FALSE;
209: }
210:
211: // 応答を配列へ代入
212: $results = json_decode($res);
213: if (! isset($results->result->phrases)) return FALSE;
214: $cnt = 0;
215: foreach ($results->result->phrases as $phrase) {
216: if (isset($phrase->score) && isset($phrase->text)) {
217: $items[(string)$phrase->text] = (int)$phrase->score;
218: $cnt++;
219: }
220: }
221:
222: return ($cnt > 0) ? TRUE : FALSE;
223: }
WebAPIに渡すパラメータは json_encode 関数によってJSON文字列にエンコードする。
User-Agentとして Yahoo! JAPAN Webサービス アプリケーションID を渡すために、 stream_context_create 関数を使ってストリームコンテキストを用意し、 file_get_contents 関数を使って応答JSON文を取得する。
応答JSON文は json_decode 関数を使って連想配列にデコードし、配列 $items へ格納していく。
解説:ワードクラウドの作成
keyphrase.php
236: /**
237: * ワードクラウドを作成する
238: * @param array $items 情報を格納した配列
239: * @return string ワードクラウド(HTML)
240: */
241: function makeWordCloud($items) {
242: $width = WIDTH;
243: $outstr = '';
244: $n = 0;
245:
246: foreach ($items as $keyphrase=>$score) {
247: $n++;
248: $fsize = $score * 1.7 + 80;
249: $link = get_link($keyphrase);
250: if ($n > 1) $outstr .= " \n";
251: $outstr .=<<< EOT
252: <span style="font-size:{$fsize}%; color:blue;">
253: <a href={$link}>{$keyphrase}</a>
254: </span>
255:
256: EOT;
257: }
258: return $outstr;
259: }
「キーフレーズの重要度」が100以下の数値であるので、フォントの大きさの計算式を変更している。
参考サイト
- キーフレーズ抽出API:Yahoo!デベロッパーネットワーク
- PHPで形態素解析を行う:ぱふぅ家のホームページ
- PHPでワードクラウドをつくる:ぱふぅ家のホームページ

(2025年9月6日).pahooEnv導入