Jupyter上NER任务的注解工具
项目描述
PyLighter:命名实体识别任务的注释工具
PyLighter是一个工具,允许数据科学家直接在Jupyter中对命名实体识别(NER)任务的数据集进行注释。
内容
安装
从Pypi: https://pypi.ac.cn/project/pylighter/
pip install pylighter
jupyter nbextension enable --py widgetsnbextension
从Github: https://github.com/PayLead/PyLighter
git clone git@github.com:PayLead/PyLighter.git
cd PyLighter
python setup.py install
jupyter nbextension enable --py widgetsnbextension
演示
演示文件夹包含PyLighter使用的示例。要查看它们,请打开Jupyter中的任何ipynb文件。
基本用法
PyLighter的使用案例是轻松在Jupyter中注释数据集。因此,让我们首先为这个示例定义一个数据集
corpus = [
"PyLighter is an annotation tool for NER tasks directly on Jupyter. "
+ "It aims on helping data scientists easily and quickly annotate datasets. "
+ "This tool was developed by Paylead.",
"PayLead is a fintech company specializing in transaction data analysis. "
+ "Paylead brings retail and banking together, so customers get rewarded when they buy. "
+ "Welcome to the data-for-value economy."
]
现在让我们开始注释!
from pylighter import Annotation
annotation = Annotation(corpus)
运行该单元格将给出以下输出
您现在可以使用预定义的标签 l1、l2 等注释实体。
当您的注释完成后,您可以通过点击保存按钮或检索当前笔记本中的结果。
- 保存按钮将结果保存在名为 annotation.csv 的csv文件中,其中包含两列:文档和标签。
- 您可以在
annotation.labels
中访问您的注释标签。
注意:给定的标签是IOB2格式。
高级用法
上面的示例运行良好,但PyLighter可以定制以最好地适应您的特定用例。
使用已注释的数据集
在大多数情况下,您想要使用已注释的数据集或简单地继续注释。
为此,您可以使用名为 labels
的参数,其中包含数据集的标签。此外,如果您在 th 个文档处停止,您可以使用 start_index=i
直接返回到停止的位置。
您可以在这里查看更多关于此的信息。
更改标签名称
PyLighter使用 l1、l2、...、l7 作为默认标签名称,但在大多数情况下,您希望拥有显式的标签,如 名词、动词 等。
您可以使用 labels_names
参数定义自己的标签名称。您还可以使用 labels_colors
参数定义自己的标签颜色,格式为HEX。
您可以在这里查看更多关于此的信息。
文档样式
您可以使用 char_params
参数调整字体大小、两个字符之间的最小距离和空格的大小。
char_params的默认值为
# Each field expects css value as a string (ex:"10px", "1em", "large", etc.)
char_params = {
"font_size": "medium",
"width_white_space": "1Opx",
"min_width_between_chars": "4px",
}
添加附加信息
在某些情况下,您可能想要了解有关当前文档的附加信息,例如其来源。
要实现这个功能,您可以使用参数 additional_infos
。这个参数必须是一个形状为 (语料库大小,附加信息数量) 的 pandas DataFrame。DataFrame 的第 i 行将与语料库的第 i 个元素相关联。
给定的 DataFrame 的元素需要有合适的字符串表示,以便正确显示。
例如,要将来源添加到语料库的每个元素中
import pandas as pd
# define corpus of size 2
additional_infos = pd.DataFrame({"source":["Github", "Paylead.fr"]})
annotation = Annotation(corpus, additional_infos=additional_infos)
结果将是
您可以在这个示例中了解更多。
添加附加输出
在某些情况下,您可能想将文档标记为难以标注,或标记为错误,或给出一个表示您对标注置信度的值等。简而言之,您需要返回附加信息。
要实现这个功能,您可以使用参数: additional_outputs_elements
。这个参数期望一个 pylighter.AdditionalOutputElement
列表。
pylighter.AdditionalOutputElement
定义如下
from pyligher import AdditionalOutputElement
AdditionalOutputElement(
name="name_of_my_element",
display_type="type_of_display" # checkbox, int_text, float_text, text, text_area
description="Description of the element to display",
default_value="Default value for the element"
)
以下是一个示例
注意:附加输出将被添加到保存文件中。但您也可以使用 annotation.additional_outputs_values
来检索它们。您还可以使用之前返回的附加输出值,参数为: additional_outputs_values
(与标签相同)。
您可以在这个示例中了解更多。
使用键盘快捷键
标注任务相当无聊。因此,您可能希望使用键盘快捷键轻松更改文档或选择其他标签。
默认情况下,只有少数快捷键被定义
- 下一个: Alt + n
- 上一个: Alt + p
- 跳过: Alt + s
- 保存: Shift + Alt + s
但是,您可以使用参数: standard_shortcuts
和 labels_shorcuts
完全自定义它们。其中 standard_shortcuts
参数用于重新定义标准按钮的快捷键,如下一个按钮的快捷键,而
快捷键定义如下
from pylighter import Shortcut
Shortcut(
name="skip", # Name of the button to bind on (ex: "next", "skip") or name of the label (ex: "l1", "l2", or one you defined)
key="Ò", # Usually represents the character that is displayed.
code="KeyS", # Usually represents the key that is pressed.
shift_key=False, # Wether the shift key is pressed
alt_key=True,
ctrl_key=False
)
知道 key
和 code
的值非常困难。这取决于许多不同的因素,例如您的键盘、浏览器等。
因此,您可以使用 ShortcutHelper
来选择正确的快捷键。以下是一个示例。
from pylighter import ShortcutHelper
ShortcutHelper()
您可以在这个示例中了解更多。
贡献
测试
PyLighter 使用 pytest。因此,测试可以使用以下命令运行
make test
PyLighter 使用 flake8、isort 和 check-manifest 来控制代码质量。您可以使用以下命令测试代码质量
make test-quality
如果您想测试包括打包在内的一切,您可以运行
make test-all
许可证
MIT 许可证
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解有关安装包的更多信息。