pygeonlp.api.temporal_filter module

class pygeonlp.api.temporal_filter.TemporalFilter(date_from, date_to=None, **kwargs)

ベースクラス: Filter

時間フィルタの基底クラス。

時間フィルタは、形態素に対応する地名語ノード候補のうち、 条件に一致するものを残し、一致しないものを削除します。 全ての候補が条件に一致しない場合、品詞情報として固有名詞を持つ 一般ノードを一つ作成して置き換えます。

時間フィルタでは、地名語ノードの prop.valid_from および prop.valid_to を そのノードが存在する期間とします。

  • valid_from が設定されていない場合

    無限の過去から存在していたとみなします。

  • valid_to が設定されていない場合

    無限の未来まで存在しているとみなします。

duration

期間の開始日と終了日のタプル。

Type:

(datetime.date, datetime.date)

__init__(date_from, date_to=None, **kwargs)
パラメータ:
  • date_from (str, datetime.date, datetime.datetime) -- 期間の開始日時。

  • date_to (str, datetime.date, datetime.datetime, optional) -- 期間の終了日時。

注釈

date_to を省略した場合、 date_from が表す一時点が期間になります。 たとえば TimeExistsFilter('2001-01-01') は、 2001年1月1日時点に 存在していた地名語ノードを残すフィルタになります。

classmethod duration_from_candidate(candidate)

候補ノードの valid_from, valid_to から有効期間を表す tuple を取得する。 valid_from, valid_to が含まれていない場合は None を返す。

classmethod get_date_from_isostr(datestr)

ISO フォーマット、または類似したフォーマットから date に相当する部分を取得します。

パラメータ:

datestr (str) -- 日付または日時文字列。

戻り値:

日付部分を表す date オブジェクト。

戻り値の型:

datetime.date

classmethod get_duration_from_dates(datestr0, datestr1)

2つの日付文字列から期間を表す tuple を取得します。

パラメータ:
  • datestr0 (str, datetime.date, datetime.datetime) -- 期間の開始日時を指定します。

  • datestr1 (str, datetime.date, datetime.datetime) -- 期間の終了日時を指定します。

戻り値:

期間の開始日時と終了日時を表す datetime.date オブジェクトの tuple を返します。

戻り値の型:

tuple

class pygeonlp.api.temporal_filter.TimeExistsFilter(date_from, date_to=None, **kwargs)

ベースクラス: TemporalFilter

指定した時間範囲に存在していれば合格とするフィルタを作成します。

サンプル

>>> import pygeonlp.api as api
>>> from pygeonlp.api.temporal_filter import TimeExistsFilter
>>> api.init()
>>> tefilter = TimeExistsFilter('2000-01-01', '2001-01-01')
>>> lattice = api.analyze('田無市と保谷市は2001年1月21日に合併して西東京市になりました。')
>>> for nodes in lattice:
...     [x.simple() for x in nodes]
...
["田無市(GEOWORD:['東京都'])"]
['と(NORMAL)']
["保谷市(GEOWORD:['東京都'])"]
['は(NORMAL)']
['2001(NORMAL)']
['年(NORMAL)']
['1(NORMAL)']
['月(NORMAL)']
['21(NORMAL)']
['日(NORMAL)']
['に(NORMAL)']
['合併(NORMAL)']
['し(NORMAL)']
['て(NORMAL)']
["西東京市(GEOWORD:['東京都'])"]
['に(NORMAL)']
['なり(NORMAL)']
['まし(NORMAL)']
['た(NORMAL)']
['。(NORMAL)']
>>> lattice_filtered = tefilter(lattice)
>>> # フィルタを適用すると「西東京市」が範囲外なので地名語候補から除外されます
>>> for nodes in lattice_filtered:
...     [x.simple() for x in nodes]
...
["田無市(GEOWORD:['東京都'])"]
['と(NORMAL)']
["保谷市(GEOWORD:['東京都'])"]
['は(NORMAL)']
['2001(NORMAL)']
['年(NORMAL)']
['1(NORMAL)']
['月(NORMAL)']
['21(NORMAL)']
['日(NORMAL)']
['に(NORMAL)']
['合併(NORMAL)']
['し(NORMAL)']
['て(NORMAL)']
['西東京市(NORMAL)']
['に(NORMAL)']
['なり(NORMAL)']
['まし(NORMAL)']
['た(NORMAL)']
['。(NORMAL)']

注釈

このフィルタは TimeOverlapsFilter と同じです。

filter_func(candidate)

時間範囲に存在していれば True を返します。

パラメータ:

candidate (pygeonlp.api.node.Node) -- 検査対象となるノードオブジェクト。

戻り値:

フィルタの条件を満たせば True, 満たさなければ False を返します。

戻り値の型:

bool

class pygeonlp.api.temporal_filter.TimeBeforeFilter(date_from, date_to=None, **kwargs)

ベースクラス: TemporalFilter

指定した時間範囲の開始時より前に存在していれば合格とするフィルタを返します。

