parse

バージョン1.1.0 以前の説明は parse(バージョン1.1.0以前) へ。

説明

parse は自然言語文を解析し、地名語を抽出した結果を返すジオパース処理を行う。

文法

object geonlp.parse (string sentence [, object options])

object geonlp.parse (string[] sentences [, object options])

リクエストパラメータ

sentence
  • 変換したいテキスト
  • 長さの上限なし
sentences
  • 変換したいテキストの配列
  • 要素の長さ、要素数の上限なし
  • それぞれの要素は独立したテキストの集合として解析され、地名解決に影響しない
  • parse を繰り返し呼び出す代わりにまとめて処理するために用いる
options
  • 利用する辞書の指定など、処理のオプションを設定する
  • オプションの詳細は parse オプション を参照

リクエストの例

{
  "method": "geonlp.parse",
  "params":
    [
      "NIIは千代田区一ツ橋2-1-2にあります。神保町から徒歩3分。",
      { "geocoding":true, "threshold":0 }
    ],
  "id": "1"
}

レスポンス

処理結果の構造化テキストを返す。 構造化テキストは、地名語以外の文字列はジオメトリに null を、地名語部分は Point 型のジオメトリをもつ複数の GeoJSON オブジェクトから構成された、1つのフィーチャーコレクションオブジェクト。

地名語を含む GeoJSON オブジェクトは、 properties メンバーに 地名語のJSON表現住所のJSON表現 を持つ。地名語ではない場合、properties には元の文章中の文字列が含まれる。

レスポンスの例

{
  "error":null,
  "id":"1",
  "result":{
    "features":[
      {
        "geometry":null,
        "properties":{
          "surface":"NIIは"
        },
        "type":"Feature"
      },
      {
        "geometry":{
          "coordinates":[
            139.756927,
            35.692795
          ],
          "type":"Point"
        },
        "properties":{
          "address":[
            {
              "geonlp_id":"ALRYpP",
              "latitude":35.689499,
              "level":1,
              "longitude":139.691635,
              "name":"東京都"
            },
            {
              "geonlp_id":"51sMnl",
              "latitude":35.693932,
              "level":3,
              "longitude":139.753540,
              "name":"千代田区"
            },
            {
              "latitude":35.691635,
              "level":5,
              "longitude":139.756683,
              "name":"一ツ橋"
            },
            {
              "latitude":35.692947,
              "level":6,
              "longitude":139.757324,
              "name":"二丁目"
            },
            {
              "latitude":35.692795,
              "level":7,
              "longitude":139.756927,
              "name":"1番"
            }
          ],
          "code":{
            "jisx0402":"13101",
            "lasdec":"131016"
          },
          "name":"東京都千代田区一ツ橋二丁目1番",
          "standard_form":"東京都千代田区一ツ橋二丁目1番"
        },
        "type":"Feature"
      },
      {
        "geometry":null,
        "properties":{
          "surface":"2にあります。"
        },
        "type":"Feature"
      },
      {
        "geometry":{
          "coordinates":[
            139.758428,
            35.694893
          ],
          "type":"Point"
        },
        "properties":{
          "body":"神保町",
          "body_kana":"ジンボウチョウ",
          "dictionary_id":31,
          "entry_id":"eb03_6358",
          "geonlp_id":"rQ1HpF",
          "hypernym":[
            "東京都",
            "三田線"
          ],
          "kana":"ジンボウチョウエキ",
          "latitude":"35.6948933333333",
          "longitude":"139.758428333333",
          "name":"神保町駅",
          "ne_class":"鉄道施設/地下鉄駅",
          "railway_type":"12",
          "service_provider_type":"3",
          "suffix":[
            "駅",
            ""
          ],
          "suffix_kana":[
            "エキ",
            ""
          ]
        },
        "type":"Feature"
      },
      {
        "geometry":null,
        "properties":{
          "surface":"から徒歩3分。"
        },
        "type":"Feature"
      }
    ],
    "type":"FeatureCollection"
  }
}

PHP サンプルコード

jsonrpc_client.php

ダウンロード

<?php

$apikey = ""; // <-- input your API key

