pygeonlp.api.service module

class pygeonlp.api.service.Service(db_dir=None, geoword_rules={}, **options)

ベースクラス: object

GeoNLP API を提供するサービスクラスです。

pygeonlp.api.init() を実行すると、このクラスのインスタンスが _default_service として作成されて利用されます。

異なる辞書を利用する複数のサービスを並行して利用したい場合などは Service のインスタンスを複数作成し、それぞれのメソッドを呼びだしてください。

_dict_cache

辞書ID(整数)をキー、辞書identifier(文字列)を値にもつ マッピングテーブル(キャッシュ用)。

Type

dict

capi_ma

C 実装の拡張形態素解析機能を利用するためのオブジェクト。

Type

pygeonlp.capi オブジェクト

db_dir

このサービスが利用するデータベースディレクトリのパス。

Type

str

__init__(db_dir=None, geoword_rules={}, **options)

このサービスが利用する辞書や、各種設定を初期化します。

パラメータ
  • db_dir (str, optional) -- 利用するデータベースディレクトリのパス。 省略した場合は api.get_db_dir() で決定します。

  • geoword_rules (dict, optional) -- 地名語を解析するルールセットを指定します。

  • options (dict, optional) -- その他の解析オプションを指定します。

メモ

geoword_rules, options の詳細およびデフォルト値は pygeonlp.api.init() を参照してください。

activateDictionaries(idlist=None, pattern=None)

指定した辞書を再び利用するようにします。 既に利用可能な辞書は指定しなくても利用可能なままになります。 新たに利用可能になった辞書のリストを返します。

パラメータ
  • idlist (list) -- 利用する辞書の内部 id または identifier のリスト。

  • pattern (str) -- 利用する辞書の identifier を指定する正規表現。

戻り値

新たに利用可能になった辞書の identifier のリスト。

戻り値の型

list

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> sorted(service.disactivateDictionaries(pattern=r'.*'))
['geonlp:geoshape-city', 'geonlp:geoshape-pref', 'geonlp:ksj-station-N02']
>>> [x.get_identifier() for x in service.getActiveDictionaries()]
[]
>>> service.activateDictionaries(pattern=r'ksj-station')
['geonlp:ksj-station-N02']
>>> [x.get_identifier() for x in service.getActiveDictionaries()]
['geonlp:ksj-station-N02']

メモ

idlist と pattern を同時に指定した場合、どちらか一方の条件に 一致する辞書は利用可能になります。

addDictionaryFromCsv(csvfile, name=None, identifier=None)

指定したパスにある地名解析辞書(CSVファイル)をデータベースに登録します。

辞書の name と identifier を省略した場合、 CSV ファイル名から自動的に設定されます。

既に同じ identifier を持つ辞書データがデータベースに登録されている場合、 削除してから新しい辞書データを登録します。

登録した辞書を利用可能にするには、 setActivateDictionaries() または activateDictionaries() で有効化する必要があります。

パラメータ
  • csvfile (str) -- 地名解析辞書ファイルのパス。

  • name (str, optional) -- 辞書名。省略した場合、 CSV ファイルの basename を利用します。

  • identifier (str, optional) -- 辞書 identifier。省略した場合、 CSV ファイルの basename を取り、 geonlp:<basename> を利用します。

戻り値

常に True。登録に失敗した場合は例外が発生します。

戻り値の型

bool

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.addDictionaryFromCsv(
...   'base_data/ksj-station-N02-2020.csv',
...   name='日本の鉄道駅(2020年)')
True
>>> service.updateIndex()
True
>>> service.activateDictionaries(['geonlp:ksj-station-N02-2020'])
['geonlp:ksj-station-N02-2020']
addDictionaryFromFile(jsonfile, csvfile)

指定したパスにある辞書メタデータ(JSONファイル)と 地名解析辞書(CSVファイル)をデータベースに登録します。

既に同じ identifier を持つ辞書データがデータベースに登録されている場合、 削除してから新しい辞書データを登録します。

