搜索
查看: 2950|回复: 3

[文本分析] 百度自然语言接口调用演示(免费不限调用次数)

  [复制链接]

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13973
发表于 2018-5-12 16:10:24 | 显示全部楼层 |阅读模式
今天收到百度的推广邮件,
我们很高兴地向您宣布:2018年5月11日起,语言处理基础技术系列接口全线永久免费,且不再限制调用量!

然后,给大家写一个调用例子
import win.ui;
/*DSG{{*/
var winform = win.form(text="百度自然语言调用接口";right=727;bottom=687;parent=...)
winform.add(
button={cls=
"button";text="计算短文本相似度";left=312;top=616;right=512;bottom=656;db=1;dr=1;z=5};
edit1={cls=
"edit";text="百度很好用";left=8;top=8;right=720;bottom=192;dl=1;dr=1;edge=1;multiline=1;z=1};
edit2={cls=
"edit";text="百度很不好用";left=8;top=200;right=720;bottom=592;ah=1;db=1;dl=1;dr=1;edge=1;multiline=1;z=2};
editScore={cls=
"edit";left=544;top=620;right=712;bottom=651;db=1;dr=1;edge=1;multiline=1;z=4};
splitter1={cls=
"splitter";left=8;top=192;right=720;bottom=197;dl=1;dr=1;horz=1;z=3}
)
/*}}*/

winform.button.oncommand =
function(id,event){
    winform.button.disabledText =
"正在识别中"
   
    thread.invoke(
        
function(winform){
            
            
import baidu.client;
            
var http =  baidu.client.json();
            
            
/*
            http.setAuth( 这里写一个可以获取access_token的网址 )
            http.setAuth( "你自己的API Key","你自己的Secret Key" )
            */

            http.setAuth(
"9YZlZvUmPnOamSUjuESlLHHs","q8GvNlwG87sgp91MfinAKTWpaiVTF2Dx")
               
            
//自然语言处理接口
            var rpc1 = http.api("https://aip.baidubce.com/rpc/2.0/nlp/v1/");
            
var rpc2 = http.api("https://aip.baidubce.com/rpc/2.0/nlp/v2/");
            
            
var result = rpc2.simnet(
                text_1 = winform.edit1.text;
                text_2 = winform.edit2.text;
            )
            
            
if( result.score){
                winform.editScore.text = result.score;
            }
            
else {
                winform.msgboxErr(web.json.stringify(result,
true) )
            }
            
            winform.button.disabledText =
null;
        },winform
    )
}

winform.splitter1.split( winform.edit1,winform.edit2 )
winform.splitter1.ltMin = 20;
winform.splitter1.rbMin = 30;

winform.show()
win.loopMessage();

实际使用,请将应用key换成自己的(这个可以免费申请)

API文档:http://ai.baidu.com/docs#/NLP-API/top
中文词向量表示
https://aip.baidubce.com/rpc/2.0/nlp/v2/word_emb_vec

词义相似度
https:
//aip.baidubce.com/rpc/2.0/nlp/v2/word_emb_sim

短文本相似度
https:
//aip.baidubce.com/rpc/2.0/nlp/v2/simnet

中文DNN语言模型
https:
//aip.baidubce.com/rpc/2.0/nlp/v2/dnnlm_cn

评论观点抽取
https:
//aip.baidubce.com/rpc/2.0/nlp/v2/comment_tag

情感倾向分析
https:
//aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify

文章分类
https:
//aip.baidubce.com/rpc/2.0/nlp/v1/topic

文章标签
https:
//aip.baidubce.com/rpc/2.0/nlp/v1/keyword

依存句法分析
https:
//aip.baidubce.com/rpc/2.0/nlp/v1/depparser

词法分析
https:
//aip.baidubce.com/rpc/2.0/nlp/v1/lexer

词法分析(定制)
https:
//aip.baidubce.com/rpc/2.0/nlp/v1/lexer_custom



回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13973
 楼主| 发表于 2018-5-12 16:22:15 | 显示全部楼层

情感倾向分析接口调用演示

import win.ui;
/*DSG{{*/
var winform = win.form(text="百度自然语言调用接口";right=727;bottom=687;parent=...)
winform.add(
button={cls=
"button";text="情感分析";left=312;top=616;right=512;bottom=656;db=1;dr=1;z=4};
edit1={cls=
"edit";text="aardio太难用了";left=8;top=8;right=720;bottom=192;dl=1;dr=1;edge=1;multiline=1;z=1};
edit2={cls=
"edit";left=8;top=200;right=720;bottom=592;ah=1;db=1;dl=1;dr=1;edge=1;multiline=1;z=2};
splitter1={cls=
"splitter";left=8;top=192;right=720;bottom=197;dl=1;dr=1;horz=1;z=3}
)
/*}}*/

winform.button.oncommand =
function(id,event){
    winform.button.disabledText =
"正在识别中"
   
    thread.invoke(
        
function(winform){
            
            
import baidu.client;
            
var http =  baidu.client.json();
            http.charset =
"gb2312";
            
            
/*
            http.setAuth( 这里写一个可以获取access_token的网址 )
            http.setAuth( "你自己的API Key","你自己的Secret Key" )
            */

            http.setAuth(
"9YZlZvUmPnOamSUjuESlLHHs","q8GvNlwG87sgp91MfinAKTWpaiVTF2Dx")
               
            
//自然语言处理接口
            var rpc1 = http.api("https://aip.baidubce.com/rpc/2.0/nlp/v1/");
            
var rpc2 = http.api("https://aip.baidubce.com/rpc/2.0/nlp/v2/");
            
            
var result = rpc1.sentiment_classify(
                text = winform.edit1.text;
            )
            
            
var str = web.json.stringify(result,true)
            str = string.replace(str,
"\w+",{
                positive_prob =
"正面情绪";
                negative_prob =
"负面情绪";
                confidence =
"分类置信度";
                sentiment =
"情感分类(0:负向,1:中性,2:正向)"
            })
           
            winform.edit2.text = str;
            winform.button.disabledText =
null;
        },winform
    )
}