サンプル

>>> import pygeonlp.api as api
>>> from pygeonlp.api.temporal_filter import TimeBeforeFilter
>>> api.init()
>>> tbfilter = TimeBeforeFilter('2000-01-01')
>>> lattice = api.analyze('田無市と保谷市は2001年1月21日に合併して西東京市になりました。')
>>> for nodes in lattice:
...     [x.simple() for x in nodes]
...
["田無市(GEOWORD:['東京都'])"]
['と(NORMAL)']
["保谷市(GEOWORD:['東京都'])"]
['は(NORMAL)']
['2001(NORMAL)']
['年(NORMAL)']
['1(NORMAL)']
['月(NORMAL)']
['21(NORMAL)']
['日(NORMAL)']
['に(NORMAL)']
['合併(NORMAL)']
['し(NORMAL)']
['て(NORMAL)']
["西東京市(GEOWORD:['東京都'])"]
['に(NORMAL)']
['なり(NORMAL)']
['まし(NORMAL)']
['た(NORMAL)']
['。(NORMAL)']
>>> lattice_filtered = tbfilter(lattice)
>>> # フィルタを適用すると「西東京市」が範囲外なので地名語候補から除外されます
>>> for nodes in lattice_filtered:
...     [x.simple() for x in nodes]
...
["田無市(GEOWORD:['東京都'])"]
['と(NORMAL)']
["保谷市(GEOWORD:['東京都'])"]
['は(NORMAL)']
['2001(NORMAL)']
['年(NORMAL)']
['1(NORMAL)']
['月(NORMAL)']
['21(NORMAL)']
['日(NORMAL)']
['に(NORMAL)']
['合併(NORMAL)']
['し(NORMAL)']
['て(NORMAL)']
['西東京市(NORMAL)']
['に(NORMAL)']
['なり(NORMAL)']
['まし(NORMAL)']
['た(NORMAL)']
['。(NORMAL)']
filter_func(candidate)

時間範囲の開始時より前に存在していれば True を返します。

パラメータ:

candidate (pygeonlp.api.node.Node) -- 検査対象となるノードオブジェクト。

戻り値:

フィルタの条件を満たせば True, 満たさなければ False を返します。

戻り値の型:

bool

class pygeonlp.api.temporal_filter.TimeAfterFilter(date_from, date_to=None, **kwargs)

ベースクラス: TemporalFilter

指定した時間範囲の終了時より後に存在していれば合格とするフィルタを作成します。

サンプル

>>> import pygeonlp.api as api
>>> from pygeonlp.api.temporal_filter import TimeAfterFilter
>>> api.init()
>>> tafilter = TimeAfterFilter('2001-01-22')
>>> lattice = api.analyze('田無市と保谷市は2001年1月21日に合併して西東京市になりました。')
>>> for nodes in lattice:
...     [x.simple() for x in nodes]
...
["田無市(GEOWORD:['東京都'])"]
['と(NORMAL)']
["保谷市(GEOWORD:['東京都'])"]
['は(NORMAL)']
['2001(NORMAL)']
['年(NORMAL)']
['1(NORMAL)']
['月(NORMAL)']
['21(NORMAL)']
['日(NORMAL)']
['に(NORMAL)']
['合併(NORMAL)']
['し(NORMAL)']
['て(NORMAL)']
["西東京市(GEOWORD:['東京都'])"]
['に(NORMAL)']
['なり(NORMAL)']
['まし(NORMAL)']
['た(NORMAL)']
['。(NORMAL)']
>>> lattice_filtered = tafilter(lattice)
>>> # フィルタを適用すると「田無市」「保谷市」が範囲外なので地名語候補から除外されます
>>> for nodes in lattice_filtered:
...     [x.simple() for x in nodes]
...
['田無市(NORMAL)']
['と(NORMAL)']
['保谷市(NORMAL)']
['は(NORMAL)']
['2001(NORMAL)']
['年(NORMAL)']
['1(NORMAL)']
['月(NORMAL)']
['21(NORMAL)']
['日(NORMAL)']
['に(NORMAL)']
['合併(NORMAL)']
['し(NORMAL)']
['て(NORMAL)']
["西東京市(GEOWORD:['東京都'])"]
['に(NORMAL)']
['なり(NORMAL)']
['まし(NORMAL)']
['た(NORMAL)']
['。(NORMAL)']
filter_func(candidate)

時間範囲の開始時より前に存在していれば True を返します。

パラメータ:

candidate (pygeonlp.api.node.Node) -- 検査対象となるノードオブジェクト。

戻り値:

フィルタの条件を満たせば True, 満たさなければ False を返します。

戻り値の型:

bool

class pygeonlp.api.temporal_filter.TimeOverlapsFilter(date_from, date_to=None, **kwargs)

ベースクラス: TemporalFilter

指定した時間範囲内に存在していれば合格とするフィルタを作成します。

サンプル

