Py学习  »  chatgpt

连玉君:我与ChatGPT聊了一个月

连享会 • 1 月前 • 37 次点击  

👇 连享会 · 推文导航 | www.lianxh.cn

连享会课程 · CGE 专题:理论与实操

作者: 连玉君 (中山大学)
邮箱: 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

  • 专题:Python-R-Matlab
    • 如何在 R 中安装并使用 chatgpt 包?
  • 专题:工具软件
    • Stata:ChatGPT你能帮我干点啥?

New! Stata 搜索神器:lianxh 和 songbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
  . ssc install lianxh
  . ssc install songbl
👉  使用:
  . lianxh DID 倍分法
  . songbl all

🍏 关于我们

  • 连享会  ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/168125
 
37 次点击