测试clean_country_names函数

测试clean_country_names函数

这是我最近正在开发的AI工具信息平台的部门功能模块测试,基于streamlit架构。整理出来与大家分享,也为我以后自己回溯找到资源。

为了测试 clean_country_names 函数,我们可以按照以下步骤进行:

  1. 准备一个包含国家名称的 Excel 文件:确保文件中有一列名为 “Country”。
  2. 实现国家标准化函数 standardize_country:这个函数将根据映射字典将国家名称标准化。
  3. 读取 Excel 文件并调用 clean_country_names 函数:执行清理操作并输出结果。

步骤 1:创建 Excel 文件

我们首先创建一个示例 Excel 文件,内容如下(命名为 test_tools.xlsx):

NameCountry
Tool A中国
Tool Bchina
Tool C美国
Tool DUSA
Tool E英国
Tool FUK
Tool G德国
Tool HGermany
Tool Iunknown
import pandas as pd# 示例数据
data = {'Name': ['Tool A', 'Tool B', 'Tool C', 'Tool D', 'Tool E', 'Tool F', 'Tool G', 'Tool H', 'Tool I'],'Country': ['中国', 'china', '美国', 'USA', '英国', 'UK', '德国', 'Germany', 'unknown']
}df_test = pd.DataFrame(data)
df_test.to_excel('test_tools.xlsx', index=False, sheet_name='Tools')

步骤 2:实现国家标准化函数

接下来,我们需要实现 standardize_country 函数,用于根据 country_mapping 标准化国家名称:

def standardize_country(country_name, country_mapping):"""根据映射字典标准化国家名称"""for standardized_name, aliases in country_mapping.items():if country_name in aliases:return standardized_namereturn country_name  # 如果没有匹配,返回原名称

步骤 3:整合代码并测试

最后,将所有部分整合到一起,包括读取 Excel 文件和调用 clean_country_names 函数:

import pandas as pdCOUNTRY_FLAGS = {'中国': '🇨🇳','美国': '🇺🇸','日本': '🇯🇵','韩国': '🇰🇷','英国': '🇬🇧','法国': '🇫🇷','德国': '🇩🇪','意大利': '🇮🇹','加拿大': '🇨🇦','澳大利亚': '🇦🇺','新西兰': '🇳🇿'
}def standardize_country(raw_name, mapping):"""国家名称标准化核心逻辑"""raw_lower = str(raw_name).strip().lower()for standard_name, variants in mapping.items():if any(v in raw_lower for v in variants):return standard_namereturn '其他'def standardize_country(country_name, country_mapping):"""根据映射字典标准化国家名称"""for standardized_name, aliases in country_mapping.items():if country_name in aliases:return standardized_namereturn country_name  # 如果没有匹配,返回原名称def clean_country_names(df):"""国家名称标准化"""country_mapping = {'中国': ['china', 'cn', '中国', '中華', '中国大陆'],'美国': ['usa', 'us', 'america', '美国', '美利坚'],'日本': ['japan', 'jp', '日本', '日本国'],'韩国': ['korea', 'kr', '韩国', '大韩民国', 'korean'],'英国': ['uk', 'gb', 'united kingdom', '英国', '大不列颠', '英伦'],'法国': ['france', 'fr', '法国', '法兰西'],'德国': ['germany', 'de', '德国', '德意志'],'意大利': ['italy', 'it', '意大利', '意大利共和国'],'加拿大': ['canada', 'ca', '加拿大'],'澳大利亚': ['australia', 'au', '澳大利亚'],'新西兰': ['new zealand', 'nz', '新西兰'],'瑞士': ['switzerland', 'ch', '瑞士', '瑞士联邦'],'荷兰': ['netherlands', 'nl', '荷兰', '尼德兰'],'比利时': ['belgium', 'be', '比利时'],'奥地利': ['austria', 'at', '奥地利'],'瑞典': ['sweden', 'se', '瑞典'],'挪威': ['norway', 'no', '挪威'],'丹麦': ['denmark', 'dk', '丹麦'],'芬兰': ['finland', 'fi', '芬兰'],'爱尔兰': ['ireland', 'ie', '爱尔兰'],'冰岛': ['iceland', 'is', '冰岛'],'卢森堡': ['luxembourg', '.lu', '卢森堡'],'西班牙': ['spain', '.es', '西班牙'],'葡萄牙': ['portugal', '.pt', '葡萄牙'],'希腊': ['greece', '.gr', '希腊'],}df['Country'] = df['Country'].apply(lambda x: standardize_country(x, country_mapping))return dfdef main():# 从 Excel 文件读取工具数据excel_file = 'test.xlsx'df = pd.read_excel(excel_file, sheet_name='Tools')# 清理国家名称cleaned_df = clean_country_names(df)# 输出结果print(cleaned_df)if __name__ == "__main__":main()