>>> import pygeonlp.api as api
>>> from pygeonlp.api.temporal_filter import TimeOverlapsFilter
>>> api.init()
>>> tofilter = TimeOverlapsFilter('2001-01-01', '2001-02-01')
>>> lattice = api.analyze('田無市と保谷市は2001年1月21日に合併して西東京市になりました。')
>>> for nodes in lattice:
...     [x.simple() for x in nodes]
...
["田無市(GEOWORD:['東京都'])"]
['と(NORMAL)']
["保谷市(GEOWORD:['東京都'])"]
['は(NORMAL)']
['2001(NORMAL)']
['年(NORMAL)']
['1(NORMAL)']
['月(NORMAL)']
['21(NORMAL)']
['日(NORMAL)']
['に(NORMAL)']
['合併(NORMAL)']
['し(NORMAL)']
['て(NORMAL)']
["西東京市(GEOWORD:['東京都'])"]
['に(NORMAL)']
['なり(NORMAL)']
['まし(NORMAL)']
['た(NORMAL)']
['。(NORMAL)']
>>> lattice_filtered = tofilter(lattice)
>>> # フィルタを適用しても、「田無市」「保谷市」は2001年1月1日より後まで存在し、
>>> # 「西東京市」は2001年2月1日より前から存在するので、いずれもそのまま残ります
>>> for nodes in lattice_filtered:
...     [x.simple() for x in nodes]
...
["田無市(GEOWORD:['東京都'])"]
['と(NORMAL)']
["保谷市(GEOWORD:['東京都'])"]
['は(NORMAL)']
['2001(NORMAL)']
['年(NORMAL)']
['1(NORMAL)']
['月(NORMAL)']
['21(NORMAL)']
['日(NORMAL)']
['に(NORMAL)']
['合併(NORMAL)']
['し(NORMAL)']
['て(NORMAL)']
["西東京市(GEOWORD:['東京都'])"]
['に(NORMAL)']
['なり(NORMAL)']
['まし(NORMAL)']
['た(NORMAL)']
['。(NORMAL)']

注釈

このフィルタは TimeExistsFilter と同じです。

filter_func(candidate)

時間範囲の開始時より後、または終了時より前に存在していれば True を返します。

パラメータ:

candidate (pygeonlp.api.node.Node) -- 検査対象となるノードオブジェクト。

戻り値:

フィルタの条件を満たせば True, 満たさなければ False を返します。

戻り値の型:

bool

class pygeonlp.api.temporal_filter.TimeCoversFilter(date_from, date_to=None, **kwargs)

ベースクラス: TemporalFilter

指定した時間範囲の開始時から終了時まで存在していれば合格とするフィルタを作成します。

サンプル

>>> import pygeonlp.api as api
>>> from pygeonlp.api.temporal_filter import TimeCoversFilter
>>> api.init()
>>> tcfilter = TimeCoversFilter('2001-01-01', '2001-02-01')
>>> lattice = api.analyze('田無市と保谷市は2001年1月21日に合併して西東京市になりました。')
>>> for nodes in lattice:
...     [x.simple() for x in nodes]
...
["田無市(GEOWORD:['東京都'])"]
['と(NORMAL)']
["保谷市(GEOWORD:['東京都'])"]
['は(NORMAL)']
['2001(NORMAL)']
['年(NORMAL)']
['1(NORMAL)']
['月(NORMAL)']
['21(NORMAL)']
['日(NORMAL)']
['に(NORMAL)']
['合併(NORMAL)']
['し(NORMAL)']
['て(NORMAL)']
["西東京市(GEOWORD:['東京都'])"]
['に(NORMAL)']
['なり(NORMAL)']
['まし(NORMAL)']
['た(NORMAL)']
['。(NORMAL)']
>>> lattice_filtered = tcfilter(lattice)
>>> # フィルタを適用すると、「田無市」「保谷市」は2001年2月1日より前に消滅し、
>>> # 「西東京市」は2001年1月1日より前から存在するので、地名語候補から除外されます。
>>> for nodes in lattice_filtered:
...     [x.simple() for x in nodes]
...
['田無市(NORMAL)']
['と(NORMAL)']
['保谷市(NORMAL)']
['は(NORMAL)']
['2001(NORMAL)']
['年(NORMAL)']
['1(NORMAL)']
['月(NORMAL)']
['21(NORMAL)']
['日(NORMAL)']
['に(NORMAL)']
['合併(NORMAL)']
['し(NORMAL)']
['て(NORMAL)']
['西東京市(NORMAL)']
['に(NORMAL)']
['なり(NORMAL)']
['まし(NORMAL)']
['た(NORMAL)']
['。(NORMAL)']
filter_func(candidate)

時間範囲の開始時より前、かつ、終了時より後に存在していれば True を返します。

パラメータ:

candidate (pygeonlp.api.node.Node) -- 検査対象となるノードオブジェクト。

戻り値:

フィルタの条件を満たせば True, 満たさなければ False を返します。

戻り値の型:

bool