LLM应用实战: 给个公司简称,输出公司全称
1.背景
本qiang~本周在处理手头项目工作的时候,遇到了一个问题,就是友方提供了一个公司名称列表(量不小~,因此无法人工处理),且该公司名称列表均为简称,需要与库中的全称做一个映射匹配。
看似简单的一个需求,但传统的技术手段貌似都无法派上用场,比如语义相似度,文本编辑距离等等。
因此本qiang花费了半天的时间思考并解决了该任务,遂将工作记录如下,且本着开放共享,将核心源码进行公开,欢迎讨论~
2.整体框架

其实,原理也非常简单,由于本地数据库缺乏公司的完整信息,但可以借助互联网资源来搜索公司的相关信息,比如官网介绍、天眼查等来源,然后将检索后的结果通过大模型自带的推理能力输出最终结果。
本文中使用的搜索引擎是duckduckgo_search(需要kexue上网),大模型调用使用的duckduckgo_search内部集成的gpt-4o-mini(理论上只要能kexue上网,即可免费使用gpt-4o-mini)。
3. 效果展示
|
AutoX |
深圳安途智行科技有限公司 |
|
Cosmose |
翱觅苷(上海)信息科技有限公司 |
|
Magic Data |
北京晴数智慧科技有限公司 |
|
Minimax |
名之梦(上海)科技有限公司 |
|
Momenta |
北京初速度科技有限公司 |
|
Testin云测 |
北京云测信息技术有限公司 |
|
一流科技 |
一流科技有限公司 |
|
三六零 |
三六零安全科技股份有限公司 |
|
东杰智能 |
东杰智能科技集团股份有限公司 |
|
东软 |
东软集团股份有限公司 |
|
中心通讯 |
中兴通讯股份有限公司 |
|
中科创达 |
中科创达软件股份有限公司 |
|
中科曙光 |
曙光信息产业股份有限公司 |
|
中科视拓 |
中科视拓(北京)科技有限公司 |
|
中译语通 |
中译语通科技股份有限公司 |
|
九四智能 |
广州九四智能科技有限公司 |
|
九章云极 |
北京九章云极科技有限公司 |
|
云天励飞 |
深圳云天励飞技术股份有限公司 |
|
云徙科技 |
广州云徙科技有限公司 |
|
亚信科技 |
亚信科技控股有限公司 |
4. 全部源码
由于调用检索相对耗时,因此分为公司简称检索和公司全称提取两个模块
4.1公司简称检索

from duckduckgo_search import DDGS
import json
import time def save_datas(file_path, datas, json_flag=True, all_flag=False, with_indent=False, mode='w'):
"""保存文本文件"""
with open(file_path, mode, encoding='utf-8') as f:
if all_flag:
if json_flag:
f.write(json.dumps(datas, ensure_ascii=False, indent= 4 if with_indent else None))
else:
f.write(''.join(datas))
else:
for data in datas:
if json_flag:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
else:
f.write(data + '\n') def search_companies(companies):
results = []
for company in companies:
if '公司' in company:
results.append({
'company': company,
'search_results': 'company'
})
continue
text = f'{company} 公司名全称' search_results = None
while search_results is None:
try:
search_results = DDGS().text(text, max_results=10)
if search_results: break
except Exception as e:
print('sleep 2s')
time.sleep(2)
continue
results.append({
'company': company,
'search_results': search_results
})
time.sleep(2)
save_datas('data/公司简称检索结果.json', results) def get_datas(file_path, json_flag=True, all_flag=False, mode='r'):
"""读取文本文件"""
results = [] with open(file_path, mode, encoding='utf-8') as f:
for line in f.readlines():
if json_flag:
results.append(json.loads(line))
else:
results.append(line.strip())
if all_flag:
if json_flag:
return json.loads(''.join(results))
else:
return '\n'.join(results)
return results if __name__ == '__main__':
search_companies(get_datas('data/公司简称列表.txt', json_flag=False))
4.2公司全名提取

