【使用攻略】【语言处理】文本纠错攻略、评测、建议
才能我浪费99 发布于2019-04 浏览:6141 回复:88
4
收藏
最后编辑于2019-07

调用攻略(Python3)

首先认证授权:

在开始调用任何API之前需要先进行认证授权,具体的说明请参考:

http://ai.baidu.com/docs#/Auth/top

获取Access Token

向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:

grant_type:?必须参数,固定为client_credentials;
client_id:?必须参数,应用的API Key;
client_secret:?必须参数,应用的Secret Key;
例如:

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR3LT0vuXV4&client_secret=0rDSjzQ20XUj5itV6WRtznPQSzr5pVw2&

具体Python3代码如下:

# -*- coding: utf-8 -*-
#!/usr/bin/env python

import urllib
import json
#client_id 为官网获取的AK, client_secret 为官网获取的SK
client_id =【百度云应用的AK】
client_secret =【百度云应用的SK】

#获取token
def get_token():
    host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret
    request = urllib.request.Request(host)
    request.add_header('Content-Type', 'application/json; charset=UTF-8')
    response = urllib.request.urlopen(request)
    token_content = response.read()
    if token_content:
        token_info = json.loads(token_content)
        token_key = token_info['access_token']
    return token_key

文本纠错调用:
详细说明请参考:http://ai.baidu.com/docs#/NLP-API/741e48da

接口描述
识别输入文本中有错误的片段,提示错误并给出正确的文本结果。支持短文本、长文本、语音等内容的错误识别,纠错是搜索引擎、语音识别、内容审查等功能更好运行的基础模块之一。

请求说明
HTTP方法: POST
请求URL: https://aip.baidubce.com/rpc/2.0/nlp/v1/ecnet

URL参数:
参数 值
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取”

Header如下:
参数 值
Content-Type application/json

Body请求示例:
{
"text": "百度是一家人工只能公司"
}

请求参数
参数 类型 描述 是否必填
text string 待纠错文本,输入限制511字节 必填


返回说明
参数 说明 描述
log_id uint64 请求唯一标识码
correct_query string 纠错后的文本
score double 模型置信度打分
item object 分析结果
+vec_fragment list 替换候选片段信息
++ori_frag string 原片段
++correct_frag double 替换片段
++begin_pos int 起始(长度单位)
++end_pos list 结尾(长度单位)

Python3调用代码如下:

#调用百度文本纠错接口
def txt_correction(content):
    print ('原文:',content)
    token=get_token()
    url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/ecnet'
    params = dict()
    params['text'] = content
    params = json.dumps(params).encode('utf-8')
    access_token = token
    url = url + "?access_token=" + access_token
    request = urllib.request.Request(url=url, data=params)
    request.add_header('Content-Type', 'application/json')
    response = urllib.request.urlopen(request)
    content = response.read()
    if content:
        content=content.decode('GB2312')
        data = json.loads(content)

        item=data['item']
        print('纠错后:',item['correct_query'])
        print('Score:',item['score'])

txt_correction('汽车形式在这条道路上')
返回结果:

原文: 汽车形式在这条道路上
纠错后: 汽车行驶在这条道路上
Score: 0.982835

测试:
选用不同的数据对文本纠错的准确性进行测试,具体的案例包括生活用语,文章,古诗等。具体案例如下:

test_list = [
            '我来自夏门',
            '朝辞白底彩云间',
            '时光葱葱而过',
            '形像代言人',
            '此事不会影像大局',
            '化夏子孙团结一心',
            '他有点必理不平衡。',
            '这是我们最新的研发计画。',
            '我早就在这排对了。',
            '你中于来了。']