登録した辞書を利用可能にするには、 setActivateDictionaries() または activateDictionaires() で有効化する必要があります。

パラメータ
  • jsonfile (str) -- 辞書メタデータファイルのパス。

  • csvfile (str) -- 地名解析辞書ファイルのパス。

戻り値

常に True。登録に失敗した場合は例外が発生します。

戻り値の型

bool

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.addDictionaryFromFile(
...   'base_data/geoshape-city.json', 'base_data/geoshape-city.csv')
True
>>> service.updateIndex()
True
addDictionaryFromWeb(url, params=None, **kwargs)

指定した URL にあるページに含まれる辞書メタデータ(JSON-LD)を取得し、 メタデータに記載されている URL から地名解析辞書(CSVファイル)を取得し、 データベースに登録します。

既に同じ identifier を持つ辞書データがデータベースに登録されている場合、 削除してから新しい辞書データを登録します。

登録した辞書を利用可能にするには、 setActivateDictionaries() または activateDictionaires() で有効化する必要があります。

パラメータ
  • url (str) -- 辞書メタデータを含むウェブページの URL。

  • params (dict, optional) -- requests.get に渡す params パラメータ。

  • **kwargs (dict, optional) -- requests.get に渡す kwargs パラメータ。

戻り値

常に True。登録に失敗した場合は例外が発生します。

戻り値の型

bool

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.clearDatabase()
True
>>> service.addDictionaryFromWeb('https://geonlp.ex.nii.ac.jp/dictionary/geoshape-city/')
True
>>> service.updateIndex()
True
analyze(sentence, **kwargs)

文を解析した結果をラティス表現で返します。

パラメータ

sentence (str) -- 解析するテキスト。

戻り値

解析結果のラティス表現。

戻り値の型

