GeoNLP

テキストを自動的に地図化する地名情報処理ソフトウェア

GeoNLPソフトウェア更新情報

ソフトウェア公開サイト

バージョン2の変更点

ソフトウェア形態の変更

提供するソフトウェアを WebAPI サーバから Python モジュールに変更しました。

  • ウェブサーバを設置しなくても利用できます。
  • Python プログラムに組み込んで利用できます。
  • 従来の WebAPI サーバ機能は近日公開予定です。

辞書管理方法の変更

全ての辞書を一度 GeoNLP Data サイトに登録し、ユーザがダウンロードして利用する中央管理型から、ウェブ上またはローカルシステム上のファイルを、ユーザごとに選択して利用する分散型に変更しました。

  • これに伴い、地名語に geonlp_id (geolod_id) が付与されていないものも地名語解析処理に利用できるようになりました。
  • 利用できる辞書データの発見のために、辞書のメタデータを JSON+LD 形式に変更し、Google Dataset Search で検索できるようにしました。

辞書管理ユーティリティの廃止

辞書を管理するためのクライアント側プログラムである「辞書管理ユーティリティ」を廃止しました。

  • 今後は、辞書のダウンロードやデータベースへの登録に Python API を利用することになります。

Geoparse 処理結果のフォーマット変更

  • 旧バージョンの「配列形式」のレスポンスを廃止しました。
  • 旧バージョンの「FeatureCollection 形式」と同様の GeoJSON 準拠の処理結果を返します。
  • 地名語・住所以外のノードも Mecab の形態素ごとに分割し、Geometry が none である Feature 情報として返します。
  • 全ての Feature は Mecab の形態素情報を保持しており、後処理に利用できます。

実装言語の変更

実装言語をフル C++ から、一部 C++ と Python に変更しました。

  • インストールが比較的簡単になりました。
  • コードの変更や拡張が比較的簡単になりました。
  • ユーザ独自のスコアリング方法を Python で実装し利用することができます。
  • ユーザ独自のフィルタを Python で実装し利用することができます。

解析ロジックと内部データ表現の整理

旧バージョンでは、解析中に内部のデータ表現が変化し、処理の順番を入れ替えたり追加の情報を持たせたりすることが困難だったため、新バージョンでは以下のように整理しました。

ラティス表現:形態素ごとに地名語や一般語の候補を列挙した二次元配列
  • 拡張形態素解析の結果として得られます。
  • フィルタを適用して候補を絞り込めます。
  • 住所ジオコーダーで住所候補を追加することができます。
  • フィルタや住所ジオコーダーを適用してもラティス表現のままです。
パス表現:形態素ごとの各候補の組み合わせを列挙した二次元配列
  • ラティス表現を変換することで得られます。
  • パス表現に対してスコアを計算することで、n-best 解が得られます。
  • パス表現は GeoJSON 互換表現として出力できます。

住所ジオコーダーの変更

連携する住所ジオコーダーを DAMS から jageocoder に変更しました。

  • DAMS のビルドは知識が必要でしたが、 jageocoder は pip でインストールできます。
  • jageocoder は国土地理院の住居表示住所データを利用できるため、街区レベルの DAMS より位置精度が向上します。

その他の更新情報につきましては、以下をご覧下さい。

バージョン1について

GeoNLPバージョン1は既にメンテナンスを終了しており、利用が困難な状態になっています。過去の記録として必要な場合は、以下からダウンロードしてください。

ソフトウェア更新履歴

pygeonlp v1.2.0 (2022-01-31)

  • 機能変更

    • 辞書管理をコマンドラインから実行できるように拡張

    • クラスの階層構造を変更

      • 処理フロー全体を管理する Workflow を新たに追加

      • フローの各ステップをテキスト解析を行なう Parser, 候補の絞り込みを行なう Filter, 候補のランキングを行なう Evaluator に整理し、Workflow のメンバとすることで拡張性を改善

      • geoparse() は Workflow のメンバメソッドに変更し、オプション jageocoder を廃止

  • その他の変更

    • クラス階層の変更に伴い、ドキュメントおよびテスト、サンプルコードを更新

pygeonlp v1.1.1 (2021-08-30)

  • 機能変更

    • 地名解析辞書(都道府県および鉄道)を更新

      • 旧 GeoNLP の geonlp_id を利用していたため、新たに振り直しました

      • 今後は辞書を更新しても geolod_id は変更しない予定です

  • 不具合修正

    • geoparse で地名語や住所の候補が多数含まれていて、組み合わせ数が多すぎる場合に、自動的に部分文字列に分割する処理が永遠に終わらないことがある不具合の修正

  • その他の変更

    • 辞書更新に伴い API のドキュメントに含まれるサンプルコードの出力結果を修正

