一、doccano安装
本部分不赘述,按照doccano官方文档自行安装。
二、编写模型API接口
任务以命名实体识别为例、模型以百度UIE为例。其中,任务及模型可根据个人需求自行配置。
- 利用UIE进行标注,首先我们需要一个UIE运行的环境,以及写接口的工具,在这里我用的是flask。
pip install paddlepaddle==2.3.1
pip install paddlenlp==2.3.4
pip install flask
- 在服务所在的设备上创建一个api.py,然后写识别的接口。
from flask import Flask, request, jsonify, render_template
from paddlenlp import Taskflow
app = Flask(__name__)
# 在这里定义你想要识别的实体类型
# UIE具有zero-shot能力,所以类型可以随便定义,但是识别的好坏不一定
schema = ['时间', '选手', '赛事名称']
# 第一次运行时,联网状态下会自动下载模型
ie = Taskflow('information_extraction', schema=schema)
def convert(result):
result = result[0]
formatted_result = []
for label, ents in result.items():
for ent in ents:
formatted_result.append(
{
"label": label,
"start_offset": ent['start'],
"end_offset": ent['end']
})
return formatted_result
@app.route('/', methods=['POST'])
def get_result():
# text = request.json['text']
text = request.form.get("text") or request.json.get("text") or request.values.get("text")
print(text)
result = ie(text)
formatted_result = convert(result)
return jsonify(formatted_result)
@app.route("/show/info")
def index():
# return "China"
# Flask内部会自动打开这个文件,并读取内容,将内容返回给用户
# 默认:去当前项目目录的templates文件夹中找
return render_template("index.html")
if __name__ == '__main__':
# 这里写端口的时候一定要注意不要与已有的端口冲突
# 这里的host并不是说访问的时候一定要写0.0.0.0,但是这里代码要写0.0.0.0,代表可以被本网络中所有的看到
# 如果是其他机器访问你创建的服务,访问的时候要写你的ip
app.run(host='0.0.0.0', port=5739)
- 运行程序,看到如下信息即表明接口编写成功。
三、添加自动标注功能
Select a tempalte:
安装如下图中所示,选择Custom REST Request后点击NEXT
Set parameters:
Params
URL:http://127.0.0.1:5739/ 该URL为请求的URL地址
method:POST 鉴于原始文本的长度不一,故采用POST请求,以免超出长度范围
Headers
Key:Content-Type
Value:application/json
Body
Key:text
Value:{{ text }} 注意:Value中的text跟前后的{}有一个空格
测试参数:
Sample Text:2月8日上午北京冬奥会自由式滑雪女子大跳台决赛中中国选手谷爱凌以188.25分获得金牌!
输入文本完成后点击Test按钮,Response栏目中的值不为 [ ] 即为测试成功。测试成功后,Test按钮会变成Next按钮,然后点击Next按钮。
Set a template:
在Mapping template中填写如下信息:
[
{% for entity in input %}
{
"start_offset": {{ entity.start_offset }},
"end_offset": {{ entity.end_offset}},
"label": "{{ entity.label }}"
}{% if not loop.last %},{% endif %}
{% endfor %}
]
填写完成后点击右下角的Test按钮,Result中显示如下信息即为成功(显示的信息为模型抽取到的结果),然后点击Next按钮。
Set mappings:
该模块负责设置标签映射,举例:2023-05-08在doccano标注平台中的标签为时间日期,而在api中设定的schema为时间,则需要建立时间日期和时间之间的映射。【建议api和标注平台的标签名称保持一致】
如下图所示,如果有就需要进行添加,添加标签映射后点击Test,得到Result即为成功,点击Finish完成。
最终测试
点击左侧的Dataset,选择要进行标注的数据,然后点击Auto Labeling按钮,勾选红色圈位置的按钮后点击右下角的colse按钮即可。
每点击下一页就会进行自动标注,在后台也可以看到结果,如下图所示。