GUI用于为命名实体识别目的手动注释文本

ner-annotator的Python项目详细描述


命名实体识别注释器

这个存储库包含一个NER实用程序,可以对给定的一些实体进行文本注释。在

Dark GUILight GUI
dark-guilight-gui

安装

要安装这个GUI,您需要确保您的系统上有Python 3。 {然后运行到项目中,^然后运行到cd2:

pip install .

这将安装ner_annotator包及其所需的依赖项(主要是PyQt5)。在

使用

要运行此实用程序,请执行以下命令:

^{pr2}$

这里,<input>是输入文本文件的路径,应该包含训练文本行,用换行符分隔;<output>是保存.json输出文件的路径(如果没有给出,则默认为与输入文件相同的目录);<entities>是要注释的实体列表。在

例如,我可以这样运行程序:

ner_annotator '~/Desktop/train.txt' -e 'BirthDate''Name'

您还可以选择将现有的NER模型传递给注释器,以便识别使用该模型的实体(GUI中上一行和下一行控件之间的按钮),并最终修改/添加/删除它们。例如:

ner_annotator '~/Desktop/train.txt' -e 'BirthDate''Name' -m '~/Desktop/NER'

目前,只支持SpaCy模型,但是您可以通过检查ner_annotator包中的model.py文件来为项目做出贡献并添加与其他NER模型的兼容性。在

这个包最棒的地方在于它能够自动地为给定的模型识别正确的库(也就是说,您不必指定您的模型应该使用SpaCy或任何其他NLP库来加载)。在

配置文件

为了获得更快的注释体验,您可以保存模型实体名称,以便下次需要此工具时重用它们。
为此,您需要创建一个.json文件(请参见assets/json/config.json),其模式如下:

{"models":[{"name":"example-1","entities":["entity-1-1","entity-1-2","entity-1-3"]},{"name":"example-2","entities":["entity-2-1","entity-2-2"]}]}

例如,要使用模型example-1的实体,可以运行:

python3 annotator.py '~/Desktop/train.txt' -c '~/Desktop/config.json' -n 'example-1'

这里,~/Desktop/config.json是上述.json文件的路径。
此bash命令在本例中是等效的:

python3 annotator.py '~/Desktop/train.txt' -e 'entity-1-1''entity-1-2''entity-1-3'

输出

实用程序软件将使用以下模式输出.json文件:

[{"content":"text","entities":[[0,1,"entity"]]}]

通过将-p选项传递给ner_annotator工具,可以将此输出转换为NER模型所需的特定格式。这样,在输出文件夹中,您还将找到一个pickle文件(与给定的.json输出文件同名,但没有扩展名),然后可以使用该文件在另一个程序中使用所请求的NLP库加载实体。要加载保存的pickle文件,可以按照以下行执行操作:

importpicklepickle.load(open("~/Desktop/output",'rb'))

在这个例子中,ner_annotator要么用-o ~/Desktop/output.json调用,要么不使用-o选项而用-i ~/Desktop/train.txt或类似的方式调用。在

目前,只提供SpaCy模型转换。在

分配

此软件包在PyPy上可用,因此您也可以通过运行以下命令来安装它:

pip install ner-annotator

您还可以安装额外的软件包,如SpaCy

pip install ner-annotator[spacy]

Personal note:要将包的新版本上载到PyPy,只需执行scripts/deploy.sh,插入{}作为Twine用户名,并将保存的API令牌作为Twine密码。在

多亏了

  • 图形用户界面图标由Icons8提供

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从Dropwizard中的Minio检索文件时,GET请求中的超时是如何处理的?   带Hibernate的java Jackson用于序列化以避免枚举   Raspberry Pi上的java Jave分段错误   java在屏幕旋转时不保存当前片段和数据   java War文件未在Heroku上正确部署   如何使用Java处理Selenium webdriver中的促销广告或cookie   java处理“用法:PApplet[options]<classname>[sketch args]”   java文本文件错误扫描程序   运行第一个JavaFX模块化程序时出现java异常   java将fileoutputstream转换为字符串   如何调试gstreamerjava?   java Spring RestTemplate ResponseBody类是什么样的   如何将JSON数组转换为Java列表。我在用斯文森   javascript在显示div按钮后进入新页面