from duckduckgo_search import DDGS
import json
import time PROMPT = """你是一个助手,你的任务是基于输入的公司名简称以及搜索结果,分析并提取出公司名简称对应的公司名全称。要求如下:
1. "简称"是公司名简称,"搜索结果"是基于互联网的搜索后的资源,需要根据"简称"和"搜索结果"进行分析,并输出公司全称,如果无法确认,请返回"无";
2. 如果检索结果不包含公司全称,请基于你所学习的知识可以进一步判断;
3. 输出结果只包含公司名的全称信息,且只能包含一个,不需要输出解释信息;
4. 输入的公司名简称均是科技领域的知名公司,这点请注意; 示例:
简称: 京东
搜索结果:
1. 京东(中国1998年创立的自营式电商企业)_百度百科\n京东(股票代码:jd),中国自营式电商企业,创始人刘强东初期担任京东集团董事局主席兼首席执行官,2021年9月,徐雷获任集团总裁。京东旗下设有京东商城、京东金融、拍拍网、京东智能、o2o及海外事业部等。1998年6月18日,刘强东在 中关村成立京东公司。
2. 京东集团 - 维基百科,自由的百科全书\n东集团. 京东集团 (NASDAQ: JD 、 港交所: 9618 、 港交所: 89618 (人民幣結算)),前稱 360buy 和 京東商城,由刘强东于1998年6月18日创立,是一家总部位于 北京 的 中国 电子商务公司,主要為 B2C 模式的購物網站 。. 2014年,京东集团在 美国 纳斯达克证券交易 ...
3. 京东集团股份有限公司 - 爱企查\n简介: 京东集团股份有限公司(JD.com, Inc.)于2006年11月6日在在英属维尔京群岛注册成立的公司,通过中国境内的子公司和VIE开展经营活动,公司总部位于北京。. 京东是专业的综合性网上购物商城,是中国B2C市场最大的3C网购专业平台,是中国电子商务领域最受 ...
输出: 京东集团股份有限公司 现在,请按照要求完成:
简称: {company_name}
搜索结果: {search_results}
输出:
""" def save_datas(file_path, datas, json_flag=True, all_flag=False, with_indent=False, mode='w'):
"""保存文本文件"""
with open(file_path, mode, encoding='utf-8') as f:
if all_flag:
if json_flag:
f.write(json.dumps(datas, ensure_ascii=False, indent= 4 if with_indent else None))
else:
f.write(''.join(datas))
else:
for data in datas:
if json_flag:
f.write(json.dumps(data, ensure_ascii=False) + '\n')
else:
f.write(data + '\n') def get_datas(file_path, json_flag=True, all_flag=False, mode='r'):
"""读取文本文件"""
results = [] with open(file_path, mode, encoding='utf-8') as f:
for line in f.readlines():
if json_flag:
results.append(json.loads(line))
else:
results.append(line.strip())
if all_flag:
if json_flag:
return json.loads(''.join(results))
else:
return '\n'.join(results)
return results def get_company_full_names():
results = []
for ele in get_datas('data/公司简称检索结果.json'):
company_name = ele['company']
search_results = ele['search_results']
if isinstance(search_results, str):
results.append(f'{company_name}\t{company_name}')
continue prompt = PROMPT.format(company_name=company_name, search_results=search_results)
result = ''
while result == '':
try:
result = DDGS().chat(prompt, model='gpt-4o-mini')
if result.strip(): break
except Exception as e:
time.sleep(2)
continue
results.append(f'{company_name}\t{result}')
save_datas('data/公司全称提取结果.txt', results, json_flag=False) if __name__ == '__main__':
get_company_full_names()
5.总结
一句话足矣~
开发了一款基于公司简称补全公司全称的工具,包括具体的框架、实现原理以及完整源码,满满诚意,提供给各位看官。欢迎转发、订阅~有问题可以私信或留言沟通!
虽然需求比较简单,且实现过程也比较简单,但通过搜索引擎搜素以及大模型的各种奇技淫巧,相信可以完成更加复杂且效果惊艳的项目。
有兴趣的客官可以进行沟通合作,感谢~
6.参考
(1) Duckduckgo_search: https://github.com/deedy5/duckduckgo_search.git

