geonlp-platform / pygeonlp

pygeonlp, A python module for geotagging Japanese texts.
https://geonlp.ex.nii.ac.jp/
BSD 2-Clause "Simplified" License
19 stars 1 forks source link

利用可能な辞書が一つも無い場合に例外が発生する #6

Closed t-sagara closed 3 years ago

t-sagara commented 3 years ago

setActiveDictionaries(), disactivateDictionaries() を利用して、 利用可能な辞書を全て除去した場合に RuntimeError 例外が発生する。

api.disactivateDictionaries(pattern=r'.*')
RuntimeError: 全ての辞書が除外されます。

しかし一度全ての辞書を disactivate してから特定の辞書だけを activate したい場合もあるため、 例外を出さずに地名語が検索できないだけの方が使いやすい。

t-sagara commented 3 years ago

全ての辞書を利用不可能な状態で解析処理を繰り返すと Fatal Python error: deallocating None 例外が発生する。 これは Py_None が静的なオブジェクトを指しているため。

libgeonlp/pygeonlp.cpp 内で Py_None を返す前に Py_INCREF(Py_None); を呼んで リファレンスカウンタを増やしておく必要がある。

参考: https://stackoverflow.com/questions/15287590/why-should-py-increfpy-none-be-required-before-returning-py-none-in-c