function jsonrpc_exec($json_request) {
  global $apikey;
  if ($apikey == '') throw new Exception("Please submit the API key from the GeoNLP site (https://geonlp.ex.nii.ac.jp)");

  $endpoint = "https://dias.ex.nii.ac.jp/geonlp/api/1/geo-tagging";
  $header  = array("Content-Type: application/json",
                   "X-GeoNLP-Authorization: {$apikey}",
                   "Content-Length: ".strlen($json_request));
  $options = array('http' => array('method' => 'POST', 'header' => implode("\r\n", $header), 'content' => $json_request));
  $content = file_get_contents($endpoint, false, stream_context_create($options));
  $result = var_export(json_decode($content, true), true);
  return $result;
}

parse.php

ダウンロード

<?php
require_once('jsonrpc_client.php');

$request = array(
             "method" =>"geonlp.parse",
             "params" => array(
               "NIIは千代田区一ツ橋2-1-2にあります。神保町から徒歩3分。",
               array("geocoding"=>true, "threshold"=>0)
             ),
             "id" => "1"
           );

$response = jsonrpc_exec(json_encode($request));
echo $response, "\n";

実行結果

$ php parse.php
array (
  'error' => NULL,
  'id' => '1',
  'result' => 
  array (
    'features' => 
    array (
      0 => 
      array (
        'geometry' => NULL,
        'properties' => 
        array (
          'surface' => 'NIIは',
        ),
        'type' => 'Feature',
      ),
      1 => 
      array (
        'geometry' => 
        array (
          'coordinates' => 
          array (
            0 => 139.756927,
            1 => 35.692795,
          ),
          'type' => 'Point',
        ),
        'properties' => 
        array (
          'address' => 
          array (
            0 => 
            array (
              'geonlp_id' => 'ALRYpP',
              'latitude' => 35.689499,
              'level' => 1,
              'longitude' => 139.691635,
              'name' => '東京都',
            ),
            1 => 
            array (
              'geonlp_id' => '51sMnl',
              'latitude' => 35.693932,
              'level' => 3,
              'longitude' => 139.75354,
              'name' => '千代田区',
            ),
            2 => 
            array (
              'latitude' => 35.691635,
              'level' => 5,
              'longitude' => 139.756683,
              'name' => '一ツ橋',
            ),
            3 => 
            array (
              'latitude' => 35.692947,
              'level' => 6,
              'longitude' => 139.757324,
              'name' => '二丁目',
            ),
            4 => 
            array (
              'latitude' => 35.692795,
              'level' => 7,
              'longitude' => 139.756927,
              'name' => '1番',
            ),
          ),
          'code' => 
          array (
            'jisx0402' => '13101',
            'lasdec' => '131016',
          ),
          'name' => '東京都千代田区一ツ橋二丁目1番',
          'standard_form' => '東京都千代田区一ツ橋二丁目1番',
        ),
        'type' => 'Feature',
      ),
      2 => 
      array (
        'geometry' => NULL,
        'properties' => 
        array (
          'surface' => '2にあります。',
        ),
        'type' => 'Feature',
      ),
      3 => 
      array (
        'geometry' => 
        array (
          'coordinates' => 
          array (
            0 => 139.758428,
            1 => 35.694893,
          ),
          'type' => 'Point',
        ),
        'properties' => 
        array (
          'body' => '神保町',
          'body_kana' => 'ジンボウチョウ',
          'dictionary_id' => 31,
          'entry_id' => 'eb03_6358',
          'geonlp_id' => 'rQ1HpF',
          'hypernym' => 
          array (
            0 => '東京都',
            1 => '三田線',
          ),
          'kana' => 'ジンボウチョウエキ',
          'latitude' => '35.6948933333333',
          'longitude' => '139.758428333333',
          'name' => '神保町駅',
          'ne_class' => '鉄道施設/地下鉄駅',
          'railway_type' => '12',
          'service_provider_type' => '3',
          'suffix' => 
          array (
            0 => '駅',
            1 => '',
          ),
          'suffix_kana' => 
          array (
            0 => 'エキ',
            1 => '',
          ),
        ),
        'type' => 'Feature',
      ),
      4 => 
      array (
        'geometry' => NULL,
        'properties' => 
        array (
          'surface' => 'から徒歩3分。',
        ),
        'type' => 'Feature',
      ),
    ),
    'type' => 'FeatureCollection',
  ),
)