Skip to main content

pygeonlp, A python module for geotagging Japanese texts

pygeonlp is an open source software for geotagging/geoparsing Japanese natural language text to extract place names.

More detailed Japanese documentation and API references are available in the /docs/source directory. You can also find the latest online documentation at PyGeoNLP Reference.

How To Use

Import pygeonlp.api and initialize it by specifying the directory where the place-name database is placed.

>>> import pygeonlp.api as api
>>> api.init(db_dir='mydic')

Then, run geoparse("text to parse") .

>>> result = api.geoparse("国立情報学研究所は千代田区にあります。")

The result is a list of dict objects, with POS/Spatial attributes assigned to each word.

A GeoJSON representation is obtained by JSON-encoding each dict object.

>>> import json
>>> print(json.dumps(result, indent=2, ensure_ascii=False))
[
  {
    "type": "Feature",
    "geometry": null,
    "properties": {
      "surface": "国立",
      "node_type": "NORMAL",
      "morphemes": {
        "conjugated_form": "名詞-固有名詞-地名語",
        "conjugation_type": "*",
        "original_form": "国立",
        "pos": "名詞",
        "prononciation": "コクリツ",
        "subclass1": "固有名詞",
        "subclass2": "地名修飾語",
        "subclass3": "*",
        "surface": "国立",
        "yomi": "コクリツ"
      }
    }
  }, ... 
  {
    "type": "Feature",
    "geometry": {
      "type": "Point",
      "coordinates": [
        139.753634,
        35.694003
      ]
    },
    "properties": {
      "surface": "千代田区",
      "node_type": "GEOWORD",
      "morphemes": {
        "conjugated_form": "*",
        "conjugation_type": "*",
        "original_form": "千代田区",
        "pos": "名詞",
        "prononciation": "",
        "subclass1": "固有名詞",
        "subclass2": "地名語",
        "subclass3": "WWIY7G:千代田区",
        "surface": "千代田区",
        "yomi": ""
      },
      "geoword_properties": {
        "address": "東京都千代田区",
        "body": "千代田",
        "body_variants": "千代田",
        "code": {},
        "countyname": "",
        "countyname_variants": "",
        "dictionary_id": 1,
        "entry_id": "13101A1968",
        "geolod_id": "WWIY7G",
        "hypernym": [
          "東京都"
        ],
        "latitude": "35.69400300",
        "longitude": "139.75363400",
        "ne_class": "市区町村",
        "prefname": "東京都",
        "prefname_variants": "東京都",
        "source": "1/千代田区役所/千代田区九段南1-2-1/P34-14_13.xml",
        "suffix": [
          "区"
        ],
        "valid_from": "",
        "valid_to": "",
        "dictionary_identifier": "geonlp:geoshape-city"
      }
    }
  },
  {
    "type": "Feature",
    "geometry": null,
    "properties": {
      "surface": "に",
      "node_type": "NORMAL",
      "morphemes": {
        "conjugated_form": "*",
        "conjugation_type": "*",
        "original_form": "に",
        "pos": "助詞",
        "prononciation": "ニ",
        "subclass1": "格助詞",
        "subclass2": "一般",
        "subclass3": "*",
        "surface": "に",
        "yomi": "ニ"
      }
    }
  },...
]

Pre-requirements

pygeonlp requires MeCab C++ library and UTF8 dictionary for Japanese morphological analysis.

Also, the C++ implementation part depends on Boost C++.

$ sudo apt install libmecab-dev mecab-ipadic-utf8 libboost-all-dev

Install

The pygeonlp package can be installed with the pip command. It is recommended that you upgrade pip and setuptools to the latest versions before running it.

$ pip install --upgrade pip setuptools
$ pip install pygeonlp

The database needs to be prepared the first time.

Prepare the database

Execute the command to register the basic place name word analysis dictionaries (*.json, *.csv) in this package into the database under mydic/.

>>> import pygeonlp.api as api
>>> api.setup_basic_database(db_dir='mydic/')

This command registers three dictionaries:

  • "Prefectures of Japan" (geonlp:geoshape-pref),

  • "Historical Administrative Area Data Set Beta Dictionary of Place Names" (geonlp:geoshape-city)

  • "Railroad Stations in Japan (2019)" (geonlp:ksj-station-N02-2019)

Install GDAL library (Optional)

If the GDAL library is installed, pygeonlp can use "spatial distance" for disambiguation when there are multiple place names with the same name, thus improving accuracy. You can also use spatial filters.

$ sudo apt install libgdal-dev
$ pip install gdal

Install jageocoder (Optional)

pygeonlp can use address-geocoding if an address-dictionary for jageocoder is installed.

See the jageocoder documentation for installation instructions.

Run tests (Optional)

Run the unit tests with pytest command.

Uninstall

Use pip command to uninstall.

$ pip uninstall pygeonlp

Delete the database

When you register a place-name word analysis dictionary to the database, it will create a sqlite3 database and some other files in the specified directory.

If you want to delete them, just delete the whole directory.

$ rm -r mydic/

License

The 2-Clause BSD License

Acknowledgements

This software is supported by DIAS (Data Integration and Analysis System) and ROIS-DS CODH (Center for Open Data in the Humanities).

It was also supported by JST (Japan Science and Technology Agency) PRESTO program.

Release files for pygeonlp 1.2.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pygeonlp 1.2.5
File Size Uploaded
pygeonlp-1.2.5.tar.gz 2.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for pygeonlp 1.2.5
File Interpreter ABI Platform
pygeonlp-1.2.5-cp314-cp314-macosx_26_0_arm64.whl CPython 3.14 CPython 3.14 macOS 26.0+ ARM64 Details

Total release size: 4.2 MB

Release files / pygeonlp-1.2.5.tar.gz

Download URL pygeonlp-1.2.5.tar.gz
Size 2.0 MB
Tags Source
SHA-256 checksum
How to use checksums
9f233dc089f5bbcc2abbe782cda64fd8ed1886da46a5f2b5f38d9814e3cdde92
BLAKE2b-256 checksum
How to use checksums
d403aef531854ee13a1abf98126d94c1f1046c5b1167ac745c390b3a29c927f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / pygeonlp-1.2.5-cp314-cp314-macosx_26_0_arm64.whl

Download URL pygeonlp-1.2.5-cp314-cp314-macosx_26_0_arm64.whl
Size 2.2 MB
Tags CPython 3.14 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
7587abf970c20b8282a51a0da37a0002c775654f9b7774d589a465b00872950e
BLAKE2b-256 checksum
How to use checksums
1f6990557f3dbb5bd26e11720be966942153b10d97480420d43a65bfc29b9e1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page