步骤 4:运行测试

将上述代码保存为 Python 文件,例如 test_clean_country_names.py,然后在命令行中运行以下命令:

python test_clean_country_names.py

验证输出

运行后,你将看到类似于以下的输出,显示每个工具的标准化国家名称:

                Name  ... Open Source
0                 通义千问  ...           否
1              智谱清言App  ...           否
2     ChatGPT (OpenAI)  ...           否
3     文心一言 (ERNIE Bot)  ...           否
4                 讯飞星火  ...           否
5                 通义千问  ...           否
6              ChatGLM  ...           否
7               Claude  ...           否
8               Cohere  ...           否
9         Hugging Face  ...           是
10                BERT  ...           是
11                  T5  ...           是
12               SpaCy  ...           是
13              Gensim  ...           是
14            TextBlob  ...           是
15                NLTK  ...           是
16             Pattern  ...           是
17         StanfordNLP  ...           是
18             Fairseq  ...           是
19            AllenNLP  ...           是
20             OpenNLP  ...           是
21    Stanford CoreNLP  ...           是
22  AllenNLP Interpret  ...           是

注意事项

  1. Excel 文件路径:确保在运行代码时,Excel 文件路径正确或与脚本在同一目录下。
  2. 国家映射的完整性:确保 country_mapping 中包含了所有可能的别名,以达到更好的标准化效果。
  3. 异常处理:考虑添加对无效输入的处理,以便于捕获错误并输出相应的信息。

通过这些步骤,你应该能够成功地测试 clean_country_names 函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22339.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI ChatGPT在心理治疗领域展现超凡同理心,通过图灵测试挑战人类专家

近期,一项关于OpenAI ChatGPT在心理治疗领域的研究更是引起了广泛关注。据报道,ChatGPT已经成功通过了治疗师领域的图灵测试,其表现甚至在某些方面超越了人类治疗师,尤其是在展现同理心方面,这一发现无疑为AI在心理健康…

【智能客服】ChatGPT大模型话术优化落地方案

本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 一、项目背景 1.1 行业背景 1.2 业务现…

【JavaWeb12】数据交换与异步请求:JSON与Ajax的绝妙搭配是否塑造了Web的交互革命?

文章目录 🌍一. 数据交换--JSON❄️1. JSON介绍❄️2. JSON 快速入门❄️3. JSON 对象和字符串对象转换❄️4. JSON 在 java 中使用❄️5. 代码演示 🌍二. 异步请求--Ajax❄️1. 基本介绍❄️2. JavaScript 原生 Ajax 请求❄️3. JQuery 的 Ajax 请求 &a…

[Android]APP自启动

APP添加自启动权限&#xff0c;重启设备后自动打开APP。 1.AndroidManifest.xml <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.an…

Moonshot AI 新突破:MoBA 为大语言模型长文本处理提效论文速读

前言 在自然语言处理领域&#xff0c;随着大语言模型&#xff08;LLMs&#xff09;不断拓展其阅读、理解和生成文本的能力&#xff0c;如何高效处理长文本成为一项关键挑战。近日&#xff0c;Moonshot AI Research 联合清华大学、浙江大学的研究人员提出了一种创新方法 —— 混…

cs224w课程学习笔记-第2课

cs224w课程学习笔记-第2课 传统图学习 前言一、节点任务1、任务背景2、特征节点度3、特征节点中心性3.1 特征向量中心性&#xff08;Eigenvector Centrality&#xff09;3.2 中介中心性&#xff08;Betweenness Centrality&#xff09;3.3 接近中心性&#xff08;Closeness Cen…

Centos虚拟机扩展磁盘空间

Centos虚拟机扩展磁盘空间 扩展前后效果1 虚拟机vmware关机后&#xff0c;编辑2 扩展2.1 查看2.2 新建分区2.3 格式化新建分区ext42.3.1 格式化2.3.2 创建2.3.3 修改2.3.4 查看 2.4 扩容2.4.1 扩容2.4.1 查看 扩展前后效果 df -h1 虚拟机vmware关机后&#xff0c;编辑 2 扩展 …

1.13作业