list

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.analyze('今日は国会議事堂前まで歩きました。')
[[{"surface": "今日", "node_type": "NORMAL", "morphemes": {"conjugated_form": "*", "conjugation_type": "*", "original_form": "今日", "pos": "名詞", "prononciation": "キョー", "subclass1": "副詞可能", "subclass2": "*", "subclass3": "*", "surface": "今日", "yomi": "キョウ"}, "geometry": null, "prop": null}], [{"surface": "は", "node_type": "NORMAL", "morphemes": {"conjugated_form": "*", "conjugation_type": "*", "original_form": "は", "pos": "助詞", "prononciation": "ワ", "subclass1": "係助詞", "subclass2": "*", "subclass3": "*", "surface": "は", "yomi": "ハ"}, "geometry": null, "prop": null}], [{"surface": "国会議事堂前", "node_type": "GEOWORD", "morphemes": {"conjugated_form": "*", "conjugation_type": "*", "original_form": "国会議事堂前", "pos": "名詞", "prononciation": "", "subclass1": "固有名詞", "subclass2": "地名語", "subclass3": "Bn4q6d:国会議事堂前駅", "surface": "国会議事堂前", "yomi": ""}, "geometry": {"type": "Point", "coordinates": [139.74534166666666, 35.674845]}, "prop": {"body": "国会議事堂前", "dictionary_id": 3, "entry_id": "LrGGxY", "geolod_id": "Bn4q6d", "hypernym": ["東京地下鉄", "4号線丸ノ内線"], "institution_type": "民営鉄道", "latitude": "35.674845", "longitude": "139.74534166666666", "ne_class": "鉄道施設/鉄道駅", "railway_class": "普通鉄道", "suffix": ["駅", ""], "dictionary_identifier": "geonlp:ksj-station-N02"}}, {"surface": "国会議事堂前", "node_type": "GEOWORD", "morphemes": {"conjugated_form": "*", "conjugation_type": "*", "original_form": "国会議事堂前", "pos": "名詞", "prononciation": "", "subclass1": "固有名詞", "subclass2": "地名語", "subclass3": "cE8W4w:国会議事堂前駅", "surface": "国会議事堂前", "yomi": ""}, "geometry": {"type": "Point", "coordinates": [139.74305333333334, 35.673543333333335]}, "prop": {"body": "国会議事堂前", "dictionary_id": 3, "entry_id": "4NFELa", "geolod_id": "cE8W4w", "hypernym": ["東京地下鉄", "9号線千代田線"], "institution_type": "民営鉄道", "latitude": "35.673543333333335", "longitude": "139.74305333333334", "ne_class": "鉄道施設/鉄道駅", "railway_class": "普通鉄道", "suffix": ["駅", ""], "dictionary_identifier": "geonlp:ksj-station-N02"}}], [{"surface": "まで", "node_type": "NORMAL", "morphemes": {"conjugated_form": "*", "conjugation_type": "*", "original_form": "まで", "pos": "助詞", "prononciation": "マデ", "subclass1": "副助詞", "subclass2": "*", "subclass3": "*", "surface": "まで", "yomi": "マデ"}, "geometry": null, "prop": null}], [{"surface": "歩き", "node_type": "NORMAL", "morphemes": {"conjugated_form": "五段・カ行イ音便", "conjugation_type": "連用形", "original_form": "歩く", "pos": "動詞", "prononciation": "アルキ", "subclass1": "自立", "subclass2": "*", "subclass3": "*", "surface": "歩き", "yomi": "アルキ"}, "geometry": null, "prop": null}], [{"surface": "まし", "node_type": "NORMAL", "morphemes": {"conjugated_form": "特殊・マス", "conjugation_type": "連用形", "original_form": "ます", "pos": "助動詞", "prononciation": "マシ", "subclass1": "*", "subclass2": "*", "subclass3": "*", "surface": "まし", "yomi": "マシ"}, "geometry": null, "prop": null}], [{"surface": "た", "node_type": "NORMAL", "morphemes": {"conjugated_form": "特殊・タ", "conjugation_type": "基本形", "original_form": "た", "pos": "助動詞", "prononciation": "タ", "subclass1": "*", "subclass2": "*", "subclass3": "*", "surface": "た", "yomi": "タ"}, "geometry": null, "prop": null}], [{"surface": "。", "node_type": "NORMAL", "morphemes": {"conjugated_form": "*", "conjugation_type": "*", "original_form": "。", "pos": "記号", "prononciation": "。", "subclass1": "句点", "subclass2": "*", "subclass3": "*", "surface": "。", "yomi": "。"}, "geometry": null, "prop": null}]]

メモ

ラティス表現では全ての地名語の候補を列挙して返します。

clearDatabase()

データベースに登録されている辞書をクリアします。 データベース内の地名語も全て削除されます。

この関数は、データベースを作り直す際に利用します。

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.clearDatabase()
True
>>> service.addDictionaryFromWeb(
...   'https://geonlp.ex.nii.ac.jp/dictionary/geoshape-city/')
True
>>> service.updateIndex()
True
disactivateDictionaries(idlist=None, pattern=None)

指定した辞書を一時的に除外し、利用しないようにします。 既に除外されている辞書は除外されたままになります。 新たに除外された辞書のリストを返します。

パラメータ
  • idlist (list) -- 除外する辞書の内部 id または identifier のリスト。

  • pattern (str) -- 除外する辞書の identifier を指定する正規表現。

戻り値

新たに除外された辞書の identifier のリスト。

戻り値の型

list

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.disactivateDictionaries(pattern=r'geonlp:geoshape')
['geonlp:geoshape-city', 'geonlp:geoshape-pref']
>>> [x.get_identifier() for x in service.getActiveDictionaries()]
['geonlp:ksj-station-N02']
>>> service.disactivateDictionaries(pattern=r'ksj-station')
['geonlp:ksj-station-N02']
>>> [x.get_identifier() for x in service.getActiveDictionaries()]
[]

メモ

idlist と pattern を同時に指定した場合、どちらか一方の条件に 一致する辞書は除外されます。

geoparse(sentence, jageocoder=None, filters=None, scoring_class=None, scoring_options=None)

文を解析した結果を GeoJSON Feature 形式に変換可能な dict のリストを返します。

