2つの部分に分かれて、最初の部分は一般的な紹介であり、2番目の部分はコードの私自身の理解です
目次
(1)データ前処理:手動ラベルデータをバイオラベル形式データに変換します
シーケンスマーキングタスクコード全体のプロセス
- 主にエンティティ抽出プロジェクトに使用されますが、BiLSTM + CRFに基づく他のシーケンスラベリングプロジェクトにも使用されます
実装プロセス
(1)データ前処理:手動ラベルデータをバイオラベル形式データに変換します
(2)モデル構築
(3)モデルトレーニングとパラメータ調整
- batch_sizeはバッチサイズを設定するために使用され、ローカルコンピューターは通常32に設定されます
- hidden_dimは、非表示レイヤーの寸法を設定するために使用されます
- lrは、学習率を設定するために使用されます。通常、トレーニングの精度を向上させるのが難しい場合は0.001を選択し始め、最適なモデルをロードし、学習率を前者の1/10に調整して、再度トレーニングします。
- cudnnlstmは、トレーニングにcudnnlstmを使用するかどうかを選択するために使用されます
- ドロップアウトパラメーターは、モデルの一般化能力を強化するために使用されます。通常は0.5に設定されます。モデルがトレーニングされ、ckptからpbに変換される場合、ドロップアウトを削除する必要があります。
(4)モデルをckpt形式で保存します
(5)モデルの展開
Java言語を使用してデプロイメントコードを記述します
上記はgitlabの上の紹介を参照しています
シーケンスアノテーションタスクコードブロックの解釈(例として列車の実装を取り上げます)
コードの正面玄関はmain.pyにあります
ハイパーパラメータに従って実行するプログラムモードを選択します。モードはtest_ckpt、test_pbで、trainハイパーパラメータのデフォルトはtrainです。
データの前処理
dataPreprocess.pyコードは主に3つのことを行います
1.バイオを回す
resultIdに従ってmongoデータベースのコンテンツをエクスポートします
データをシーケンスラベル形式に変換すると、保存されるデータ形式は次のようになります。
タグID、タグ結果ID、タグ収集テーブル
2、タグを取得
トレーニングデータによると、oldtagタグ付きのデータに変換されます
3.コンテンツを個別に保存する
cutFileは、numのサイズに応じて、f1、f2、およびf3の3つの部分に分割されます。
モデル構築
main.pyのApplyクラスで列車を確認してください
モデルトレーニングの主な機能
基本的にすべての単語を含むファイルをインポートし、バックアップ用にchar-idおよびid-charの形式にします
次に、load_data関数は
train_data、dev_data、tag2id、id2tag
train_data、dev_dataはトレーニングし、テストセットは単語インデックス-単語文字インデックス-マークインデックスを返します
tag2id、id2tagは(E-proj_name:9)などのタグをシリアル化します
次に、BatchManager関数、戻り値
切り上げて合計ノット数を取得します
-----------ここから、いよいよ事前研修は終わったと思います
次に、テンソルフローセッションを開きます。
モデルを作成し、パラメータを再利用します
モデルモジュールのすべてのビルドレイヤーを確認できます
self.add_placeholders()プレースホルダーを追加 self.lookup_layer_op()機能「単語」を 追加self.bilstm_op()双方向lstmを追加 self.loss_layer_op()損失レイヤーcrfを使用 self.optimizer_op()を定義オプティマ イザーを定義self.add_summary()概要を追加
次に、モデルをバッチ実行します
次に、実行とリターンを評価します
f1値
次にモデルを保存しました
コンプリート