6

SyntaxNetを理解し、学ぼうとしています。コーパスの名前実体認識に SyntaxNet を使用する方法があるかどうかを調べようとしています。サンプルコードまたは役立つリンクをいただければ幸いです。

4

3 に答える 3

4

Syntaxnet は Named Entity Recognition 機能を明示的に提供していませんが、Parsey McParseface は品詞のタグ付けを行い、出力を Co-NLL テーブルとして生成します。

固有名詞はすべて NNP としてタグ付けされます。私は、そのような単純な正規表現識別子を発見しました。<NNP>+つまり、1 つまたは複数の固有名詞を組み合わせると、ドキュメント内の名前付きエンティティがかなり得られます。もちろん、それは初歩的でルールに基づいていますが、それでも効果的です。

Co-NLL データを demo.sh スクリプト (「/opt/tensorflow/models/syntaxnet/syntaxnet」にあります) から出力ファイルにパイプするには、それを conll2ascii.py にパイプするコードのセクションをコメントアウトします。スクリプトは次のようになります。

PARSER_EVAL=bazel-bin/syntaxnet/parser_eval
MODEL_DIR=syntaxnet/models/parsey_mcparseface
[[ "$1" == "--conll" ]] && INPUT_FORMAT=stdin-conll || INPUT_FORMAT=stdin

$PARSER_EVAL \
  --input=$INPUT_FORMAT \
  --output=stdout-conll \
  --hidden_layer_sizes=64 \
  --arg_prefix=brain_tagger \
  --graph_builder=structured \
  --task_context=$MODEL_DIR/context.pbtxt \
  --model_path=$MODEL_DIR/tagger-params \
  --slim_model \
  --batch_size=1024 \
  --alsologtostderr \
   | \
  $PARSER_EVAL \
  --input=stdin-conll \
  --output=sample-param \
  --hidden_layer_sizes=512,512 \
  --arg_prefix=brain_parser \
  --graph_builder=structured \
  --task_context=$MODEL_DIR/context.pbtxt \
  --model_path=$MODEL_DIR/parser-params \
  --slim_model \
  --batch_size=1024 \
  --alsologtostderr

また、上記のファイルで出力パラメーターが sample-param に変更されていることにも注意してください。これを設定します。context.pbtxt ファイル (「/opt/tensorflow/models/syntaxnet/syntaxnet/models/parsey_mcparseface」にあります) に移動し、出力ファイルを指す入力パラメーターを作成します。次のようになります。

input {
  name: 'sample-param'
  record_format: 'conll-sentence'
  Part {
    file_pattern: "directory/prepoutput.txt"
  }
}

ファイルを保存して閉じ、"/opt/tensorflow/models/syntaxnet" に戻り、syntaxnet チュートリアルの説明に従って syntaxnet/demo.sh を実行します。完了したら、指定された出力フォルダーに移動すると、co-nll 形式のテーブルが作成されます。次に、各エントリを調べて pos タグを識別する単純な反復プログラムを実行できます。これに基づいて、エンティティ認識のために提案された形式のバリエーションを試すことができます。

これが役に立ったことを願っています!

于 2016-10-03T14:24:29.127 に答える