パラメータ
  • sentence (str) -- 解析する文字列。

  • jageocoder (bool, optional) -- 住所ジオコーダを利用する場合 True を指定します。 False または省略した場合は利用しません。

  • filters (list, optional) -- 強制的に適用する Filter インスタンスのリスト。

  • scoring_class (class, optional) -- パスのスコアとノード間のスコアを計算するメソッドをもつ スコアリングクラス。 省略した場合は scoring.ScoringClass を利用します。

  • scoring_options (any, optional) -- スコアリングクラスの初期化に渡すオプションパラメータ。

戻り値

形態素で分割した各要素のジオメトリや形態素情報、地名語情報を GeoJSON Feature 形式に変換可能な dict で表現し、 そのリストを返します。

戻り値の型

list

サンプル

>>> import json
>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> json.dumps({'type':'FeatureCollection', 'features':service.geoparse('今日は 国会議事堂前まで歩きました。')}, ensure_ascii=False)
'{"type": "FeatureCollection", "features": [{"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": 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.74305333333334, 35.673543333333335]}, "properties": {"surface": "国会議事堂前", "node_type": "GEOWORD", "morphemes": {"conjugated_form": "*", "conjugation_type": "*", "original_form": "国会議事堂前", "pos": "名詞", "prononciation": "", "subclass1": "固有名詞", "subclass2": "地名語", "subclass3": "cE8W4w:国会議事堂前駅", "surface": "国会議事堂前", "yomi": ""}, "geoword_properties": {"body": "国会議事堂前", "dictionary_id": 3, "entry_id": "4NFELa", "geolod_id": "cE8W4w", "hypernym": ["東京地下鉄", "9号線千代田線"], "institution_type": "民営鉄道", "latitude": "35.673543333333335", "longitude": "139.74305333333334", "ne_class": "鉄道施設/鉄道駅", "railway_class": "普通鉄道", "suffix": ["駅", ""], "dictionary_identifier": "geonlp:ksj-station-N02"}}}, {"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": null, "properties": {"surface": "歩き", "node_type": "NORMAL", "morphemes": {"conjugated_form": "五段・カ行イ音便", "conjugation_type": "連用形", "original_form": "歩く", "pos": "動詞", "prononciation": "アルキ", "subclass1": "自立", "subclass2": "*", "subclass3": "*", "surface": "歩き", "yomi": "アルキ"}}}, {"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": null, "properties": {"surface": "た", "node_type": "NORMAL", "morphemes": {"conjugated_form": "特殊・タ", "conjugation_type": "基本形", "original_form": "た", "pos": "助動詞", "prononciation": "タ", "subclass1": "*", "subclass2": "*", "subclass3": "*", "surface": "た", "yomi": "タ"}}}, {"type": "Feature", "geometry": null, "properties": {"surface": "。", "node_type": "NORMAL", "morphemes": {"conjugated_form": "*", "conjugation_type": "*", "original_form": "。", "pos": "記号", "prononciation": "。", "subclass1": "句点", "subclass2": "*", "subclass3": "*", "surface": "。", "yomi": "。"}}}]}'

メモ

このメソッドは解析結果から適切なフィルタを判断し、候補の絞り込みやランキングを行ないます。

getActiveClasses()

解析に利用する固有名クラスの一覧を返します。 デフォルトは '.*' で、全ての固有名クラスが利用されます。

一時的に特定の固有名クラスだけを解析対象としたい場合、 setActiveClasses() で対象クラスを指定できます。

戻り値

利用する固有名クラス(正規表現)のリスト。

戻り値の型

list

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.getActiveClasses()
['.*']
getActiveDictionaries()

インストール済み辞書のうち、解析に利用する辞書のメタデータ一覧を返します。 デフォルトでは全てのインストール済み辞書を利用します。

一時的に辞書を利用したくない場合、 disactivateDictionaries() で除外できます。 除外された辞書は activateDictionaries() で再び利用可能になります。

戻り値

Metadata インスタンスのリスト。

戻り値の型

