大模型政府公文经济指标抽取指南

2026-06-18阅读 0热度 0
ai 人工智能

介绍

这次我们来聊聊怎么用LangChain配合Ollama上的qwen2:7b模型,从政府工作报告中抽取出全国各市级单位每年的预期GDP增长目标。qwen2:7b这个模型显存占用只有5GB左右,大多数消费级显卡都能跑起来,门槛并不高。

流程结构介绍

先看看整体的处理流程:

  1. 从相关政府工作报告的文本中,筛选出包含目标信息的句子;
  2. 通过提示工程,用few-shot的方式给出几个例子,定义模型的输出格式;
  3. 将大模型的输出结果插入到pandas的DataFrame中,后续再转成Excel。

相关文本筛选

关键句子的定位——从一整篇政府工作报告中,找到包含目标信息的句子。直接喂一整篇文本给大模型,精度往往会下降;用句子级别的短文本反而能提高信息抽取的准确率。

筛选相关文本通常有两种思路:

  1. 向量筛选:行业内常用基于向量相似度的文本块筛选(也就是RAG中的文本召回技术),类似llama-index结合chatglm3-6B利用RAG进行文档智能问答的做法。不过这种方法对硬件和配置有一定要求。

  2. 关键词筛选:这个项目直接用了关键词筛选。因为需求很明确——找到包含“生产总值”、“增长”这些词的句子,关键词筛选的召回率反而更高,也更简单直接。

大模型 few-shot

目标句子中虽然含有明显的经济指标数据,但不太建议用正则表达式来识别。文本表述变化很大,有的说“增长10%”,有的说“增速高于全省平均水平1到2个百分点”,正则很难全覆盖。直接让大模型来抽取信息就方便多了。

拿到包含目标信息的句子后,用提示词告诉大模型要提取哪些值,以及返回什么格式。提示词如下:

prompt = """
参考下述例子,生成相应的回答,请你从中提取出今年生产总值的预期增长值是多少?
按照下述提供的json格式返回结果。

Input: 孝感市1894年文件节选:主要预期目标是:全市生产总值增长10%以上
Output: {"city":"孝感市", "year":"1894", "GDP_growth":"10%"}

Input: 上海市1895年文件节选:初步核算,全市生产总值比上年增长11.1%,规模以上工业增加值增长21.7%,全社会固定资产投资增长22.6%,社会消费品零售总额增长13.7%,地方一般预算收入增长18.1%,实际利用外资增长12.4%,外贸出口增长28.4%,城镇居民人均可支配收入增长10.1%,农民人均纯收入增长10.2%,年初确定的主要预期目标和各项工作任务全面超额完成n今年经济社会发展的主要预期目标是:生产总值增长12%,全社会固定资产投资增长20%,'
Output: {"city":"上海市", "year":"1895", "GDP_growth":"12%"}

Input: {filename}年文件节选:{content}
Output: 
""".strip()

给了两个Input/Output示例,让大模型学习并模仿结构化输出。这种用例子提示的方法就是few-shot。

大模型

这里用的是本地Ollama上的qwen2:7b模型。推理速度大概每秒处理1.6条数据,显存只占5GB。因为手头有6000份文本需要抽取,本地模型速度更快——虽然gpt-4o-mini准确率更高,收费也不贵,但网络延时实在太大。

如果想追求更快的速度,可以用llamafactory配合vllm来部署qwen2:7B,推理速度可以明显提升。测试环境是48GB显存的3090级别显卡,按照以往经验,每秒大概能处理15条数据。

当然,llamafactory+vllm部署起来不算太麻烦,如果勤快的话推荐试试。Ollama的好处是不用部署模型,直接挂机等结果就行,省心不少。

from langchain_community.llms import Ollama
llm = Ollama(model="qwen2:7b", temperature=0)

这次的few-shot本质上是为了实现结构化的输出。不过OpenAI在2024年已经官方支持结构化输出了,如果没有大量文本推理的需求,直接用gpt-4o-mini也是个不错的选择,一次调用大约$0.000102。具体可以参考LangChain官方文档中关于结构化输出的说明。

抽取结果

在全国所有市级单位中,从2000年开始一共抽取出6000条数据。

虽然qwen2这个小模型的能力没有那么强,但返回的结果还是挺令人满意的。从输出中能明显看到大模型的思考过程。举个例子,商丘市2011年的政府工作报告节选中并没有直接给出具体增长数值,只说了“生产总值增速高于全省平均水平1到2个百分点”:

今年经济社会发展主要预期目标是:生产总值增速高于全省平均水平1到2个百分点,财政一般预算收入增速高于生产总值增速2个百分点,全社会固定资产投资增长20%,社会消费品零售总额增长17%,外贸出口增长21%,实际利用外商直接投资增长22%,居民消费价格涨幅控制在4%左右,人口自然增长率控制在6.5%以内,新增城镇就业人员5.6万人,农民人均纯收入增长9%,城镇居民人均可支配收入增长9%,节能减排完成省定目标。

大模型的输出结果是:生产总值增速高于全省平均水平1到2个百分点。这个回答非常准确。事前并没有给模型任何关于这种模糊表述的提示,它能主动理解并提取出最优结果,确实很厉害。

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

相关阅读

更多
欢迎回来 登录或注册后,可保存提示词和历史记录
登录后可同步收藏、历史记录和常用模板
注册即表示同意服务条款与隐私政策