查看 百度nlp词法分析接口文档 ,需要 post 方法提交 json 格式的数据向带有 access_token 的指定网址,access_token 由发送带有 apikey(client_id)和 secretkey(secret_id)的指定网址的请求返回的json数据取得。
前者可以添加 charset=UTF-8 参数以 utf-8 格式来 post utf-8 格式的 json 数据,而其默认是 gbk 编码的。返回的数据依然是json格式,故有——
(wb) =>
let
token_url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=*&client_secret=*",
token_headers = [#"Content-Type"="application/json; charset=UTF-8"],
token = Json.Document(Web.Contents(token_url))[access_token],
text_url = "https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?access_token="&token,
text_headers = [#"Content-Type"="application/json"],
text_content = "{""text"":"""&wb&"""}",
result=Json.Document(Web.Contents(text_url,[Content=Text.ToBinary(text_content, 936)]), 936)
in
Table.FromRecords(result[items])
其中,text_url对应的可以改成 "https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?charset=UTF-8&access_token="&token
, 以及 result 改为 Json.Document(Web.Contents(text_url,[Content=Text.ToBinary(text_content)])) 。
继而想到 utf-8 与 gbk 编码解码的问题,看样子暂时用不到 Uri.EscapeDataString 。
*星号需要替换一下自己申请得来的百度AI开放平台相应应用(如 产品服务 / 自然语言处理 - 应用列表 / 应用详情 下的)的值,自不必说。