玩转ChatGPT:名单排序

news2024/11/18 17:32:20

一、写在前面

最近在文秘工作中,碰到一个名字排序的问题,大概的规则:

(1)按照第一个汉字的首字母的英文单词排序,从A-Z;

(2)若第一个字的首字母一致,则比较二个字的首字母,同样是A-Z;

(3)若第二个字的首字母一致,则比较三个字的首字母,同样是A-Z;

想着GPT能否直接生成?下面我们来试一试:

二、尝试过程

(1)先用GPT随机生成30个名字

随机名单如下(这些名字都是随机生成的):

李威廉
张曼
王子
赵星辰
刘晓雨
孙晨曦
周慧
吴子
郑嘉仪
冯雅婷
陈思源
褚建国
卫子轩
蒋昊
沈冰
韩晓飞
杨天佑
朱晓
秦婉
何宇翔
钱晓明
孟春花
黄宇
高晨
杜鸿
文雅琪
赖志强
潘嘉
郭子涵
曾晓

(2)先用GPT-4直接进行排序(不开插件)

写一个咒语:请给{名单}做一个排序,要求:(1)按照第一个字的首字母的英文单词排序,从A-Z;(2)若第一个字的首字母一致,则比较二个字的首字母,同样是A-Z;(3)若第二个字的首字母一致,则比较三个字的首字母,同样是A-Z;

名单为:{};

输出如下:

 可以看到,排序是混乱不堪的,比如第28名,明显不是最后一名。个人觉得可能的两个原因:首先,GPT的数学能力公认的不强;其次,咒语可能写的不好,直接让TA一步到位地输出结果,很容易出错(这个在吴恩达的教程有提到过)。

所以,下一步,我们针对性地进行尝试:

(3)使用Wolfram插件

咒语同上:

可以看到,我的Wolfram插件不知啥原因,并没有正常工作。重复了几次也没有,因此,我放弃了这个选项。

(4)优化咒语(不使用插件)

写一个咒语:请给{名单}做一个排序,要求:(1)按照第一个字的首字母的英文单词排序,从A-Z;(2)若第一个字的首字母一致,则比较二个字的首字母,同样是A-Z;(3)若第二个字的首字母一致,则比较三个字的首字母,同样是A-Z;

名单为:{};

请一步一步地分析,不急着输出答案。

建议步骤:(2)先把中文名字转换成汉语拼音首字母在排序,例如杜鸿转换成DH,第一个字的首字母是D,以此类推;(2)按照第一个字的首字母的英文单词排序,从A-Z;(3)若第一个字的首字母一致,则比较二个字的首字母,同样是A-Z;(4)若第二个字的首字母一致,则比较三个字的首字母,同样是A-Z。

神奇的事情发生了,GPT-4直接说做不了,建议用Python:

然后,我退而求其次,使用GPT-3.5:

是按照步骤来了,但是每一部都有错漏:

 第一个的首字母都提取错了;

 第二步的排序也有问题,再下面就不用看了。

看来GPT在解决这类问题还是不太擅长。

(5)使用Python实现

按照GPT的建议,使用下面代码:

from pypinyin import lazy_pinyin

# 名单

names = ["李威廉", "张曼", "王子", "赵星辰", "刘晓雨", "孙晨曦", "周慧", "吴子", "郑嘉仪", "冯雅婷", "陈思源", "褚建国", "卫子轩", "蒋昊", "沈冰", "韩晓飞", "杨天佑", "朱晓", "秦婉", "何宇翔", "钱晓明", "孟春花", "黄宇", "高晨", "杜鸿", "文雅琪", "赖志强", "潘嘉", "郭子涵", "曾晓"]

# 转换为拼音首字母

names_pinyin = [(name, ''.join([p[0][0].upper() for p in lazy_pinyin(name)])) for name in names]

# 按照拼音首字母排序

names_pinyin.sort(key=lambda x: x[1])



# 输出排序后的名字

for name, _ in names_pinyin:

    print(name)

看看输出的结果,大体上应该是对的:

 当然,使用这个规则有一定缺陷,比如“吴子”和“王子”都是“WZ”,又如何排序呢?又比如后面的“卫子轩”是“WZX”,比前面多了一个“X”,又改怎么排?因此,还需要继续优化规则才行。

