このリポジトリには、テキスト、画像、その他のデータ用のスクリプト可能な注釈ツールである Prodigy のレシピのコレクションが含まれています。このリポジトリを使用するには、Prodigy のライセンスが必要です。詳細については、このページを参照してください。質問やバグ報告については、Prodigy サポート フォーラムをご利用ください。間違いやバグを見つけた場合は、お気軽にプルリクエストを送信してください。
重要な注意:このリポジトリ内のレシピは、Prodigy に同梱されている組み込みレシピと 100% 同一ではありません。これらは、コメントや詳細情報を含めるように編集されており、何が起こっているかを理解しやすく、カスタム レシピのベースとして使用できるように、一部は簡略化されています。
Prodigy がインストールされると、ターミナルから直接またはpython -m
経由でprodigy
コマンドを実行できるようになります。
python -m prodigy
prodigy
コマンドは、組み込みレシピをリストします。カスタム レシピ スクリプトを使用するには、 -F
引数を使用してファイルへのパスを渡すだけです。
python -m prodigy ner.teach your_dataset en_core_web_sm ./data.jsonl --label PERSON -F prodigy-recipes/ner/ner_teach.py
--help
フラグを使用して、レシピで使用可能な引数の概要を確認することもできます (例: prodigy ner.teach -F ner_teach_.py --help
。
レシピ スクリプトのコードを編集して、Prodigy の動作をカスタマイズできます。
prefer_uncertain()
prefer_high_scores()
に置き換えてみてください。(score, example)
タプルを指定して、一連のexample
の辞書を生成するジェネレーターであることだけです。update()
コールバックをカスタマイズして、追加のログ記録や追加機能を含めてみてください。 レシピ | 説明 |
---|---|
ner.teach | ループ内のモデルを使用して、名前付きエンティティ認識モデルの可能な限り最良のトレーニング データを収集します。注釈に基づいて、Prodigy は次にどの質問をするかを決定します。 |
ner.match | 指定されたパターン ファイルに一致するフレーズを提案し、それらが興味のあるエンティティの例であるかどうかをマークします。パターン ファイルには、 spaCy のMatcher で使用するための正確な文字列またはトークン パターンを含めることができます。 |
ner.manual | トークンによってスパンを手動でマークします。必要なのはトークナイザーのみでエンティティ認識機能は必要なく、アクティブ ラーニングは行いません。オプションで、パターンに基づいてスパンを事前にハイライト表示します。 |
ner.fuzzy_manual | ner.manual と似ていますが、 spaczz ライブラリのFuzzyMatcher 使用して候補を事前に強調表示します。 |
ner.manual.bert | BERT ワードピース トークナイザーを使用して、トランス モデルに対する効率的な手動 NER アノテーションを実行します。 |
ner.correct | モデルの予測を手動で修正して、ゴールドスタンダード データを作成します。このレシピは以前はner.make_gold と呼ばれていました。 |
ner.silver-to-gold | バイナリの受け入れ/拒否アノテーションを持つ既存の「シルバー」データセットを取得し、アノテーションをマージして、アノテーションで定義された制約を考慮して可能な限り最適な分析を見つけ、それを手動で編集して完全で完全な「ゴールド」データセットを作成します。 |
ner.eval_ab | 2 つの NER モデルの予測を比較し、ストリームから評価セットを構築することで、2 つの NER モデルを評価します。 |
ner_fuzzy_manual | spaczz fuzzy マッチャーからの提案が事前に強調表示され、トークンによってスパンを手動でマークします。 |
レシピ | 説明 |
---|---|
textcat.manual | テキストに適用されるカテゴリに手動で注釈を付けます。単一および複数のラベルを使用した注釈タスクをサポートします。オプションで、複数のラベルに排他的としてフラグを付けることができます。 |
textcat.correct | textcat モデルの予測を手動で修正します。許容しきい値を超える予測は自動的に事前選択されます (デフォルトでは 0.5)。 Prodigy は、コンポーネント構成に基づいて、カテゴリが相互に排他的であるべきかどうかを推測します。 |
textcat.teach | ループ内のモデルを使用して、テキスト分類モデルの可能な限り最良のトレーニング データを収集します。注釈に基づいて、Prodigy は次にどの質問をするかを決定します。 |
textcat.custom-model | アクティブ ラーニングを活用したテキスト分類をカスタム モデルで使用します。どのように機能するかを示すために、このデモ レシピでは、ランダムなスコアを「予測」する単純なダミー モデルを使用します。ただし、PyTorch、TensorFlow、scikit-learn を使用したテキスト分類モデルの実装など、任意のモデルに置き換えることができます。 |
レシピ | 説明 |
---|---|
terms.teach | 単語ベクトルとシード用語を使用して用語リストをブートストラップします。 Prodigy は単語ベクトルに基づいて類似の用語を提案し、それに応じてターゲット ベクトルを更新します。 |
レシピ | 説明 |
---|---|
image.manual | 画像上に長方形の境界ボックスまたは多角形を描画して、画像に手動で注釈を付けます。 |
image-caption | 画像にキャプションの注釈を付け、PyTorch に実装された画像キャプション モデルを使用してキャプションを事前に入力し、エラー分析を実行します。 |
image.frozenmodel | Tensorflow のオブジェクト検出 API を使用したループ手動アノテーションのモデル化。 |
image.servingmodel | Tensorflow のオブジェクト検出 API を使用したループ手動アノテーションのモデル化。これは Tensorflow Serving を使用します |
image.trainmodel | Tensorflow のオブジェクト検出 API を使用したループ手動アノテーションとトレーニングのモデル化。 |
レシピ | 説明 |
---|---|
mark | ループ内のモデルを使用せずに、事前に準備された例をクリックして実行します。 |
choice | 複数の選択肢を使用してデータに注釈を付けます。注釈付きの例には、選択したオプションの ID にマッピングする追加のプロパティ"accept": [] が含まれます。 |
question_answering | カスタム HTML インターフェイスを使用して、質問と回答のペアに注釈を付けます。 |
レシピ | 著者 | 説明 |
---|---|---|
phrases.teach | @カビルカン | 現在はsense2vec の一部です。 |
phrases.to-patterns | @カビルカン | 現在はsense2vec の一部です。 |
records.link | @カビルカン | dedupe ライブラリを使用して、複数のデータセット間でレコードをリンクします。 |
これらのレシピはチュートリアルの 1 つに登場しました。
レシピ | 説明 |
---|---|
span-and-textcat | Spankat と Textcat の両方のアノテーションを同時に実行します。チャットボットに最適! |
terms.from-ner | 以前の NER アノテーションから用語を生成します。 |
audio-with-transcript | 手動の音声注釈と文字起こしの両方を処理します。 |
progress | 注釈の速度を追跡するupdate コールバックのデモ。 |
より簡単に開始できるように、生データと Prodigy で作成されたアノテーションを含むデータの両方のexample-datasets
もいくつか含まれています。 ner.teach
やner.match
などのレシピで使用するトークンベースの一致パターンの例については、 example-patterns
ディレクトリを参照してください。