import datetime
print (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
for text in test_list:
    txt_correction(text)
print (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

结果:
2019-04-16 11:29:52
原文: 我来自夏门
纠错后: 我来自夏门
Score: 0
原文: 朝辞白底彩云间
纠错后: 朝辞白帝彩云间
Score: 0.961476
原文: 时光葱葱而过
纠错后: 时光匆匆而过
Score: 0.938082
原文: 形像代言人
纠错后: 形象代言人
Score: 0.947005
原文: 此事不会影像大局
纠错后: 此事不会影响大局
Score: 0.969137
原文: 化夏子孙团结一心
纠错后: 华夏子孙团结一心
Score: 0.885656
原文: 他有点必理不平衡。
纠错后: 他有点必理不平衡。
Score: 0
原文: 这是我们最新的研发计画。
纠错后: 这是我们最新的研发计划。
Score: 0.441279
原文: 我早就在这排对了。
纠错后: 我早就在这排队了。
Score: 0.977007
原文: 你中于来了。
纠错后: 你中于来了。
Score: 0
2019-04-16 11:30:19

发现在10个测试案例中,有7个错误被成功纠正。纠正成功率为70%左右,感觉不错,不过还有优化空间。随着百度不断地优化应该会有进一步的提高。

10个调用,用时27秒,每次调用2.7秒左右。

使用场景及建议:
文本纠错有很广阔的应用前景,现在已经有了以下场景:
写作辅助:在内容写作平台上内嵌纠错模块,可在作者写作时自动检查并提示错别字情况。从而降低因疏忽导致的错误表述,有效提升作者的文章写作质量,同时给用户更好的阅读体验
搜索纠错:用户经常在搜索时输入错误,通过分析搜索query的形式和特征,可自动纠正搜索query并提示用户,进而给出更符合用户需求的搜索结果,有效屏蔽错别字对用户真实需求的影响
对话语音识别纠错:将文本纠错嵌入对话系统中,可自动修正语音识别转文本过程中的错别字,向对话理解系统传递纠错后的正确query,明显提高语音识别准确率,使产品整体体验更佳

此外还可以应用在:
NLP数据预处理:如在对客服记录,景区评价的数据进行客户情绪分析前可以使用文本纠错功能对数据进行预处理,提高分析的准确度。
单据扫描信息的后处理:对单据扫描文本识别后的数据进行后处理,提高准确度

在自然语言相关的AI应用越来越多的时候,文本纠错作为NLP应用的关键组件,必将得到广泛的应用。在试验中发现,百度AI作为这方面的先行者,已经具备了很好的易用性和调用速度,希望能进一步提高识别的准确率,百尺竿头更进一步。

收藏
点赞
4
个赞
共88条回复 最后由小雨青青润无声回复于2019-07
#89小雨青青润无声回复于2019-07
#82 mazhen2009回复
作者的文章不错。但是作者的这几个例子,用我们的算法能做到 100%。 为啥呢?因为大部分例子是我们网站上做演示的,而且我们用了有两年了。演示嘛,当然拿好的给人看喽。
展开

演示也是一种广告推广的方式

0
#88小雨青青润无声回复于2019-07
#77 才能我浪费99回复
因为Ai发展到了

软件的更新换代需要资金,可能也需要有补贴企业才会更换

0
#87小雨青青润无声回复于2019-07
#76 才能我浪费99回复
现在就是全方位的发展啊

人工智能发展的还是很快,但是在企业的应用上,还是有很多企业都没有用上

0
#86蓝色的风339回复于2019-07
#79 worddict回复
AI对大家的帮助是很多的

所以现在才发展的这么快

0
#85worddict回复于2019-07
#83 mazhen2009回复
无错字

感觉很厉害

0
#84worddict回复于2019-07
#82 mazhen2009回复
作者的文章不错。但是作者的这几个例子,用我们的算法能做到 100%。 为啥呢?因为大部分例子是我们网站上做演示的,而且我们用了有两年了。演示嘛,当然拿好的给人看喽。
展开

你们的是什么模型啊?

0
#83mazhen2009回复于2019-06
#82 mazhen2009回复
作者的文章不错。但是作者的这几个例子,用我们的算法能做到 100%。 为啥呢?因为大部分例子是我们网站上做演示的,而且我们用了有两年了。演示嘛,当然拿好的给人看喽。
展开

无错字

0
#82mazhen2009回复于2019-06

作者的文章不错。但是作者的这几个例子,用我们的算法能做到 100%。 为啥呢?因为大部分例子是我们网站上做演示的,而且我们用了有两年了。演示嘛,当然拿好的给人看喽。

0
#81才能我浪费99回复于2019-05
#79 worddict回复
AI对大家的帮助是很多的

所以AI才发展这么快啊

0
#80wangwei8638回复于2019-05
#74 小雨青青润无声回复
看来是全方位发展

很多领域都有需求

0
#79worddict回复于2019-05
#72 才能我浪费99回复
是啊,AI让大家越来越方便

AI对大家的帮助是很多的

0
#78worddict回复于2019-05
#76 才能我浪费99回复
现在就是全方位的发展啊

是啊,现在发展的太快了

0
#77才能我浪费99回复于2019-05
#75 小雨青青润无声回复
这就是会出现人工智能的原因吧

因为Ai发展到了

0
#76才能我浪费99回复于2019-05
#74 小雨青青润无声回复
看来是全方位发展

现在就是全方位的发展啊

0
#75小雨青青润无声回复于2019-05
#71 才能我浪费99回复
现在很鼓励创新创造

这就是会出现人工智能的原因吧

0
#74小雨青青润无声回复于2019-05
#70 wangwei8638回复
吃穿住用行,各个方面

看来是全方位发展

0
#73蓝色的风339回复于2019-05
#72 才能我浪费99回复
是啊,AI让大家越来越方便

AI现在发展非常快

0
#72才能我浪费99回复于2019-05
#68 小雨青青润无声回复
主要是太方便了,适合懒人

是啊,AI让大家越来越方便

0
#71才能我浪费99回复于2019-05
#67 小雨青青润无声回复
主要是思维的不断前进,现在学校就鼓励创意

现在很鼓励创新创造

0
#70wangwei8638回复于2019-05
#69 小雨青青润无声回复
还会在哪些方面发展?

吃穿住用行,各个方面

0
TOP
切换版块