所以,我想试一试用笔画来排序。

(6)使用笔画排序

写一个咒语:请给{名单}做一个排序,要求:(1)按照第一个汉字的笔画数目排序,从小到大;(2)若第一个汉字的笔画数目一致,则比较二个字的笔画数目,同样是从小到大;(3)若第二个汉字的笔画数目一致,则比较三个字的笔画数目,同样是从小到大;(4)若名字只有两个汉字,则它的第三个汉字定义为0画;

名单为:{};

(a)GPT-4直接说做不了,就算是Wolfram插件也不行,给了Pyhton代码,后面我再使用;

(b)给GPT-4联网,神奇的事情发生了,TA居然去联网去找笔画:

 还不错,就是有点慢,不对,是很慢,因为TA是一个字查的,笑死我了:

工作量实在太大,TA自己也放弃了,这一策略不行。

(c)尝试GPT-3.5:

 思路是对的,但是笔画数错了。

(d)换回Python:

import pypinyin

import unicodedata

names = ["李威廉", "张曼", "王子", "赵星辰", "刘晓雨", "孙晨曦", "周慧", "吴子", "郑嘉仪", "冯雅婷", "陈思源", "褚建国", "卫子轩", "蒋昊", "沈冰", "韩晓飞", "杨天佑", "朱晓", "秦婉", "何宇翔", "钱晓明", "孟春花", "黄宇", "高晨", "杜鸿", "文雅琪", "赖志强", "潘嘉", "郭子涵", "曾晓"]

def stroke_count(char):

    return unicodedata.east_asian_width(char)

def get_stroke_count(name):

    return [stroke_count(char) for char in name]

names_strokes = [(name, get_stroke_count(name)) for name in names]

names_strokes.sort(key=lambda x: (x[1][0], x[1][1] if len(x[1]) > 1 else 0, x[1][2] if len(x[1]) > 2 else 0))

for name, _ in names_strokes:

    print(name)

看看结果:

报错了:TypeError: '<' not supported between instances of 'int' and 'str'

GPT给的解释在于:计算汉字的笔画数是一个复杂的问题,需要一个完整的汉字-笔画数映射表。这个映射表可以从 Unicode 字符数据库(UCD)或其他类似的数据源获取。我建议你寻找一个包含汉字-笔画数映射表的库,或者使用一个外部的数据源,比如 Unicode 字符数据库(UCD)。

我问TA Unicode 字符数据库(UCD)如何调取?

GPT说:Unicode 字符数据库(UCD)是一个包含了所有 Unicode 字符的各种属性的数据库,包括字符的名称、分类、大小写映射、笔画数等。然而,UCD 并没有提供一个直接的 API 或者函数库来查询这些属性。你需要下载 UCD 的数据文件,然后在你的程序中解析这些文件。

在 Python 中,你可以使用 unicodedata 库来查询一些基本的 Unicode 属性,但是这个库并不包括笔画数。对于笔画数,你可能需要找到一个专门的库,或者自己创建一个汉字到笔画数的映射表。

我建议你查找一些专门的汉字处理库,或者使用一些在线的 API 服务。例如,汉典网(zdic.net)提供了一个查询汉字笔画数的在线服务,你可以在你的程序中调用这个服务。但是,请注意,这可能需要你对网络编程和网页抓取有一些基本的了解。

嗯,听起来很麻烦,我就不继续弄了。

三、关于Token

网上也有测试,就是让GPT把句子倒着输出,TA是不能实现的:

比如说:请按照下面规则进行转换,例如{TA是不能实现的}换成{的现实能不是AT},那么{就是让GPT把句子倒着输出}会转换成什么?

 发现了吧,TA其实是理解规则了“规则似乎是将整个句子的字符顺序反转”,但是,结果是不对的,“输出着倒子句把TPG让是就”,可以看到,“输出”并没有转换过来。因为在GPT看来,“输出”是一个字符。也就是Token,在计算机科学和语言处理中,"Token"(标记)是一个非常基础的概念,它通常指的是一段程序、文本或语句中的一个独立的部分,这个部分在语义上是有意义的。

例如,句子"The cat sat on the mat."可以被分割成这样的Token:["The", "cat", "sat", "on", "the", "mat", "."]。这个过程被称为Tokenization(标记化或分词)。

