快速启动| 文档| 加入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}
}