winform.splitter1.split( winform.edit1,winform.edit2 )
winform.splitter1.ltMin = 20;
winform.splitter1.rbMin = 30;

winform.show()
win.loopMessage();

回复

使用道具 举报

2

主题

77

帖子

549

积分

三级会员

Rank: 4

积分
549
发表于 2018-5-13 09:02:11 | 显示全部楼层
谢谢楼主,有这个功能京可以开发一个“情感分析桌面助手”啦
回复

使用道具 举报

3

主题

57

帖子

1004

积分

四级会员

Rank: 6Rank: 6

积分
1004
发表于 2018-5-21 15:21:52 | 显示全部楼层
Jacen,用你这个方法我调用百度的人体分析接口,发现老是报错。代码参见下面,
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="百度自然语言调用接口";right=727;bottom=687;parent=...)
  4. winform.add(
  5. button={cls="button";text="情感分析";left=312;top=616;right=512;bottom=656;db=1;dr=1;z=2};
  6. content={cls="edit";left=124;top=71;right=686;bottom=171;edge=1;multiline=1;z=6};
  7. edit2={cls="edit";left=49;top=191;right=695;bottom=518;autohscroll=1;edge=1;multiline=1;z=7};
  8. splitter1={cls="splitter";left=8;top=185;right=720;bottom=197;dl=1;dr=1;horz=1;z=1};
  9. static={cls="static";text="标题:";left=36;top=23;right=81;bottom=48;align="right";transparent=1;z=3};
  10. static2={cls="static";text="内容:";left=48;top=69;right=85;bottom=94;align="right";transparent=1;z=4};
  11. title={cls="edit";left=124;top=18;right=686;bottom=51;edge=1;multiline=1;z=5}
  12. )
  13. /*}}*/

  14. winform.button.oncommand = function(id,event){
  15.     winform.button.disabledText = "正在识别中"
  16.    
  17.     thread.invoke(
  18.         function(winform){
  19.             
  20.             import baidu.client;
  21.             import console;
  22.             import crypt.bin;
  23.             import inet.http;
  24.             
  25.             var ihttp = inet.http();
  26.                        
  27.             var http =  baidu.client.json();
  28.             http.charset = "gb2312";
  29.             
  30.             /*
  31.             http.setAuth( 这里写一个可以获取access_token的网址 )
  32.             http.setAuth( "你自己的API Key","你自己的Secret Key" )
  33.             */
  34.             
  35.                    ret = http.setAuth("LaK2P2ac5qCxYHCc9AE4g6nj","kOhI0RSqF2IzZw1IizjAneDTxVdw4iQm")
  36.             //console.log(ret["access_token"])   
  37.             //自然语言处理接口https://aip.baidubce.com/rest/2.0/image-classify/v1/body_analysis
  38.             var rpc1 = http.api("https://aip.baidubce.com/rest/2.0/image-classify/v1/");
  39.             var rpc2 = http.api("https://aip.baidubce.com/rest/2.0/face/v3/");
  40.            
  41.             
  42.             img= io.open("res/2.png","rb+");
  43.             var str  = crypt.bin.encodeBase64( img.read(-1));
  44.             import inet.url;
  45.             str = inet.url.encode(str);
  46.             //var result = ihttp.post("https://aip.baidubce.com/rest/2.0/image-classify/v1/body_attr?access_token=" + ret["access_token"],"image=" + str,"Content-Type:application/x-www-form-urlencoded")
  47.             string.save("res/a.txt",str )
  48.       

  49. /*

  50.                            var result = rpc1.body_attr(
  51.                 image = str;
  52.                
  53.                 )
  54. */


  55.                         winform.edit2.text = str;

  56.                         var result = rpc1.body_analysis(
  57.                         image = "E:/Devel/aardio/project/ChromeApp/res/2.png";               
  58.                         )
  59.             

  60.             var str = web.json.stringify(result,true)
  61.             
  62.            
  63.             winform.edit2.text = str;
  64.             winform.button.disabledText = null;
  65.         },winform
  66.     )
  67. }

  68. winform.splitter1.split( winform.content,winform.edit2 )
  69. winform.splitter1.ltMin = 20;
  70. winform.splitter1.rbMin = 30;

  71. winform.show()
  72. win.loopMessage();
复制代码

其中的image字段百度要求是要base64后再提交的,我也处理了,再其他工具中也通过了,就是提交的时候,结果出错,如下:
{
    "error_code":216101,
    "error_msg":"param image not exist",
    "log_id":827548696307559325
},
我查了下你给出的baidu.client方法中,发现你有处理image方法
  1.         if( params[["image"]] ){
  2.                        
  3.                         if( (#params.image < 0x410/*_MAX_PATH_U8*/) && ..io.exist(params.image)){
  4.                                 params.image = ..string.load(params.image);
  5.                         }
  6.                         elseif( ..string.startWith(params.image,"http",true) ){
  7.                                 params.image = this._http.get(params.image);
  8.                         }
  9.                        
  10.                         if(params.image) params.image = ..crypt.bin.encodeBase64(params.image);
  11.                 }

  12.                 return params;
复制代码


我改为本地图片链接也是这个问题,还请帮忙下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-10-16 11:14 , Processed in 0.062500 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表