*> Response from server: *> lat = 35.035638 *> detail = 王丕镇康桥村、马楼村(金丰公路南侧)土地使用权人:金乡华盛木业有限责任公司 *> town = 王丕街道 *> phonenum = "" *> city_code = 370800 *> province = 山东省 *> person = "" *> lng = 116.358985 *> province_code = 370000 *> text = 项目名称:金乡县华盛木业有限责任公司土地坐落:金乡县王丕镇康桥村、马楼村(金丰公路南侧)土地使用权人:金乡华盛木业有限责任公司 *> county = 金乡县 *> city = 济宁市 *> county_code = 370828 *> town_code = 370828004 *> log_id = 1778460330567968563
为了更方便使用,我们可以编写一个命令:
cap prog drop get_res prog def get_res syntax anything(name=text), file(string) !curl "https://aip.baidubce.com/rpc/2.0/nlp/v1/address?access_token=${access_token}" /// -H "Content-Type: application/json" /// -H "Accept: application/json" /// --data-raw "{\"text\":\"`text'\"}" /// -o `file'.json end
使用:
*- 创建文件夹保存结果 cap mkdir "res" get_res "项目名称:金乡县华盛木业有限责任公司土地坐落:金乡县王丕镇康桥村、马楼村(金丰公路南侧)土地使用权人:金乡华盛木业有限责任公司", file("res/1")
*- 删除这个文件 cap erase res/1.json
这样如果我们需要一次性解析大量文本,就可以先循环获取所有的 json 文件,然后再集中处理:
use data, clear gen address = "项目名称:" + 项目名称 + "土地坐落:" + 土地坐落 + "土地使用权人:" + 土地使用权人 gen id = _n save data2, replace forval i = 1/`=_N' { if !fileexists("res/`=id[`i']'.json") { di"`i'" cap get_res "`=address[`i']'", file("res/`=id[`i']'") } }
处理所有的 json 文件:
*- 处理 json 文件 insheetjson using res/54.json, showr flatten clear gen str100 lat = "" gen str100 lng = "" gen str100 province = "" gen str100 province_code = "" gen str100 city = "" gen str100 city_code = "" gen str100 county = "" gen str100 county_code = "" gen str100 town = "" gen str100 town_code = "" gen str100 id = "" *- 循环所有文件 local files: dir"res" files "*.json" localn: word count`files' set obs `n' local j = 0 foreach i in`files' { insheetjson lat lng province province_code city /// city_code county county_code town town_code /// using "res/`i'", columns("lat""lng""province"/// "province_code""city""city_code""county"/// "county_code""town""town_code") offset(`j') local j = `j' + 1 replace id = "`i'"in`j' }
compress
foreach i of varlist _all { capformat`i' %10s }
order id replace id = subinstr(id, ".json", "", .) destring id lat lng, replace merge 1:1 id using "data2.dta" drop _m save"处理结果", replace
评论