1 if(!preg_match("/[0-9]|\~|\|\|\#|\\$|\%|\^|\&|\*|\&#xff08;|\&#xff09;|\-|\|\|\{|\[|\]|\}|\:|\|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){eval($c); 构造数组rce ?ceval(array_pop(next(get_defined_vars()))); post传参:asystem("c…

如何在 SpringBoot 项目使用 Redis 的 Pipeline 功能

本文是博主在批量存储聊天中用户状态和登陆信息到 Redis 缓存中时&#xff0c;使用到了 Pipeline 功能&#xff0c;并对此做出了整理。 一、Redis Pipeline 是什么 Redis 的 Pipeline 功能可以显著提升 Redis 操作的性能&#xff0c;性能提升的原因在于可以批量执行命令。当我…

力扣LeetCode: 2209 用地毯覆盖后的最少白色砖块

题目&#xff1a; 给你一个下标从 0 开始的 二进制 字符串 floor &#xff0c;它表示地板上砖块的颜色。 floor[i] 0 表示地板上第 i 块砖块的颜色是 黑色 。floor[i] 1 表示地板上第 i 块砖块的颜色是 白色 。 同时给你 numCarpets 和 carpetLen 。你有 numCarpets 条 黑…

RabbitMQ 消息队列

1. 消息队列是什么&#xff1f; 当用户注册成功后&#xff0c;就发送邮件。当邮件发送成功了&#xff0c;接口才会提示注册成功信息。但由于发送邮件&#xff0c;依赖于其他厂商的服务&#xff0c;有可能他们的接口会非常耗时。那么用户就一直要等着邮件发送成功了&#xff0c;…

【SQL实验】触发器

下载素材文件”tsgl”、“成绩管理”,将tsgl.bak和成绩管理.bak数据库还原到库中【导入操作在之前的文章中详细讲过】 触发器 1、为图书表设置更新触发器&#xff0c;根据总编号来更新书名、作者、出版社、分类号和单价(根据总编号找到相应记录&#xff0c;然后更新书名、作者…

Win10系统Docker+DeepSeek+ragflow搭建本地知识库

文章目录 1、安装ollama1.1 下载1.2 安装1.3 cmd命令行测试安装成功1.4 拉取模型2、安装ragflow2.1 下载项目2.2 通过docker拉取镜像安装2.3 查看docker日志是否安装成功3、模型配置3.1 第一次登录需要注册3.2 模型添加4、知识库配置4.1 创建知识库4.2 上传文档4.3 解析5、聊天…

redis的应用,缓存,分布式锁

1.应用 1.1可以用作缓存 作用&#xff1a;提交数据的查询效率&#xff0c;减少对数据库的访问频率 什么数据适合放入缓存 1.查询频率高&#xff0c;修改频率低 2.对安全系数比较低 如何实现 Service public class DeptServer {Autowiredprivate DeptMapper deptMapper;Auto…

springboot整合 xxl-job

文章目录 一、xxl-job是什么二、使用步骤 1. 下载并运行管理端代码2. 访问管理页面&#xff0c;确认是否启动成功3. 配置执行器【在自己的springboot项目中配置】4. 在页面上创建执行器和任务&#xff0c;与项目中绑定 总结参考 一、xxl-job是什么 XXL-JOB 是一个分布式任务调…

Jenkins 环境搭建---基于 Docker

前期准备 提前安装jdk、maven、nodeJs&#xff08;如果需要的话&#xff09; 创建 jenkins 环境目录&#xff0c;用来当做挂载卷 /data/jenkins/ 一&#xff1a;拉取 Jenkins 镜像 docker pull jenkins/jenkins:lts 二&#xff1a;设置 Jenkins挂载目录 mkdir -p ~/jen…

小米路由器 AX3000T 降级后无法正常使用,解决办法

问题描述 买了个 AX3000T 路由器&#xff0c;想安装 OpenWRT 或者 安装 Clash 使用&#xff0c;看教程说是需要降级到 v1.0.47 版本。 结果刷机之后路由器无法打开了&#xff0c;一直黄灯亮&#xff0c;中间灭一下&#xff0c;又是黄灯长亮&#xff0c;没有 WIFI 没有连接。以…

金融学-金融机构

前言 金融机构在金融体系运行体系运营中起着不可获缺的关键作用.如规则的制定与监管-中央银行,体系的运营证券公司,体系的供贷的参与者金融中介.本章将用一种说明我们的金融体系是怎样改进经济效率的经济分析,来讲述相关金融机构 金融结构的经济学分析 世界各国的金融体系在…

公网远程家里局域网电脑过程详细记录,包含设置路由器。

由于从校内迁居小区,校内需要远程控制访问小区内个人电脑,于是早些时间刚好自己是电信宽带,可以申请公网ipv4不需要花钱,所以就打电话直接申请即可,申请成功后访问光猫设备管理界面192.168.1.1,输入用户名密码登录超管(密码是网上查下就有了)设置了光猫为桥接模式,然后…

002 SpringCloudAlibaba整合 - Feign远程调用、Loadbalancer负载均衡

前文地址&#xff1a; 001 SpringCloudAlibaba整合 - Nacos注册配置中心、Sentinel流控、Zipkin链路追踪、Admin监控 文章目录 8.Feign远程调用、loadbalancer负载均衡整合1.OpenFeign整合1.引入依赖2.启动类添加EnableFeignClients注解3.yml配置4.日志配置5.远程调用测试6.服务…