LLM应用实战: 给个公司简称,输出公司全称的更多相关文章
- 记录某公司(简称SMKJ) 的一次面试
昨天去了一家公司面试 Java 开发岗位,这篇文章主要是做一个面试的记录以及总结. 这家公司的规模大概100-200人,环境还可以,在一栋大厦租了两层办公室(31层和32层).一同搭电梯上去的还有一位 ...
- 庆祝下:iOS 开发者企业级计划(299美元/年帐户+邓白氏码免费) 和 Windows Phone公司应用(公司帐户99美元+Symantec企业证书299美元/年))顺利发布成功
时间:2013-11-15,地址:http://192.168.0.8 网站可下载三个终端应用直接安装IOS,Windows Phone,Android iOS: 企业版IDP通过 iTunes.使 ...
- Unity3d外包公司|UE4外包公司:谷歌首款Daydream VR设备上手
这款售价仅为79美元(约合人民币525元)的产品内含“够用”的手柄和一台头戴设备,只要你有一台支持月日,10月5日,dream平台的手机(未来将成为安卓平台的标配),就能体验VR的乐趣. 即使该产品最 ...
- 物联网常见通信协议RFID、NFC、Bluetooth、ZigBee等梳理
1 概述 在上一篇文章<物联网常见通信协议与通讯协议梳理[上]-通讯协议>中,对物联网常用通信协议和通讯协议作了区分,并对通讯协议进行了分享:本文将对常用的通信协议进行剖析,重点面向市场 ...
- 基于EasyUI的Web应用程序及过去一年的总结
前言 在这家公司服务了一年时间,一个多月之前已经提交了离职申请,好在领导都已经批准了,过几天就办理手续了,在此感谢领导的栽培与挽留,感谢各位同事在工作中的给我的帮助,感谢师傅(在我心中当他是我师傅,跟 ...
- 重学 Java 设计模式:实战迭代器模式「模拟公司组织架构树结构关系,深度迭代遍历人员信息输出场景」
作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 相信相信的力量! 从懵懂的少年,到拿起键盘,可以写一个Hell ...
- scrapy实战6爬取IT桔子国内所有融资公司:
爬取融资公司,融资公司简介,融资时间,轮次,融资额,投资方,股权占比以及融资公司完整融资历史 如图 源码地址:https://github.com/huwei86/spiderITjuzi
- JavaScript之闭包就是个子公司
在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数.这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外.所以,有 ...
- JVM 性能调优实战之:一次系统性能瓶颈的寻找过程
玩过性能优化的朋友都清楚,性能优化的关键并不在于怎么进行优化,而在于怎么找到当前系统的性能瓶颈.性能优化分为好几个层次,比如系统层次.算法层次.代码层次…JVM 的性能优化被认为是底层优化,门槛较高, ...
- 项目实战7—Mysql实现企业级数据库主从复制架构实战
Mysql实现企业级数据库主从复制架构实战 环境背景:公司规模已经形成,用户数据已成为公司的核心命脉,一次老王一不小心把数据库文件删除,通过mysqldump备份策略恢复用了两个小时,在这两小时中,公 ...
随机推荐
- AntSK:在无网络环境中构建你的本地AI知识库的终极指南
亲爱的读者朋友们,我是许泽宇,今天我将深入探讨一个引人注目的开源工具--AntSK.这个工具让您在没有互联网连接的情况下,仍然能够进行人工智能知识库的对话和查询.想象一下,即使身处无网络环境中,您也可 ...
- Implicit Autoencoder for Point-Cloud Self-Supervised Representation Learning论文阅读
Implicit Autoencoder for Point-Cloud Self-Supervised Representation Learning 2023 ICCV *Siming Yan, ...
- Spring Boot 框架中配置文件 application.properties 当中的所有配置大全
Spring Boot 框架中配置文件 application.properties 当中的所有配置大全 #SPRING CONFIG(ConfigFileApplicationListener) s ...
- 手把手教你安装Jupyter Notebook(保姆级教程)
来源于:https://blog.csdn.net/weixin_43855159/article/details/137738714 1. 什么是Jupyter Notebook Jupyter N ...
- 测距技术 超声波、毫米波、激光雷达LIDAR
超声波 技术成熟,成本之选 声波传输慢,高速时误差大 超声波雷达有40kHz.48kHz和58kHz三种,频率越高,灵敏度越高,探测角度越小.在工作状态,通过收发超声波,超声波雷达能以1-3cm精度测 ...
- [python][selenium] Web UI自动化8种页面元素定位方式
关联文章:Web UI自动化页面切换iframe框架 简单的加个前置知识: 第一:webdriver.Chrome()这句话,通过WebDriver的构造方法,拿到浏览器驱动的对象,然后通过这个对象, ...
- CSS单位em、rem、vh和vw等及CSS3的calc()以及line-height百分比
css单位我们常用的是px,也即是像素.随着网页开发自适应的要求,css3新增了许多单位,rem.vw和vh.vmin和vmax.ch和ex等. em 做前端的应该对em不陌生,不是什么罕见的单位,是 ...
- CF228E 题解
CF228E 题解 题目简述 给定一个 \(n\) 个点,\(m\) 条边的无向图,每条边都为 \(0\) 或 \(1\),可以进行若干次操作,与此点相连的所有点权值取反,求一种方案使得所有边都变为 ...
- [C103] 斐波那契数列
设 \((i,j)=gcd(i,j)\) \[f_{i}=f_{i-1}+f_{i-2} \] \[f_{i}=f_{i-2}\times f_{1}+f_{i-1}\times f_{2} \] \ ...
- 4.1 数列的概念2 (递推公式、前n项和)
\({\color{Red}{欢迎到学科网下载资料学习 }}\) [ [基础过关系列]高二数学同步精品讲义与分层练习(人教A版2019)] ( https://www.zxxk.com/docpack ...