news 2026/8/27 15:24:30

如何从金融新闻中精准提取公司名称?SmoothNLP金融实体识别手把手教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何从金融新闻中精准提取公司名称?SmoothNLP金融实体识别手把手教程

如何从金融新闻中精准提取公司名称?SmoothNLP金融实体识别手把手教程

【免费下载链接】SmoothNLP专注于可解释的NLP技术 An NLP Toolset With A Focus on Explainable Inference项目地址: https://gitcode.com/gh_mirrors/smo/SmoothNLP

SmoothNLP 是一款专注于可解释 NLP 技术的开源工具集,内置面向金融场景的实体识别能力。本教程手把手教你使用 SmoothNLP 的金融实体识别功能,从一条金融新闻中精准提取公司名称,并进一步构建企业知识图谱——即使你是 NLP 新手,也能在几分钟内跑通第一个示例 🚀

为什么金融实体识别这么难?

财经新闻里,公司名称往往以"简称、别名、中英混排"的形式出现:

"旷视科技预计将在今年9月在港IPO" "中行9.78亿收购国开行旗下15家村镇银行" "东芝23亿美元收购Landis+Gyr"

人工阅读容易,程序自动提取却很难。SmoothNLP 的金融实体识别针对这类场景做了专门优化,官方测试用例(smoothnlp/unittest/test2_NER.py)覆盖了"公司简称识别、英文公司名识别、非公司名词防误判"等典型 case,准确率表现稳定。

三步完成环境安装与首次调用

第 1 步:安装 SmoothNLP

pip install smoothnlp>=0.4.0

💡 要求 Python 3 环境,版本检查逻辑见 smoothnlp/__init__.py。

第 2 步:一行代码提取公司名称

import smoothnlp smoothnlp.company_recognize("旷视科技预计将在今年9月在港IPO")

第 3 步:解读返回结果

[{'charStart': 0, 'charEnd': 4, 'text': '旷视科技', 'nerTag': 'COMPANY_NAME', 'normalizedEntityValue': '旷视科技'}]

每个实体都是带完整信息的字典:text是实体文本,charStart/charEnd是它在原句中的起止位置(方便高亮标注),nerTag是实体类型,normalizedEntityValue是规范化后的实体值。

两个核心接口:company_recognize 与 ner

SmoothNLP 提供了两层 API,按需选择:

接口用途适用场景
smoothnlp.company_recognize直接返回公司实体只关心公司名称,最省事
smoothnlp.ner返回全部类型实体需要同时抽取公司、金额、日期等多类信息

接口一:直接抽取公司

company_recognize内部实际调用ner接口,再按COMPANY_NAME标签过滤(实现见 smoothnlp/server/init.py),对你来说它就是一个"一键提公司"的快捷方式。

接口二:全量实体识别

import smoothnlp smoothnlp.ner("中国平安2019年度长期服务计划于2019年5月7日至5月14日通过二级市场完成购股")

一次调用就能拿到 4 类实体:

  • COMPANY_NAME(中国平安)
  • NUMBER(2019年)
  • DATETIME(2019年5月7日、5月14日)

做金融信息结构化时,通常先用ner全量抽取,再按nerTag过滤出COMPANY_NAME,灵活度更高。

长新闻怎么处理?切句 + 批量处理

📌关键限制:单次请求的文本长度不能超过200 字符(限制逻辑见 smoothnlp/server/init.py)。处理长新闻时,标准姿势是"先切句、再识别":

import smoothnlp news = "句子1!句子2!句子3!" sentences = smoothnlp.split2sentences(news) # 按标点切句 for s in sentences: print(smoothnlp.company_recognize(s))

处理整篇新闻或大批量语料时,直接把句子列表(list)传入接口即可,SmoothNLP 会默认用2 个线程并发请求提升吞吐:

from smoothnlp import config config.setNumThreads(2) # 调整并发线程数 smoothnlp.company_recognize(sentence_list) # 传入 list 触发并发

并发与重试机制实现见 smoothnlp/server/init.py,遇到 QPS 超限时客户端会自动退避重试,无需额外处理。

进阶:从公司名称到企业知识图谱

提取出公司只是第一步,更进一步可以用 SmoothNLP 的知识图谱模块,从公司描述文本中抽取"公司—关系—属性"三元组:

from smoothnlp import kg kg.extract("上海培罗蒙西服公司成立于1928年,总部位于上海,是一家西服制作有限公司", pretty=True)

返回的 N 元组包含subjectobjectactiontype和置信度_conf_score,可以进一步用kg.rel2graph构建 NetworkX 有向图。调用方式与字段说明详见 tutorials/知识图谱/README.md。

上图中,"上海培罗蒙西服公司"作为核心节点,与"有限公司"(状态修饰)、"于1928年"(成立)、"于上海"(地点)之间自动关联——这正是实体识别 + 关系抽取的组合效果。

常见问题速查

Q1:识别结果偶尔漏抽怎么办?这是 NER 模型的常见边界情况,官方专门为此维护了测试用例集,运行python -m unittest test2_NER可查看当前模型在"公司漏识别、非实体误判"上的表现,说明见 smoothnlp/unittest/README.md。

Q2:调试时想看详细日志?

from smoothnlp import config config.setLogLevel("DEBUG")

Q3:想解析"百度与携程"这类多实体 Query 并区分修饰关系?可以关注 SmoothNLP 的 Query 解析功能(Pro 版),它能把"国产特斯拉"拆成"国产 + 特斯拉",功能介绍见 tutorials/Query解析/README.md。

总结

  • ✅ 安装:pip install smoothnlp>=0.4.0,Python 3 环境即可
  • ✅ 提取公司:smoothnlp.company_recognize一键抽取,smoothnlp.ner全量抽取
  • ✅ 长文本:smoothnlp.split2sentences切句预处理(单句 ≤200 字符),列表入参自动并发
  • ✅ 进阶:kg.extract把公司实体升级为结构化知识图谱

从一条新闻到一个企业知识图谱,SmoothNLP 帮你把"可解释的 NLP 推理"落到了实处。现在就可以动手跑通第一个示例了 ✨

【免费下载链接】SmoothNLP专注于可解释的NLP技术 An NLP Toolset With A Focus on Explainable Inference项目地址: https://gitcode.com/gh_mirrors/smo/SmoothNLP

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 15:15:38

具身智能消费级机器人部署与二次开发实践指南

最近圈子里讨论比较多的一个话题,是“具身智能开始当消费品卖了”。从桌面机械臂到能做简单家务的人形机器人,再到带大模型对话能力的陪伴设备,产品定义越来越像消费电子,而不是科研样机。对普通用户来说,这意味着一台…

作者头像 李华
网站建设 2026/8/27 15:15:18

潮湿与腐蚀环境中的钢铁卫士:防腐货架的“不锈“智慧

在海鲜加工厂的潮湿空气中,在化工车间弥漫的化学蒸汽里,普通金属货架往往难逃锈蚀的命运。但有这样一类货架,它们默默矗立在严苛环境中,守护着每一件货物的安全——这就是防腐货架。它们不仅是仓库里的"钢铁卫士"&#…

作者头像 李华
网站建设 2026/8/27 15:15:12

一文详解AI大模型何为深入理解RAG?看完这一篇你就知道了!!

前言 当你看到大模型应用开发招聘JD中"深入理解RAG"这个要求时,HR和技术面试官到底在考察什么?本文为你拆解RAG技能的各个层级,明确什么才算"深入理解"。一、理解层级:你在哪一层 "深入理解RAG"并不…

作者头像 李华