pygeonlp v1.1.0 (2021-07-29)

  • 機能変更

    • 地名解析辞書を削除して、利用可能な辞書が一つもなくなってもエラーとしないように変更

    • setActiveClasses() で、除外するクラスは最後に評価していたのを配列の順番通りに評価するように変更し、「ある条件に一致するクラスは除外、ただし次の条件に一致するクラスは除外しない」という指定が可能

    • jageocoder を必須モジュールとして自動インストールするように変更、ただし辞書がインストールされていなければ利用しない

    • ウェブサービス機能 pygeonlp-webapi v1.1.0 を提供開始

  • 不具合修正

    • 地名解析辞書を削除した後に、別の辞書を追加すると、追加した辞書に含まれる地名語が解析に利用できない不具合を修正

    • 解析する文字列の住所に含まれる「番」と「番地」が適切に解析できない不具合を修正

    • NEologd を利用すると「千代田区一ツ橋」などが一語になり、住所ジオコーディングが機能しない問題を修正

    • setup_basic_database() でパッケージに同梱している基本地名解析辞書が見つからない場合がある問題を修正

  • その他の変更

    • ドキュメントを /doc/ 以下に追加

pygeonlp v1.0.1 (2021-07-13)

  • 機能変更

    • 複数プロセスによる一つのデータベースへの同時リードアクセスに対応

    • 地名語が連続する長いセンテンスの解析処理効率を改善

    • pygeonlp.api.parser.Perser の初期化時のオプションパラメータを capi_ma から service に変更

  • 不具合修正

    • C++ 内の処理で sqlite3 ファイルのパスに '//' が含まれていた箇所を修正

    • Parser がモジュールメソッド getWordInfo() を利用して parser に紐づけられていないデータベースにアクセスすることがあったため、初期化時に指定された service の getWordInfo() を呼ぶように修正

    • 住所文字列に続く形態素の先頭部分が住所文字列の最後尾として解析されてしまう不具合を修正

  • その他の変更

    • README, README_ja に含まれていた古いバージョンの記述を更新

Ver. 2.0.0

Python 用モジュール pygeonlp v1.0.0 として再構築

Ver. 1.2.0

  • 時空間フィルタを追加
  • parse オプションに "geojson" を追加。true にセットした場合、parse, parseStructured API のレスポンスを GeoJSON 準拠の parse レスポンス(FeatureCollection形式) に変更できる。今後このレスポンス形式を推奨します。

Ver. 1.1.0

  • GeoNLP 辞書管理ユーティリティをダウンロードパッケージに追加
  • 分布情報保持サーバ機能を追加
  • このバージョンより、 GeoNLP 辞書管理ユーティリティを含むため、地名解析辞書はパッケージに同梱されませんので注意してください。

Ver. 1.0.7

  • configure 時に --with-dams オプションを指定できるように修正
  • DAMS を利用している場合に実行される住所解析で、町名と字名が同じ住所(「北海道磯谷郡蘭越町蘭越町」など)の場合に町と字の地名語が正しく対応づけられないことがある不具合を修正(この修正を有効にするには、「日本の郡・市区町村」辞書および「日本の大字」辞書を、 address_level 項目が含まれている 2014 年 1 月 14 日以降のバージョンに更新する必要があります。同梱されている辞書は更新済みです。)
  • geonlp_maの出力フォーマットを CaboCha の layer 1 に合わせ、係り受け解析処理に利用できるように変更
  • php 拡張モジュールを PHP 5.4 以降でもパッチを当てずにコンパイルできるように修正

Ver. 1.0.6

  • 同綴地名が複数存在し、他の地名語との関連だけでは判断できない場合に、他の地名語との空間的な距離が近い方を選択するロジックを追加
  • ジオコーダを利用時に同綴住所が存在する場合、他の地名語との空間的な距離が近い方を選択するロジックを追加
  • リクエストに改行コードが含まれると、処理中に欠落してしまう不具合を修正

Ver. 1.0.5

ver. 1.0.4

  • 同綴地名が複数存在する場合の選択ロジックを改良

ver. 1.0.3

  • Debian パッケージでインストールされた MeCab 辞書の自動判別機能を追加

ver. 1.0.2

  • configure 時に libsqlite3 がインストールされていないとエラーになるように修正
  • debian 7.1 で configure が生成する Makefile ではコンパイルが通らない問題に対応
  • ToDo: debian パッケージでインストールされた MeCab 辞書の自動判別に失敗する問題には未対応

ver. 1.0.1

  • インストール前、インストール後に動作確認を行う make test-preinstall, test-postinstall を追加