四、写在最后

基于上述原因,GPT在处理这类问题的时候,往往比较懵逼。可能GPT-4也意识到这个问题,直接推荐用Python来解决吧。当然,TA的数学能力也有待加强,而且TA不能自己运行代码,未来看看使用Code interpreter插件能否解决类似问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【920信号与系统笔记】第三章 连续信号的正交分解

连续信号的正交分解 3.1引言3.3信号表示为傅里叶级数(FS)三角傅里叶级数1. 本质展开式1展开式2展开条件-狄利克雷条件分量概念补充 指数傅里叶级数使用条件形式1&#xff08;按连续信号的正交分解定义展开&#xff09;形式2&#xff08;由三角函数形式的傅里叶级数推导&#xf…

力扣笔记(每日随机一题)——最佳买卖股票时机含冷冻期

问题&#xff08;中等&#xff09; 给定一个整数数组prices&#xff0c;其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff09;: 卖出股票后&a…

Unity HybridCLR + Xlua + Addressable 要点记要

接入缘由 老工程原本是C#&#xff0c;想做热更&#xff0c;于是接入了Xlua和Addressable。由于工程老&#xff0c;人手也不够&#xff0c;只是新代码使用Xlua&#xff0c;老功能&#xff08;尤其是核心战斗还是C#&#xff09;。大半年后觉得并不能达到预期需求。于是通过再接入…

vue-element-admin项目学习笔记(4)路由分析二:动态路由及permission.js

路由模块非常重要&#xff0c;自己基于这个框架进行开发&#xff0c;这个必须吃透&#xff01;&#xff01; 前情回顾&#xff1a; vue-element-admin项目学习笔记&#xff08;1&#xff09;安装、配置、启动项目 vue-element-admin项目学习笔记&#xff08;2&#xff09;main.…

改KendoReactUI组件,实现多个子元素的样式不一样

before after 问题描述 使用KendoReact RadioButton 组件&#xff0c;当用户选中当前项时需要显示不同颜色&#xff0c;试图通过找到KendoUI中对应的class name&#xff0c;然后修改这个class name下面的css来达到目的&#xff0c;但不起作用解决办法 用js控制style核心代码 …

华为OD机试之查找众数及中位数(Java源码)

查找众数及中位数 题目描述 众数是指一组数据中出现次数量多的那个数&#xff0c;众数可以是多个。 中位数是指把一组数据从小到大排列&#xff0c;最中间的那个数&#xff0c;如果这组数据的个数是奇数&#xff0c;那最中间那个就是中位数&#xff0c;如果这组数据的个数为偶…

从0开始搭建react项目(函数组件)

目录 项目搭建步骤 本地开发环境 脚手架构建项目 关联Git仓库 strictMode 严格模式 路由配置 路由传参 路由守卫 数据绑定 生命周期 父子组件通信 redux持久化 安装Sass 安装postcss-pxtorem&#xff08;移动端项目&#xff09; 安装axios 环境变量 本地代理 …

直播预告:CoremailHVV经验分享与重保整体解决方案发布

面对更具有目的性、针对性的网络攻击压力&#xff0c;重保既是抵抗攻击的重要举措&#xff0c;也是数字经济时代下企业发展的刚需。 正值重保期&#xff0c;企业在面对多样化的攻击手段、持续化的攻击行为、剧增化的攻击危害&#xff0c;应该如何应对重保大考&#xff1f; 6月1…

供应链安全

供应链安全 目录 文章目录 供应链安全目录本节实战可信任软件供应链概述构建镜像Dockerfile文件优化镜像漏洞扫描工具&#xff1a;Trivy检查YAML文件安全配置&#xff1a;kubesec准入控制器&#xff1a; Admission Webhook准入控制器&#xff1a; ImagePolicyWebhook关于我最后…

openpnp - 底部相机支架的制作

文章目录 openpnp - 底部相机支架的制作概述END openpnp - 底部相机支架的制作 概述 前几天总结了底部相机校验通不过的原因(openpnp - 底部相机矫正(subject not found)的原因总结), 并且可以校验通过了. 好景不长, 在校验通过的第三天(中间再穿插做其他事情), 从头做了一次…

