快速啟動| 文檔| 加入Slack

標籤偵探是用於文本註釋和構建文本分類器的開源無代碼系統。借助Label Sleuth,領域專家(例如,醫師,律師,心理學家)可以自己快速創建自定義NLP模型,而不受NLP專家的依賴。
創建現實世界的NLP模型通常需要兩個專業知識的組合 - 由域專家提供的目標領域的深入了解以及由NLP專家提供的機器學習知識。因此,領域專家取決於NLP專家。標籤偵探來消除這種依賴性。憑藉直觀的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
重新啟動您的控制台
使用以下命令創建新的Anaconda環境並安裝要求:
# 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.txt假設已經安裝了Python 3.8/3.9。
安裝PIP https://pip.pypa.io/en/stable/installation/
重新啟動您的控制台
安裝要求:
pip install -r requirements.txt啟動標籤偵探服務器:Run python -m label_sleuth.start_label_sleuth 。
默認情況下,所有項目文件都寫入<home_directory>/label-sleuth ,以更改目錄add --output_path <your_output_path> 。
您可以添加--load_sample_corpus wiki_animals_2000_pages將樣本語料庫加載到啟動時系統中。這是從數據示例存儲庫中獲取Wikipedia文檔的集合。
默認情況下,主機將是localhost ,僅在主機計算機上公開服務器。如果您希望將服務器公開到外部通信中,請添加--host <IP> ,例如--host 0.0.0.0來收聽所有IP。
默認端口為8000,將端口add --port <port_number>更改為命令。
然後可以通過瀏覽到http:// localhost:8000(或http:// localhost:<port_number>)來訪問系統。
存儲庫由用Python編寫的後端庫和使用React的前端組成。可以在label_sleuth/build下找到彙編的前端版本。
有關簡單的教程,請參見我們的網站,該教程說明瞭如何使用Wikipedia頁面示例數據集使用系統。在啟動教程之前,請確保您通過運行:
python -m label_sleuth.start_label_sleuth --load_sample_corpus wiki_animals_2000_pages 。
系統的可配置參數在JSON文件中指定。默認配置文件是label_sleuth/config.json。
可以通過將--config_path參數傳遞到“ start_label_sleuth”命令“ eg, python -m label_sleuth.start_label_sleuth --config_path <path_to_my_configuration_json>
另外,可以通過將其添加到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 | 培訓儀式策略要使用的策略。培訓儀式策略確定在培訓時間將哪些示例發送到分類模型 - 這些示例不一定與用戶標記的一組元素相同。有關當前支持的實現,請參見get_training_set_selector()。 另請參閱:培訓集選擇文檔。 |
model_policy | 從模型中使用的策略。 ModelPolicy確定將使用哪種類型的分類模型,以及(例如,僅在特定數量的迭代 /等之後 /等)。 另請參閱:模型選擇文檔。 |
active_learning_strategy | 從ActiveLearningCatalog使用的策略。 ActiveLearner模塊實現了建議用戶標記的下一個元素的策略,旨在提高註釋過程的效率。有關當前支持的實現,請參見ActiveLearningCatalog。 另請參閱:主動學習文檔。 |
precision_evaluation_size | 樣本尺寸用於估計當前模型的精度。將在系統的未來版本中使用,該版本將提供內置的評估功能。 |
apply_labels_to_duplicate_texts | 指定如何用相同的文本處理元素。如果為true ,將標籤分配給元素還將將相同的標籤分配給共享完全相同文本的其他元素;如果為false ,則將標籤僅分配給用戶標記的特定元素。 |
language | 指定所選系統範圍的語言。這決定了一些特定於語言的資源,這些資源將由模型和輔助功能(例如,停止單詞)使用。可以用語言找到支持的語言列表。我們歡迎其他語言的貢獻。 |
login_required | 指定使用該系統是否需要用戶身份驗證。如果為true ,則配置文件還必須包括users參數。 |
users | 僅當login_required為true時才相關。以以下格式指定預定義的登錄信息:“用戶”:[*用戶名列表是靜態的,目前所有用戶都可以訪問系統中的所有工作區。 |
標籤偵探是一個模塊化系統。我們歡迎對各種模塊的其他實施方式的貢獻,旨在支持更廣泛的用戶需求,並利用高效且創新的機器學習算法。
以下是實施新模型和主動學習策略的說明:
這些是整合新分類模型的步驟:
ModelAPI通過添加ModelAPI的新實現來集成機器學習模型。
主要功能是_train() , load_model()和celes() :
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()的返回值,即一個包含所有執行推理所需組件的對象返回一個預測對象列表 - tooke_to_infer中的每個項目一個 - 其中prediction.label是一個布爾值和預測。 SCORE是[0-1]範圍內的浮點。可以通過從基本預測類繼承並覆蓋get_predictions_class()方法來傳遞其他輸出。
將新實現的模型添加到ModelsCatalog
添加一個或多個使用新模型的ModelPolicies
這些是整合一種新的活躍學習方法的步驟:
ActiveLearner通過添加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 Eyal Shnarch,Alon Halfon,Ariel Gera,Marina Danilevsky,Yannis Katsis,Leshem Choshen,Martin Santillan Cooper,Dina Epelboim,Zheng Zhang,Dakuo Wang,Lucy Yip,Lucy Yip,Lucy Yip,Liat Ein-Dor,Lena Dankin,Lena Dankin,lilya shnayderman liblyman liberman liberman liberna yun yun yun yun yun yun yun yun yun yun, Levin Slesarev,Gwilym Newton,Shila Ofek-Koifman,Noam Slonim和Yoav Katz(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}
}