list

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> sorted([x.get_identifier() for x in service.getActiveDictionaries()])
['geonlp:geoshape-city', 'geonlp:geoshape-pref', 'geonlp:ksj-station-N02']
getDictionaries()

インストール済み辞書のメタデータ一覧を返します。

戻り値

Metadata インスタンスのリスト。

戻り値の型

list

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> sorted([x.get_identifier() for x in service.getDictionaries()])
['geonlp:geoshape-city', 'geonlp:geoshape-pref', 'geonlp:ksj-station-N02']
getDictionary(id_or_identifier)

指定した id または identifier を持つ辞書のメタデータを返します。 id, identifier に一致する辞書が存在しない場合は None を返します。

パラメータ

id_or_identifier (str or int) -- str の場合は辞書 identifier で指定。 int の場合は内部辞書 id で指定。

戻り値

Metadata インスタンス。

戻り値の型

Metadata

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.getDictionary('geonlp:ksj-station-N02')
{"@context": "https://schema.org/", "@type": "Dataset", "alternateName": "", "creator": [{"@type": "Organization", "name": "株式会社情報試作室", "sameAs": "https://www.info-proto.com/"}], "dateModified": "2021-08-27T17:18:18+09:00", "description": "国土数値情報「鉄道データ(N02)」から作成した、日本の鉄道駅(地下鉄を含む)の辞書です。hypernym には運営者名と路線名を記載しています。「都営」ではなく「東京都」のようになっていますので注意してください。自由フィールドとして、railway_classに「鉄道区分」、institution_typeに「事業者種別」を含みます。", "distribution": [{"@type": "DataDownload", "contentUrl": "https://www.info-proto.com/static/ksj-station-N02.csv", "encodingFormat": "text/csv"}], "identifier": ["geonlp:ksj-station-N02"], "isBasedOn": {"@type": "CreativeWork", "name": "国土数値情報 鉄道データ", "url": "https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N02-v2_2.html"}, "keywords": ["GeoNLP", "地名辞書"], "license": "https://creativecommons.org/licenses/by/4.0/", "name": "国土数値情報 鉄道データ(駅)", "size": "10191", "spatialCoverage": {"@type": "Place", "geo": {"@type": "GeoShape", "box": "26.193265 127.652285 45.41616333333333 145.59723"}}, "temporalCoverage": "../..", "url": "https://www.info-proto.com/static/ksj-station-N02.html"}
getWordInfo(geolod_id)

指定した geolod_id を持つ語の情報を返します。 id が辞書に存在しない場合は None を返します。

パラメータ

geolod_id (str or Iterable) -- 語の ID または ID のリストを返すイテレータ。

戻り値

geolod_id をキー、語の情報を値に持つ dict。

戻り値の型

dict

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.getWordInfo('Bn4q6d')
{'body': '国会議事堂前', 'dictionary_id': 3, 'entry_id': 'LrGGxY', 'geolod_id': 'Bn4q6d', 'hypernym': ['東京地下鉄', '4号線丸ノ内線'], 'institution_type': '民営鉄道', 'latitude': '35.674845', 'longitude': '139.74534166666666', 'ne_class': '鉄道施設/鉄道駅', 'railway_class': '普通鉄道', 'suffix': ['駅', ''], 'dictionary_identifier': 'geonlp:ksj-station-N02'}
ma_parse(sentence)

センテンスを形態素解析した結果を MeCab 互換の文字列として返します。

パラメータ

sentence (str) -- 解析する文字列。

戻り値

解析結果の改行区切りテキスト。

戻り値の型

str

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> print(service.ma_parse('今日は国会議事堂前まで歩きました。'))

今日    名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
国会議事堂前    名詞,固有名詞,地名語,Bn4q6d:国会議事堂前駅/cE8W4w:国会議事堂前駅,*,*,国会議事堂前,,
まで    助詞,副助詞,*,*,*,*,まで,マデ,マデ
歩き    動詞,自立,*,*,五段・カ行イ音便,連用形,歩く,アルキ,アルキ
まし    助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。      記号,句点,*,*,*,*,。,。,。
EOS
ma_parseNode(sentence)

