pygeonlp.api.scoring module
scoring モジュールは、一通りのジオパージング処理を行なうために必要最小限の、 スコアリング処理の実装をまとめています。 十分な精度が得られない場合、用途に応じてチューニングを行なうか、 別の手法を実装して利用してください。
- class pygeonlp.api.scoring.ScoringClass(options=None)
ベースクラス:
object
- node_relation_score(node0, node1)
node クラスのインスタンス node0 と node1 との関係による スコアを計算するデフォルト実装です。 関係が強いノードほど高いスコアを返します。
サンプル
>>> import pygeonlp.api as api >>> from pygeonlp.api.scoring import ScoringClass >>> api.init() >>> s = ScoringClass() >>> s.node_relation_score(api.analyze('国会議事堂前')[0][0], ... api.analyze('永田町')[0][0]) 20
注釈
スコアは以下のように計算しています。
- どちらかのノードが地名語でも住所でもない(NORMAL)場合
0 点
- どちらのノードも地名語で、固有名クラスが一致する場合(同クラス)
+10 点
- どちらのノードがもう一方の hypernym にふくまれる場合(親子関係)
+5 点
- 両方のノードの hypernym が1つ以上一致する場合(兄弟関係)
+5 点
- ノード間の距離(単位は degree)を計算し、
0.2度以下の場合は +5 点、それ以上離れている場合は +1/距離を加算
- path_score(path)
パス表現の結果を一つ受け取り、スコアを計算して返すデフォルト実装です。
- パラメータ:
path (list of Node) -- 解析結果候補のパス表現。
- 戻り値:
与えられたパスを評価したスコアを返します。 値が大きいパスほど geoparse() の結果で上位候補として返されます。
- 戻り値の型:
int
注釈
次のように得点を計算しています。
地名語・住所を候補として全く含まない形態素が存在する場合
+形態素数 ×1点(地名語か非地名語か不明な形態素は非地名語を優先)
全ての候補の中に住所ノード候補が含まれている場合
+住所階層数('東京都/千代田区'なら2)×10点
全ての候補の中に含まれる地名語ノード候補に、 同じ固有名クラスが2回以上出現する場合
+出現回数 ×10点
ある形態素に地名語ノード候補が含まれる場合
nlookup 先までの形態素に含まれる地名語・住所ノード候補との 関係によるスコアを node_relation_score() で計算し加算