クイックスタート| ドキュメント| Slackに参加してください

Label Sleuthは、テキスト注釈とビルディングテキスト分類器のためのオープンソースのノーコードシステムです。 Label Sleuthを使用すると、ドメインの専門家(医師、弁護士、心理学者など)が、NLPの専門家に依存することなく、それ自体でカスタムNLPモデルを迅速に作成できます。
実際のNLPモデルを作成するには、通常、ドメインの専門家が提供するターゲットドメインの深い知識と、NLPの専門家が提供する機械学習知識の2つの専門知識の組み合わせが必要です。したがって、ドメインの専門家はNLPの専門家に依存しています。ラベルSleuthは、この依存関係を排除するようになります。直感的なUXを使用して、データのラベル付けと特定のニーズに合わせたNLPモデルの構築プロセスにドメインの専門家を護衛します。ドメインの専門家がシステム内の例にラベルを付けるにつれて、機械学習モデルはバックグラウンドで自動的にトレーニングされ、新しい例で予測を行い、次にラベルを付ける必要がある例についてユーザーに提案を提供しています。
ラベルSleuthはノーコードシステムであり、機械学習に関する知識は必要ありません。タスク定義から作業モデルまで、数時間でモデルを取得するのは速いです。
目次
エンドユーザー向けのインストール
開発環境のセットアップ
プロジェクト構造
システムを使用します
システムをカスタマイズします
参照
当社のウェブサイトの指示に従ってください。
システムにはPython 3.8または3.9が必要です(他のバージョンは現在サポートされておらず、問題を引き起こす可能性があります)。
リポジトリをクローンします:
git clone [email protected]:label-sleuth/label-sleuth.git
クローンディレクトリへのCD: cd label-sleuth
conda (推奨)またはpipを使用してプロジェクトの依存関係をインストールします。
Anaconda https://docs.anaconda.com/anaconda/install/index.htmlをインストールします
コンソールを再起動します
次のコマンドを使用して、新しいアナコンダ環境を作成し、要件をインストールします。
# Create and activate a virtual environment:
conda create --yes -n label-sleuth python=3.9
conda activate label-sleuth
# Install requirements
pip install -r requirements.txtPython 3.8/3.9がすでにインストールされていると仮定します。
PIP https://pip.pypa.io/en/stable/installation/をインストールする
コンソールを再起動します
要件をインストールする:
pip install -r requirements.txtラベルスルーサーバーを起動します: python -m label_sleuth.start_label_sleuthを実行します。
デフォルトでは、すべてのプロジェクトファイルは<home_directory>/label-sleuthに書き込まれ、ディレクトリadd --output_path <your_output_path>変更します。
--load_sample_corpus wiki_animals_2000_pagesを追加して、スタートアップのシステムにサンプルコーパスをロードできます。これにより、Data-ExamplesリポジトリからWikipediaドキュメントのコレクションが取得されます。
デフォルトでは、ホストはlocalhostになり、ホストマシンのみにサーバーを公開します。サーバーを外部通信に公開する場合は、(たとえば、 --host <IP> --host 0.0.0.0を追加して、すべてのIPを聴きます。
デフォルトのポートは8000です。ポート追加--port <port_number>コマンドに変更します。
その後、システムはhttp:// localhost:8000(またはhttp:// localhost:<port_number>にブラウジングすることでアクセスできます。
リポジトリは、Pythonで記述されたバックエンドライブラリと、Reactを使用するフロントエンドで構成されています。フロントエンドのコンパイルされたバージョンは、 label_sleuth/buildの下にあります。
Wikipediaページのサンプルデータセットでシステムを使用する方法を示す簡単なチュートリアルについては、当社のWebサイトを参照してください。チュートリアルを開始する前に、実行してサンプルデータセットを事前ロードしてください。
python -m label_sleuth.start_label_sleuth --load_sample_corpus wiki_animals_2000_pages 。
システムの構成可能なパラメーターは、JSONファイルで指定されています。デフォルトの構成ファイルは、label_sleuth/config.jsonです。
--config_pathパラメーターpython -m label_sleuth.start_label_sleuth --config_path <path_to_my_configuration_json> 「start_label_sleuth」コマンドに渡すことにより、カスタム構成を適用できます。
あるいは、スタートアップの特定の構成パラメーターを、runコマンドに追加することにより、 python -m label_sleuth.start_label_sleuth --changed_element_threshold 100オーバーライドすることができます。
構成可能なパラメーター:
| パラメーター | 説明 |
|---|---|
first_model_positive_threshold | 分類モデルのトレーニングをトリガーするために、カテゴリの正のラベルを割り当てる必要がある要素の数。 参照:トレーニングの呼び出し文書。 |
first_model_negative_threshold | 分類モデルのトレーニングをトリガーするために、カテゴリにネガティブラベルを割り当てる必要がある要素の数。 参照:トレーニングの呼び出し文書。 |
changed_element_threshold | 新しいモデルのトレーニングをトリガーするために必要な、カテゴリのユーザーラベルの変更の数(最後のトレーニングモデルと比較して)。変更とは、要素にラベル(正または負)を割り当てるか、既存のラベルを変更することができます。トレーニングをトリガーするには、 first_model_positive_thresholdも満たされている必要があることに注意してください。参照:トレーニングの呼び出し文書。 |
training_set_selection_strategy | TrainingSetsectionStrategyから使用する戦略。 TrainingingSetsectelectionStrategyは、トレーニング時に分類モデルに実際に送信される例を決定します - これらは必ずしもユーザーがラベル付けした要素のセットと同一ではありません。現在サポートされている実装については、get_training_set_selector()を参照してください。 参照:トレーニングセットの選択文書。 |
model_policy | ModelPoliciesから使用するポリシー。 ModelPolicyは、どのタイプの分類モデルが使用されるか、および(例えば、特定の数の反復 /などの後にのみ /常に /のみ)を決定します。 参照:モデル選択ドキュメント。 |
active_learning_strategy | ActiveRearningCatalogから使用する戦略。 ActiveLearnerモジュールは、注釈プロセスの効率を向上させることを目的とした、ユーザーがラベル付けする次の要素を推奨する戦略を実装しています。現在サポートされている実装については、ActiveLearningCatalogを参照してください。 参照:アクティブな学習ドキュメント。 |
precision_evaluation_size | 現在のモデルの精度を推定するために使用されるサンプルサイズ。将来のバージョンのシステムで使用され、組み込みの評価機能を提供します。 |
apply_labels_to_duplicate_texts | 同一のテキストで要素を扱う方法を指定します。 trueの場合、要素にラベルを割り当てると、まったく同じテキストを共有する他の要素に同じラベルを割り当てます。 falseの場合、ラベルはユーザーがラベル付けした特定の要素にのみ割り当てられます。 |
language | 選択したシステム全体の言語を指定します。これにより、モデルとヘルパー関数(たとえば、停止単語)で使用される言語固有のリソースが決定されます。サポートされている言語のリストは、言語で見つけることができます。追加の言語の貢献を歓迎します。 |
login_required | システムを使用するには、ユーザー認証が必要かどうかを指定します。 true場合、構成ファイルにはusersパラメーターも含める必要があります。 |
users | login_requiredがtrueある場合にのみ関連します。以下の形式で定義されたログイン情報を指定します。「ユーザー」:[*ユーザー名のリストは静的であり、現在すべてのユーザーがシステム内のすべてのワークスペースにアクセスできます。 |
ラベルSleuthはモジュラーシステムです。さまざまなモジュールの追加の実装の貢献を歓迎します。これは、より広範なユーザーニーズをサポートし、効率的で革新的な機械学習アルゴリズムを活用することを目指しています。
以下は、新しいモデルとアクティブ学習戦略を実装するための指示です。
これらは、新しい分類モデルを統合するための手順です。
ModelAPIを実装します機械学習モデルは、Modelapiの新しい実装を追加することにより統合されています。
主な関数は_train() 、 load_model() 、およびyems()です。
def _train ( self , model_id : str , train_data : Sequence [ Mapping ], model_params : Mapping ): def load_model ( self , model_path : str ):推論を実行するために必要なすべてのコンポーネントを含むオブジェクトを返します(たとえば、訓練されたモデル自体、モデルによって認識された言語、訓練されたベクター化器/トークネザーなど)。
def infer ( self , model_components , items_to_infer ) -> Sequence [ Prediction ]:load_model()の返品値、つまり、推論を実行するために必要なすべてのコンポーネントを含むオブジェクトです予測オブジェクトのリストを返します -項目の各アイテムに1つ - prediction.labelはブールと予測です。スコアは範囲のフロートです[0-1]。追加の出力は、ベース予測クラスから継承し、get_predictions_class()メソッドをオーバーライドすることで渡すことができます。
新しく実装されたModelapiをModelsCatalogに追加します
新しいモデルを使用してModelPoliciesに1つ以上のポリシーを追加する
これらは、新しいアクティブ学習アプローチを統合するための手順です。
ActiveLearnerを実装しますActive Learningモジュールは、ActiveLearner APIの新しい実装を追加することにより統合されます。実装する関数はget_per_element_scoreです。
def get_per_element_score ( self , candidate_text_elements : Sequence [ TextElement ],
candidate_text_element_predictions : Sequence [ Prediction ], workspace_id : str ,
dataset_name : str , category_name : str ) -> Sequence [ float ]: テキスト要素のシーケンスとこれらの要素のモデル予測が与えられた場合、この関数は各要素のアクティブな学習スコアを返します。スコアが最も高い要素は、ユーザーが次にラベルを付けるために推奨されます。
ActiveLearningCatalogに追加しますエイアル・シュナルチ、アロン・ハーフン、アリエル・ジェラ、マリーナ・ダニレブスキー、ヤニス・カティス、レシュム・チョシェン、マーティン・サンティラン・クーパー、ディナ・エペルボイム、Zheng Zhang、Dakuo Wang、Lucy Yip、Liat ein-dor、Lena Dankin、Ilya shnayman、nanitフィリップ・レビン・スレサレフ、グウィリム・ニュートン、シラ・オブク・コイフマン、ノーム・スロニム、ヨーヴ・カッツ(EMNLP 2022)。ラベルスルース:数時間以内に、ラベルのないテキストから分類器まで。
引用してください:
@inproceedings{shnarch2022labelsleuth,
title={{L}abel {S}leuth: From Unlabeled Text to a Classifier in a Few Hours},
author={Shnarch, Eyal and Halfon, Alon and Gera, Ariel and Danilevsky, Marina and Katsis, Yannis and Choshen, Leshem and Cooper, Martin Santillan and Epelboim, Dina and Zhang, Zheng and Wang, Dakuo and Yip, Lucy and Ein-Dor, Liat and Dankin, Lena and Shnayderman, Ilya and Aharonov, Ranit and Li, Yunyao and Liberman, Naftali and Slesarev, Philip Levin and Newton, Gwilym and Ofek-Koifman, Shila and Slonim, Noam and Katz, Yoav},
booktitle={Proceedings of the 2022 Conference on Empirical Methods in Natural Language Processing ({EMNLP}): System Demonstrations},
month={dec},
year={2022},
address={Abu Dhabi, UAE},
publisher={Association for Computational Linguistics},
url={https://aclanthology.org/2022.emnlp-demos.16},
pages={159--168}
}