1
from sklearn_crfsuite import CRF, metrics

X_train,y_train
X_dev,  y_dev
X_test, y_test

# baseline run
baseline = CRF(algorithm='lbfgs', c1=0.1, c2=0.1, max_iterations=100, all_possible_transitions=True)
baseline.fit(X_train, y_train)
print('Overall Accuracy on Test Set:', baseline.score(X_test, y_test), '\n')
labels = list(baseline.classes_)
labels.remove('O')
sorted_labels = sorted(labels, key = lambda name:(name[1:], name[0]))
print(metrics.flat_classification_report(y_test, baseline.predict(X_test), labels=sorted_labels, digits=4))

各テキストがタプル (トークン、POS タグ、OBI ラベル) のリストで表されるデータセットを、サイズ比 0.6:0.2:0.2 でトレーニング セット、開発セット、およびテスト セットに分割し、Name Entity を実行しようとしました。を使用した条件付きランダム フィールド ( CRF )による認識 ( NER ) 。開発セットのハイパーパラメーターを最適化した後、テスト セットの加重平均 F1 スコアは、ハイパーパラメーターが盲目的に規定されているベースライン ランのスコアよりも低くなります。直感に反すると思います。sklearn_crfsuite

私はこの問題がかなりあいまいであることを知っています。しかし、どこを見るべきかについて何かアドバイスはありますか?これが通常の状況なのか、モデルがどこかでうまくいかないのか、どうすれば確認できますか? より大きな開発セットを使用する必要がありますか? 交差検証によってハイパーパラメータを最適化する方が適切ですか? それとも、機能を変更するために戻る必要がありますか?

ところで、さまざまなデータ ソースがこの問題を引き起こす可能性があることを認識しているので、特にチェックします。テキストの長さ、POS タグ、および OBI ラベルの分布はすべて、トレーニング セット、開発セット、およびテスト セットで十分に類似しているように見えます。

4

0 に答える 0