センテンスを形態素解析した結果を MeCab 互換のノード配列として返します。

パラメータ

sentence (str) -- 解析する文字列。

戻り値

解析結果のリスト。

戻り値の型

list

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.ma_parseNode('今日は国会議事堂前まで歩きました。')
[{'conjugated_form': '*', 'conjugation_type': '*', 'original_form': '*', 'pos': 'BOS/EOS', 'prononciation': '*', 'subclass1': '*', 'subclass2': '*', 'subclass3': '*', 'surface': '', 'yomi': '*'}, {'conjugated_form': '*', 'conjugation_type': '*', 'original_form': '今日', 'pos': '名詞', 'prononciation': 'キョー', 'subclass1': '副詞可能', 'subclass2': '*', 'subclass3': '*', 'surface': '今日', 'yomi': 'キョウ'}, {'conjugated_form': '*', 'conjugation_type': '*', 'original_form': 'は', 'pos': '助詞', 'prononciation': 'ワ', 'subclass1': '係助詞', 'subclass2': '*', 'subclass3': '*', 'surface': 'は', 'yomi': 'ハ'}, {'conjugated_form': '*', 'conjugation_type': '*', 'original_form': '国会議事堂前', 'pos': '名詞', 'prononciation': '', 'subclass1': '固有名詞', 'subclass2': '地名語', 'subclass3': 'Bn4q6d:国会議事堂前駅/cE8W4w:国会議事堂前駅', 'surface': '国会議事堂前', 'yomi': ''}, {'conjugated_form': '*', 'conjugation_type': '*', 'original_form': 'まで', 'pos': '助詞', 'prononciation': 'マデ', 'subclass1': '副助詞', 'subclass2': '*', 'subclass3': '*', 'surface': 'まで', 'yomi': 'マデ'}, {'conjugated_form': '五段・カ行イ音便', 'conjugation_type': '連用形', 'original_form': '歩く', 'pos': '動詞', 'prononciation': 'アルキ', 'subclass1': '自立', 'subclass2': '*', 'subclass3': '*', 'surface': '歩き', 'yomi': 'アルキ'}, {'conjugated_form': '特殊・マス', 'conjugation_type': '連用形', 'original_form': 'ます', 'pos': '助動詞', 'prononciation': 'マシ', 'subclass1': '*', 'subclass2': '*', 'subclass3': '*', 'surface': 'まし', 'yomi': 'マシ'}, {'conjugated_form': '特殊・タ', 'conjugation_type': '基本形', 'original_form': 'た', 'pos': '助動詞', 'prononciation': 'タ', 'subclass1': '*', 'subclass2': '*', 'subclass3': '*', 'surface': 'た', 'yomi': 'タ'}, {'conjugated_form': '*', 'conjugation_type': '*', 'original_form': '。', 'pos': '記号', 'prononciation': '。', 'subclass1': '句点', 'subclass2': '*', 'subclass3': '*', 'surface': '。', 'yomi': '。'}, {'conjugated_form': '*', 'conjugation_type': '*', 'original_form': '*', 'pos': 'BOS/EOS', 'prononciation': '*', 'subclass1': '*', 'subclass2': '*', 'subclass3': '*', 'surface': '', 'yomi': '*'}]
removeDictionary(identifier)

identifier で指定した辞書をデータベースから削除します。

パラメータ

identifier (str) -- 辞書の identifier ("geonlp:xxxxx")。

戻り値

常に True。

戻り値の型

bool

例外

RuntimeError -- 指定した辞書が登録されていない場合は RUntimeError が発生します。

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.removeDictionary('geonlp:geoshape-city')
True
>>> service.updateIndex()
True
saveDictionaryFromWeb(jsonfile, csvfile, url, params=None, **kwargs)

指定した URL にあるページに含まれる辞書メタデータ(JSON-LD)を取得し、 メタデータに記載されている URL から地名解析辞書(CSVファイル)を取得し、 指定されたファイルに保存します。

