pygeonlp.api.filter module

class pygeonlp.api.filter.Filter(**kwargs)

ベースクラス: object

ラティス表現を入力として、条件に一致しないノードを除外した結果を ラティス表現として出力するフィルタ機能の基底クラス。

このクラスは全てのフィルタに共通の機能を提供するものなので、 派生クラスを利用してください。

__init__(**kwargs)

フィルタを初期化します。 初期化の内容は派生するクラスごとに拡張する必要があります。

when_all_failed

全ての候補が条件を満たさなかった場合の挙動を指定します。

"return_all"

全ての候補をそのまま残します。

"convert_to_normal"

'名詞・固有名詞・地域・一般' ノードを1つ作成して返します。

Type

str

apply(input, **kwargs)

入力データの各候補ノードに対して filter_func() を適用し、 合格したノードだけを残した結果を返します。

この実装では、各候補ノードに含まれる情報のみを利用してフィルタ処理を行なうため、 前後の形態素を見て判定する必要があるフィルタクラスでは、このメソッドを 上書きする必要があります。

パラメータ

input (list) -- 入力となるラティス表現。

戻り値

filter_func() を適用して要素を削除されたラティス表現。

戻り値の型

list

filter_func()

候補ノードが条件に一致するかどうかを判定します。 派生クラスでそれぞれ実装する必要があります。

パラメータ

candidate (Node) -- 判定する形態素ノード。

戻り値

基底クラスでは常に True を返します。

戻り値の型

bool

class pygeonlp.api.filter.EntityClassFilter(ne_class, **kwargs)

ベースクラス: pygeonlp.api.filter.Filter

形態素ごとの候補ノード集合の中に、指定した固有名クラスと一致する地名語が 含まれていれば、それ以外の候補は削除するフィルタ。 テキストに含まれている地名語の固有名クラスが事前に分かっていて、 そのクラスに一致する地名語だけを抽出したい場合などに利用します。

候補ノード集合の中に一致する地名語が無い場合は候補リストをそのまま返します。

__init__(ne_class, **kwargs)
パラメータ

ne_class (str) -- このフィルタで選択したい固有名クラスを表す正規表現文字列。 例: r'国/?.*'

filter_func(candidate, **kwargs)
パラメータ

candidate (Node) -- 対象の形態素ノード

戻り値

ne_class に一致する場合は True, 一致しない場合は Falase

戻り値の型

bool

class pygeonlp.api.filter.GreedySearchFilter(scoring_class=None, scoring_options=None, **kwargs)

ベースクラス: pygeonlp.api.filter.Filter

前後の地名語との関係を見て最もスコアが高くなる地名語を 1 つだけ残し、 それ以外は削除するフィルタ。

ただし同点となる地名語が複数存在する場合は複数の候補を残します。

__init__(scoring_class=None, scoring_options=None, **kwargs)
パラメータ
  • scoring_class (class, optional) -- パスのスコアとノード間のスコアを計算する関数を持つ スコアリングクラス。 指定しない場合、pygeonlp.api.scoring モジュール内の ScoringClass が利用されます。

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

apply(input, **kwargs)

このフィルタは前後の形態素ノードを調べて地名語間の関係を計算するため、 apply() をオーバーライドします。

パラメータ

input (list) -- 入力となるラティス表現。

戻り値

フィルタを適用したラティス表現。

戻り値の型

list

class pygeonlp.api.filter.FilterError

ベースクラス: RuntimeError

フィルタ処理の際に例外が起こると、このクラスが発生します。