*- 读取政府工作报告文本 clear all set maxvar 12000 set obs 47 gen year = 1977 + _n gen content = "" forval i = 1/`=_N' { local temp = fileread("78-24政府工作报告/`=year[`i']'.txt") replace content = `"`temp'"'in`i' }
*- content 里面包含了换行符,我们可以把换行符替换成空白 gen temp = ustrregexs(0) if ustrregexm(content, "\n") replace content = subinstr(content, temp, "", .)
use mydata, clear distrlen("`=content[20]'") *> 46776 capmkdir"res20"
forval i = 1(3000)`=strlen("`=content[20]'")' { if !fileexists("res20/`i'.json") { local temp = substr("`=content[20]'", `i', 3000) !curl http://localhost:11434/api/generate -d '{"model": "llama3.1", "prompt": "提取下面文本中的经济增长预期目标并以一个两列的markdown表格展示,一列是目标类型,一列是目标的值,不要显示无用信息:“`temp'”", "stream": false}' -o res20/`i'.json } }
这样所有的结果就都存放到 res20 文件夹里面了,再读取合并:
clear all gen str1000 response = "" local files: dir"res20" files "*.json" local j = 0 foreach i in`files' { insheetjson response using "res20/`i'", columns("response") offset(`j') local j = `j' + 1 } genfile = _n orderfile
然后再稍加处理:
split response, parse("\n") drop response gather response* dropifmi(value) dropif !index(value, "|") dropvar split value, parse("|") drop value drop value1 foreach i of varlist _all { capformat`i' %10s }
dropif value2 == "目标类型" | value2 == "类型" dropifmi(value3) | value3 == "?" ren value2 variable ren value3 value dropfile gen year = 1997 order year save 1997提取结果, replace
评论