パラメータ
  • jsonfile (str) -- json-ld を保存するファイル名。

  • csvfile (str) -- CSV データを保存するファイル名。

  • url (str) -- 辞書メタデータを含むウェブページの URL。

  • params (dict, optional) -- requests.get に渡す params パラメータ。

  • **kwargs (dict, optional) -- requests.get に渡す kwargs パラメータ。

戻り値

常に True。ダウンロードに失敗した場合は例外が発生します。

戻り値の型

bool

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.saveDictionaryFromWeb('geoshape.json', 'geoshape.csv', 'https://geonlp.ex.nii.ac.jp/dictionary/geoshape-city/')
True
>>> import os
>>> os.remove('geoshape.json')
>>> os.remove('geoshape.csv')
searchWord(key)

指定した表記または読みを持つ語の情報を返します。 一致する語が辞書に存在しない場合は None を返します。

パラメータ

key (str) -- 語の表記または読み。

戻り値

geolod_id をキー、語の情報を値に持つ dict。

戻り値の型

dict

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.searchWord('国会議事堂前')
{'Bn4q6d': {'body': '国会議事堂前', 'dictionary_id': 3, 'entry_id': 'LrGGxY', 'geolod_id': 'Bn4q6d', 'hypernym': ['東京地下鉄', '4号線丸ノ内線'], 'institution_type': '民営鉄道', 'latitude': '35.674845', 'longitude': '139.74534166666666', 'ne_class': '鉄道施設/鉄道駅', 'railway_class': '普通鉄道', 'suffix': ['駅', ''], 'dictionary_identifier': 'geonlp:ksj-station-N02'}, 'cE8W4w': {'body': '国会議事堂前', 'dictionary_id': 3, 'entry_id': '4NFELa', 'geolod_id': 'cE8W4w', 'hypernym': ['東京地下鉄', '9号線千代田線'], 'institution_type': '民営鉄道', 'latitude': '35.673543333333335', 'longitude': '139.74305333333334', 'ne_class': '鉄道施設/鉄道駅', 'railway_class': '普通鉄道', 'suffix': ['駅', ''], 'dictionary_identifier': 'geonlp:ksj-station-N02'}}
setActiveClasses(patterns=None)

解析対象とする固有名クラスの正規表現リストを指定します。 いずれかの正規表現に一致する固有名クラスは解析対象となります。

'-' から始まる場合、その正規表現に一致する固有名クラスは対象外となります。

パラメータ

patterns (list, optional) -- 解析対象とする固有名クラス(str)のリスト。 省略した場合 ['.*'] (全固有名クラス)を対象とします。

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.getActiveClasses()
['.*']
>>> service.searchWord('東京都')
{'QknGsa': {...'dictionary_identifier': 'geonlp:geoshape-pref'}}
>>> service.setActiveClasses(['.*', '-都道府県'])
>>> service.searchWord('東京都')
{}
>>> service.setActiveClasses()
>>> service.getActiveClasses()
['.*']
setActiveDictionaries(idlist=None, pattern=None)

インストール済み辞書のうち、解析に利用する辞書を指定します。

パラメータ
  • idlist (list, optional) -- 利用する辞書の id または identifier のリスト。

  • pattern (str, optional) -- 利用する辞書の identifier の正規表現。

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.setActiveDictionaries(pattern=r'geonlp:geoshape')
>>> sorted([x.get_identifier() for x in service.getActiveDictionaries()])
['geonlp:geoshape-city', 'geonlp:geoshape-pref']

メモ

idlist と pattern のどちらかは指定する必要があります。

updateIndex()

辞書のインデックスを更新して検索可能にします。

サンプル

>>> from pygeonlp.api.service import Service
>>> service = Service()
>>> service.clearDatabase()
True
>>> service.addDictionaryFromWeb('https://geonlp.ex.nii.ac.jp/dictionary/geoshape-city/')
True
>>> service.updateIndex()
True
class pygeonlp.api.service.ServiceError

ベースクラス: RuntimeError

サービス実行時に例外が起こると、このクラスが発生します。