【ArcGIS Pro二次开发】(38):清理字段值(空格、空值)

由于一些不规范的输入&#xff0c;或是其它数据转换而来&#xff0c;要素类或者独立表的字段值经常含有空值、空格等影响数据质量的内容。 这个工具的目的就是清理、转换这些字段内容&#xff0c;提高数据质量。 一、要实现的功能 如上图所示&#xff0c;点击【清洗字段值】按…

springboot+vue+java仓库管理系统_0r36w

部门管理员&#xff1a; 申购入库&#xff1a;发起申购&#xff0c;进行入库申请。 调拨申请&#xff1a;发起资产调拨的申请以及查看申请的详情信息。 出库管理&#xff1a;查看调拨的详情信息&#xff0c;可以进行资产的申请报废以及申请维修。 资产报废查询&#xff1a;查看…

薛定谔maestro 安装

【1】先删除之前不能用的文件包 【2】tar -xvf 解压包 进行解压 【3】cd 解压出来的文件下 【4】sudo ./INSTALL 【也可以不用sudo&#xff0c;我的电脑不知道上面问题&#xff0c;需要用sudo&#xff0c;否则在之后创建生成文件夹的时候没有权限】 【5】根据操作一步一步…

电子行业 K 公司对接 Nexperia EDI 项目案例

项目背景 Nexperia 是一家全球领先的半导体制造商&#xff0c;专注于提供高性能、高可靠性和创新性的半导体解决方案。公司成立于2017年&#xff0c;是前飞思卡尔半导体业务的一部分&#xff0c;并在全球范围内拥有多个设计、研发和生产基地。 Nexperia 使用 EDI&#xff08;…

【VMware】虚拟机安装centos7

目录 一、创建虚拟机 1、自定义 2、选择需要安装的操作系统 3、选择虚拟机安装位置 4、选择处理器配置&#xff08;可先默认&#xff09; 5、设置虚拟内存&#xff08;一般4096&#xff09; 6、选择网络连接方式 7、选择I/O控制器 8、选择磁盘类型 9、选择磁盘 10、指定磁盘容…

真刑!几行代码端了整个教务系统。。

今天给大家伙分享一个网络安全的案例&#xff0c;程序员和网安同学都可以看看&#xff0c; 前言&#xff1a;本文中涉及到的相关漏洞已报送厂商并得到修复&#xff0c;本文仅限技术研究与讨论&#xff0c;严禁用于非法用途&#xff0c;否则产生的一切后果自行承担 漏洞成因 事…

佩戴舒适的蓝牙耳机哪款比较好用?佩戴舒适度最好的蓝牙耳机推荐

​关于蓝牙耳机佩戴舒适度及音质表现的问题&#xff0c;经常有很多小伙伴在问&#xff0c;或许大家更习惯用价格去界定一个蓝牙耳机的定位。本篇文章主要给大家介绍哪款蓝牙耳机比较好用&#xff0c;很值得入手的蓝牙耳机&#xff0c;一起来看看吧。 一、南卡OE蓝牙耳机&#…

知识小结——HTTP协议相关

目录 TCP/IP URI / URL HTTPS 总结时间&#xff1a; TCP/IP协议簇 对TCP的理解 对UDP的理解 HTTP&#xff08;超文本传输协议&#xff09;是什么&#xff1f; HTTPS&#xff08;安全超文本传输协议&#xff09;是什么&#xff1f; HTTPS的特点&#xff1a; HTTPS协议…

【Linux】linux下使用命令修改jar包内某一个文件中的内容并重新运行jar程序

linux下使用命令修改jar包内某一个文件中的内容并重新运行jar程序 一、背景描述二、vi命令编辑三、启动程序四、拓展--启动脚本 一、背景描述 需求&#xff1a;发现线上的 iotp-irsb-server-v1.0.0.2.jar 包中配置文件的日志级别配置错误&#xff0c;需要在线修改jar包中文件的…

99.实战网页构建定价部分-第二节

上节课我们完成的定价页面是这样的 上节课我们完成的定价页面是这样的 ● 首先我们先给卡片加上背景颜色 .princing-plan {background-color: #fdf2e9;border-radius: 11px;padding: 4.8rem; }● 之后我们调整下框子的大小和位置 ● 接着我们给基础价格再调价一项&#x…