👇 连享会 · 推文导航 | www.lianxh.cn
连享会课程 · 2024 暑期班
作者: 连玉君 (中山大学)邮箱: arlionn@163.com
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」 。或直接长按/扫描如下二维码,直达原文:
目录
0. 简介
1. 测试 A:根据关键词写短文
2. 测试 B:中文修改和润色
3. 测试 C:中文翻译为英文
4. 测试 D:口语转书面语
5. 测试 E:解读代码,写说明文档
5.1 ChatGPT 能读懂代码吗?
5.2 让 ChatGPT 自动写帮助文件
5.3 转译成 Python 代码
5.4 简要结论
6. 一些思考
其一:ChatGPT 对文字工作者的冲击
其二:ChatGPT 对于程序员的冲击
其三:ChatGPT 会用在何处?
其四:ChatGPT 能否代替搜索引擎?
7. 结语
8. 相关推文
导言:
这篇推文 1 个月前就已经基本上完成了,我一直放着,时不时地改一下,然后继续使用 ChatGPT,再返回来改这篇推文。如此反复,……。我的纠结之处在于:一个新东西来了,貌似很强大;我们感觉很兴奋,但也有不少隐忧。比如,我在思考:在 ChatGPT 时代,记忆力还重要吗?还需要花那么时间学英语吗?我还要撅着屁股一篇一篇地查文献、读文献吗?
今天扫了一眼知乎,发现很多人在讨论「ChatGPT」。形如我者甚多!
0. 简介 连续试用了一段时间 ChatGPT,谈谈我的感受和想法。
先说说它带给我的惊艳感受:
我写了一个新的 Stata 程序,把代码扔给 ChatGPT,它很快帮我写好了 .sthlp 格式的帮助文件,基本上无需太多修改。它完全读懂了程序的思路,也补充说明了一些关键命令和函数的作用,对用户很贴心。
上初一的儿子要参加一个英语演讲比赛。我们列出提纲后,让 ChatGPT 协助写一篇限时三分钟的演讲稿。它给出了 7-8 种不同风格,有煽情的、幽默的、凝重的。最重要的是,按照正常语速读下来,每一篇的用时都没有超过 3 分钟。
再说说它不靠谱的地方:
让它帮忙统计一下美国历年 IPO 的数量,整理成表格。形式上的工作它完成的都很好,但每次给出的统计数据都多少有些偏差。当然,这也不能完全怪 ChatGPT,因为它本质上是从互联网上找资料,整理后写成文本发给我。它自己并不单独创造知识。 因此,我做了一系列测试,以便了解它能干什么,不能干什么,以及我该更好地适应 ChatGPT 来袭的时代。
简单测试后发现:
让他写个书评、故事续写 、某个公司或老城市的介绍性文字,做得都非常好。语句通顺,逻辑清晰。风格和内容方面,没有太多出彩的地方,但也挑不出大毛病。让它翻译一些有一定复杂度的中文 ,包括谚语、成语等,也能做得很好,有些情况下比百度翻译和 google 翻译给出的结果更合理一些。让它把自己翻译好的中文重新翻译成中文,基本上能保持 90% 以上的内容和意思,但成语、谚语等基本上没法还原。 让它解读 Stata 代码,写代码说明文档 ,做得比我预期的要好,甚至可能比我自己写的还要好一些。不过,这需要在提问过程中,尽量列出要点。此外,可以在不断追问中让它完善答案。代码转译 。我让它把一段刚写的 Stata 代码转译为 R 和 Python 代码,以实现相同的功能,都能快速给出答案,但这些代码虽然思路上没有问题,但运行中经常出现各种 bug。这意味着,它只是按照逻辑编写了一段「伪代码」,性质上是在进行文字编辑和代码整合,但不会进行测试和 debug。
1. 测试 A: 根据关键词写短文 第一轮: 10:01
第二轮: 10:02
修改后的文稿基本上可以直接使用了 (原来,啰嗦的文字是这样产生的)。
第三轮: 10:13
十分钟后,我再次发问,给出的关键词完全相同,但问题做了一点点修改。得到的答复很不一样:
第四轮: 10:17
又过了几分钟,我把第一轮的问题原封不动地又问了一遍,ChatGPT 的语言表述发生了比较明显的变化:
2. 测试 B: 中文修改和润色 我觉得不太满意,又重新提问,但要求更具体了。这次,它的表现还不错。
3. 测试 C: 中文翻译为英文 我先让 ChatGPT 把一段中文翻译成英文,然后再让它把自己的英译文翻回中文。整体上表现也不错。
ChatGPT 自己造了一个成语:「千里之提,始于足下」,有点意思。
4. 测试 D: 口语转书面语 背景: 下面这段文字是我在 Stata 寒假班中 答疑 时 (https://gitee.com/arlionn/PX/wikis/2023寒假班/初级班-2023寒假/初级班-Day1-答疑.md),直接通过讯飞语音转换出来的表述,很多口语化的表述,也夹杂着不少口头语,比如,「厄,啊,……」,也包含了不少错别字,比如「公私财物->公司财务;心水->薪水」。我想让 ChatGPT 帮我改写成书面语。它完成的不错。所以,日后开会时,可以用录音笔或者语音输入法记录,然后让 ChatGPT 帮我们转化为正式的书面文稿。
5. 测试 E: 解读代码,写说明文档 说明: 下面这段代码是这两天我刚写的,存放在我的本地电脑上。我没有通过邮件或微信跟任何人分享过这个代码。我想测试一下 ChatGPT 能否读懂这段代码,并帮我写个解读代码的说明文档 (类似于帮助文件或 readme 文档)。整体看来,它完成的不错。
5.1 ChatGPT 能读懂代码吗? 能否帮我分析一下如下 Stata 代码,写一段 200 字左右的文字来介绍这段代码的功能和基本思路。
*!v1 * 2023/2/9 2:05 * Yujun, Lian, arlionn@163.com *-Goal: protect special 'family name' and trace-back * . compact_name v // van Putten --> van~~Putten * . compact_name v, back // van~~Putten --> van Putten *cap program drop compact_name program define compact_name, rclass version 8 syntax varlist(min=1) [, Add(string) Back Symbol(string) Generate(string)] foreach var of varlist `varlist'{ if "`generate'" == ""{ local genrep "replace" // generate or replace local varname "`var'" } else{ *-confirm the validity of variable name cap noi confirm new variable `generate' if _rc{ exit 198 } else{ local genrep "generate" local varname "`generate'" } } if `'"`symbol'"' == ""{ local symbol "~~" // symbol used to substitute blank } if "`back'" != ""{ local nchanges = 0 qui `genrep' `varname' = subinstr(`var', `"`symbol'"', " ", .) qui count if strpos(`var', `"`symbol'"') local nchanges = `nchanges' + r(N) exit } #delimit ; local list `" "van de" "von der" von van de mc mac la st. st "`add'" "' ; #delimit cr local nchanges = 0 foreach name in `list'{ qui `genrep' `varname' = subinstr(`var', " `name' ", `" `name'`symbol'"', .) qui count if strpos(`var', "`name'") local nchanges = `nchanges' + `r(N)' } dis "(`nchanges' real changes made)" return scalar N = `nchanges' } end
这段 Stata 代码是一个定义程序,名为 compact_name,它的主要目的是保护特殊的姓氏,并可以进行追踪。程序允许用户输入一个变量列表,并通过以下方法对其进行处理:使用一个特定的符号替换姓氏中的空格,或将已经替换的空格还原。
代码的基本思路是,先确定是生成新变量还是替换原有变量,并确定用于替换空格的符号。接着,对于列表中的每个姓氏,使用 subinstr()
函数替换其中的空格。最后,统计并输出实际完成的替换次数。
总的来说,这段代码是一个很好的实例,演示了如何在Stata中定义程序并处理字符串。
追问: 能否进一步解释一下上述代码中你认为比较重要的函数或语句,以便帮助那些 Stata 初学者更快地理解这段代码。
ChatGTP-02:
上述代码实现了一个 Stata 自定义函数 compact_name,它的主要目的是对输入的字符型变量(或者多个字符型变量)的家族名称进行保护,并且支持还原操作。具体来说,如果输入的字符串包含 "van de"、"von der"、"von"、"van"、"de"、"mc"、"mac"、"la"、"st."、"st"(这些名称可以通过参数 Add 来增加),那么这个函数就会将这些名称的中间空格替换为符号 "~~",如果需要还原,可以使用参数 Back 来指定。
代码的主要思路是:
利用 foreach
循环语句,遍历需要处理的字符串变量;
使用 confirm
函数判断新生成的变量名是否有效;
如果 Back
参数被指定,则使用 subinstr
函数进行还原操作;
如果没有指定 Back
参数,则循环判断字符串中是否包含待保护的名称,如果包含则使用 subinstr
函数进行保护;
最后使用 dis
语句输出实际执行的修改次数,并返回该数值。
重要的函数与语句:
foreach
:Stata 循环语句,可以对数据集中的多个变量进行批量处理。confirm
:Stata 内置函数
继续
那么其他几个函数也有必要了解一下。
subinstr()
:这是一个 Stata 内置函数,可以在字符串中替换一个子串。该函数有三个参数:需要处理的字符串,需要被替换的子串,替换后的子串。在代码中,这个函数用于把 "van de", "von der" 等这样的姓氏中的空格替换成双波浪线,或者把双波浪线还原成空格。
count if
:这是 Stata 的一个命令,用于统计符合条件的数据记录数。在代码中,这个命令用于统计空格替换操作对数据的影响。
strpos()
:这也是一个 Stata 内置函数,用于检测字符串中是否包含某个子串。在代码中,这个函数用于判断给定的字符串是否包含 "van de","von der" 等这样的字符串。
这就是该代码的功能和主要思路,包括如何使用 Stata 的函数和命令来完成数据处理。理解这些知识点对于更好地理解代码是非常重要的。
5.2 让 ChatGPT 自动写帮助文件 5.3 转译成 Python 代码 接下来,我们再让它写个 Python 风格的帮助文件:
5.4 简要结论 经过两天的测试,个人认为,对于一个高校教师,ChatGPT 大体上可以协助我们在如下几个方面节省不少时间:
简单资料整理和文档撰写。可以给他列个主题和粗略提纲,让他帮忙完善。比如,协助编写代码的 readme 文档,某些专业术语和研究方法的说明性文档等。这在日常教学课件的制作中,可以帮我们节省很多时间。就我所知,国外已经有不少老师借助 ChatGPT 制作幻灯片。此外,对于喜欢写 Blog 的同仁而言,我们可以用讯飞语音输入法口述推文初稿,插入代码和主要结果,然后让 ChatGPT 帮忙完善和修改。 英文翻译和润色。这个功能很稳定,效果也不错。估计日后大家对人工翻译和润色服务的需求会有所下降。
6. 一些思考 其一:ChatGPT 对文字工作者的冲击 我把 测试 D: 口语转书面语 的截图发给了一位朋友,想听听他的看法。他的回复如下:
一位资深传媒从业者的顾虑:作为工具确实有用。但问题是,对学习文字的人,尤其是学生来说,文字水平将越来越低。是个大问题。
当我个人却没有那么悲观。我的看法如下:
我认为,不必过分担心这个问题。因为,电饭煲、洗衣机、洗碗机 …… 的发明,并没有降低我们做家务的能力,或者,从更一般的意义上来讲,这些东西的发明并没有降低我们的生活能力。
ChatGPT 的表现很大程度上取决于我们怎么提问,这就会倒逼使用者不断思考自己到底想要什么。
在这个过程中,我们思考的深度会提高。很多东西,一旦想明白了,有了深度,写清楚反而是水到渠成。
很多人之所以写不清楚,是因为读的少,思考的少,没有想法。换言之,把一个只有 30 分干货的东西反复打磨,修改,最终最多只能得到 50 分。但是,如果借助 AI 技术,可以节省很多时间,精力就可以放在大量阅读和思考上。写东西时,可能选题就已经可以达到 60 分了,列出合理的提纲又可以得到 20 分,再加上 AI 的打磨,就可以得到一个高分的成品了。
华为,苹果等顶级公司,都专注于系统设计和理念,很多关于技术细节和实现方面的工作都外包出去了,让自己的组织有更多弹性和灵活性。
其二:ChatGPT 对于程序员的冲击 Note: ^=^
这部分内容我偷懒了,90% 以上的文字都是 ChatGPT 完成的。
其三:ChatGPT 会用在何处? 我昨晚和上初一的儿子聊了一个多小时,天马星空地猜想着 ChatGPT 日后可能会在哪些地方现身。
场景一:智能同声翻译器。 未来可能会有一种小型智能翻译器,无论我们去往哪个国家,只需说出母语,该翻译器即可快速将语音转化为文字,进行润色后翻译成外语,并以我们的语音模仿方式播放出来。进一步改进,例如使用技术屏蔽母语声音,将转换过程的时差降至最小(例如,小于0.01秒),以使对方认为我们在用外语与他交流。同样的,对方讲话时,反向流程也会生效,我们的隐形耳机可以听到流畅的母语。对于口音不好或表达不清的用户,这个智能翻译器就会显得更有用了。小孩基本上不用再学习外语了,只需要专注于训练自己的思维能力即可。(注:这段话是经由 ChatGPT 修改后完成的,它的工作量约占 10-20%。)
场景二:软件插件。 在很短的时间内,大多数的 Office 套装软件都会安装一个 ChatGPT 或类似功能的插件,以便提供弹出菜单中的「翻译」、「修改」、「改写为学术论文风格」等选项。此外,在 RStudio、VScode 和 Jupyter Notebook 等软件中安装 ChatGPT 插件(VScode 上已经有了),可实现代码优化、错误检查、帮助文档撰写等功能。(注:这段话是经由 ChatGPT 修改后完成的,它的工作量约占 10%。)
场景三:智能病历生成。 智能设备可以自动记录医生和病人的问诊和查房谈话内容,并在医生修改和确认后生成病历。随着时间的累积,AI 病历的准确性和可靠性将不断提高。医疗行业的效率和质量可以得到大幅提升,因为医生不再需要花大量时间手写病历。此外,AI 病历还可以提供更细致和准确的病史记录,从而帮助医生更好地诊断和治疗病人。(令人担心的是,长此以往,会不会有很多医生失业?) (注:这段话是经由 ChatGPT 修改、补充后完成的,它的工作量约占 60 %,我只是提供了大致的想法。)
场景四:智能简历和广告语 我们只需要提供某位学者的主页,一些他的 Google 学术主页等网址,ChatGPT 就可以快速按要求 (如风格、字数、他在哪些期刊发表了论文、教授哪些课程等),它就可以快速生成「嘉宾介绍」。同样,给定不同的需求,可以让 ChatGPT 写出多种不同风格的广告语
其四:ChatGPT 能否代替搜索引擎? 我这个测试有点难度。
大致背景如下:我突然想起小学四年级在同学家读过的一篇小说,至今印象深刻。多年以来,我总会时不时地想起这篇小说,揣摩作者到底想要传达哪些深层的思想。不过,我只记得大致情节,至于小说的作者和篇名之类的,完全想不起来。下面是测试过程:
我改换了五种方式向 ChatGPT 提问,但一直没有得到有效的答案 (ChatGPT 的回答我没有列出来,大致的意思是它找不到,让我提供更多的信息给它。):
我又试了 Google 搜索,依旧无果。最后,只好转用百度。经过三次修改关键词,最终用关键词「印度作家 小说 女孩 陪葬 面纱 火坑 雨」找到了答案——「摩诃摩耶」,是印度诗人泰戈尔的短篇小说,创作于 1892 年。
我感觉自己可能过度使用,甚至误用了 ChatGPT。下面的问答或许可以证实我的猜测:
7. 结语 Note: 下面这段文字完全是我自己写的,没有让 ChatGPT 参与。
总体上,ChatGPT 是很好的助手,但使用效果取决于我们如何向它 发问 和 追问 。在不断追问过程中,它给出的回应越来越接近我想要的东西。同时,在这个过程中,它的那些宽泛的回答会给我很多启发,让我在下一轮追问中给出更准确的关键词和限定条件。
还有一个奇妙甚至有点让我担心的感受。
连续两天跟 ChatGPT 互动,我自己写东西的时候会时不时让它帮我修改,我的思考模式会被它「带节奏」,以至于当我大比例使用它给出的文字时,会偶尔产生我也是一个 AI 机器人的感觉。我也会时不时地重新琢磨文字表述,以免让人误解我正在写的文字是由 ChatGPT 生成的。这些不断出现的错觉和莫名的提防心态让人很不舒服。
有些事儿无法阻止,索性顺势而为吧。
最后,给大家出个选择题。
给定关键词「ChatGPT, AI, 担心, 体验, 乐观, 改变学习思路 」,下面的两句话一句是我写的,一句是 ChatGPT 写的,你能分辨出那句是它写的吗?
A. 我很担心 ChatGPT 和 AI 带来的冲击,但体验一番后,我还是比较乐观的。以后要改变我的学习思路了。 B. ChatGPT AI 担心影响用户体验,因此努力保持乐观态度并不断改变学习思路。
8. 相关推文 Note:产生如下推文列表的 Stata 命令为: lianxh ChatGPT
安装最新版 lianxh
命令: ssc install lianxh, replace