找回密码
 立即注册
查看: 282|回复: 0

实战 | 用ChatGPT处理word表格数据:直接采用ChatGPt和 ...

[复制链接]

11

主题

2

回帖

101

积分

管理员

积分
101
发表于 2023-4-25 15:14:46 | 显示全部楼层 |阅读模式
摘要
为测试ChatGP在word文档表格的处理能力,本文列举直接使用ChatGPT和利用ChatGPT编写python脚本两种方式,均比较容易的实现了预定目标。文章介绍的利用ChatGPT进行文档处理的方法和思路可以指导大家利用AI工具提升效率。
提示:程序和数据可能比较长,可以略过,主要看和ChatGPT交互过程。

近期在工作中需要对一些表格数据进行分析处理,并生成统计文档。想到ChatGPT这个生产效率提升工具,想着就试试效果如何。
0. 测试数据生成

工作中的数据涉及很多个人信息,不适合直接进行测试,因此需要生成类似的数据进行调试。
Tips:在使用ChatGPT的过程中一定需要注意个人隐私和数据的保护,你提交的数据会被如何利用目前还不确定,已经和ChatGPT对话的数据泄露的报道,慎重点没有关系。
我把需要处理的表头提供给ChatGPT,让他给我生成随机数据,然后用他生成的数据进行测试。
输入:
  1. 按照下的数据格式,自动生成20数据
  2. 数据实例表格如下:
  3. | 序号 | 商品     | 发货地点     | 发货时间           | 预计收货时间       | 收货人   | 快递公司 | 快递公司电话 |
  4. | :--: | :------: | :----------: | :-----------------: | :-----------------: | :------: | :------: | :------------: |
  5. |  1   | 苹果     | 河南省郑州市 | 2023-04-20 08:30:00 | 2023-04-22 12:00:00 |  张三  | 顺丰快递 | 10086          |
复制代码
输出:
  1. | 序号 | 商品   | 发货地点       | 发货时间           | 预计收货时间       | 收货人   | 快递公司   | 快递公司电话 |
  2. | ---- | ---- | -------- | ------------ | ------------ | ------ | ------ | -------- |
  3. | 1    | 牙刷   | 广东省深圳市   | 2023-04-20 10:00:00 | 2023-04-21 18:00:00 | 张三   | 申通快递   | 95543    |
  4. | 2    | 洗发水 | 北京市海淀区   | 2023-04-20 10:30:00 | 2023-04-22 16:00:00 | 李四   | 圆通快递   | 95554    |
  5. | 3    | 衣服   | 上海市浦东新区 | 2023-04-20 11:00:00 | 2023-04-23 14:30:00 | 王五   | 中通快递   | 95555    |
  6. | 4    | 鞋子   | 广东省广州市   | 2023-04-20 12:00:00 | 2023-04-22 15:00:00 | 赵六   | 顺丰快递   | 95338    |
  7. | 5    | 手机   | 河北省石家庄市 | 2023-04-20 13:00:00 | 2023-04-23 10:00:00 | 张三丰 | 韵达快递   | 95546    |
  8. | 6    | 眼镜   | 江苏省南京市   | 2023-04-20 14:30:00 | 2023-04-23 12:00:00 | 李白   | 中通快递   | 95508    |
  9. | 7    | 水杯   | 四川省成都市   | 2023-04-20 15:00:00 | 2023-04-22 17:30:00 | 王实甫 | 顺丰快递   | 95338    |
  10. | 8    | 书包   | 河南省洛阳市   | 2023-04-20 16:00:00 | 2023-04-24 14:00:00 | 吕布   | 圆通快递   | 95554    |
  11. | 9    | 帽子   | 浙江省杭州市   | 2023-04-20 17:30:00 | 2023-04-24 11:30:00 | 张飞   | 韵达快递   | 95546    |
  12. | 10   | 耳机   | 广东省深圳市   | 2023-04-20 18:00:00 | 2023-04-21 21:00:00 | 关羽   | 中通快递   | 95555    |
  13. | 11   | 凉鞋   | 北京市朝阳区   | 2023-04-20 19:30:00 | 2023-04-23 16:30:00 | 赵云   | 申通快递   | 95543    |
  14. | 12   | 腰带   | 上海市长宁区   | 2023-04-20 20:00:00 | 2023-04-24 17:00:00 | 刘备   | 圆通快递   | 95554    |
  15. | 13   | 毛巾   | 广东省广州市   | 2023-04-20 21:00:00 | 2023-04-23 15:00:00 | 孙尚香 | 顺丰快递   | 95338    |
  16. | 14   | 餐具   | 河北省保定市   | 2023-04-20 22:00:00 | 2023-04-25 11:00:00 | 华佗   | 中通快递   | 95508    |
  17. | 15   | 头盔   | 湖北省武汉市   | 2023-04-20 23:00:00 | 2023-04-23 13:30:00 | 典韦   | 申通快递   | 95543    |
  18. | 16   | 手表   | 广东省深圳市   | 2023-04-21 00:30:00 | 2023-04-22 18:00:00 | 马超   | 韵达快递   | 95546    |
  19. | 17   | 手表 | 四川省成都市   | 2023-04-21 01:00:00 | 2023-04-24 16:30:00 | 刘备   | 圆通快递   | 95554    |
  20. | 18   | 游戏手柄 | 上海市浦东新区 | 2023-04-21 02:00:00 | 2023-04-22 21:00:00 | 王昭君 | 中通快递   | 95555    |
  21. | 19   | 牙膏   | 北京市海淀区   | 2023-04-21 03:30:00 | 2023-04-23 12:30:00 | 曹操   | 顺丰快递   | 95338    |
  22. | 20   | 茶杯   | 广东省广州市   | 2023-04-21 04:00:00 | 2023-04-24 10:00:00 | 关羽   | 韵达快递   | 95546    |
复制代码
输出数据很快,结果也很稳定,城市的省市关系,发货与收货的时间先后顺序,快递名称是常用的快递随机重复出现,人名多是张三李四,上面的例子比较特殊,一堆三国人物,快递电话是错的,但是不影响我后面的数据处理。
1. 直接使用ChatGPT进行处理。

我试图让ChatGPT统计收件人为关羽的快递,输入:
  1. 对上面生成的数据进行分析,请完整的统计“收货人”为“关羽”的所有数据,输出格式为:
  2. 由关羽的快递有{}件,分别是:
  3. {序号}.{发货地点}寄出的{商品},快递公司为{快递公司},收货人是{收货人},预计达到时间为{预计达到时间};
复制代码
第一次输出:
  1. 收货人为“关羽”的所有数据如下:
  2. 由关羽的快递有3件,分别是:
  3. 10.广东省深圳市寄出的耳机,快递公司为中通快递,收货人是关羽,预计达到时间为2023-04-21 21:00:00;
  4. 20.广东省广州市寄出的茶杯,快递公司为韵达快递,收货人是关羽,预计达到时间为2023-04-24 10:00:00;
  5. 17.四川省成都市寄出的手表,快递公司为圆通快递,收货人是关羽,预计达到时间为2023-04-24 16:30:00;
复制代码
其中一条是错误的,提醒他,输入:
  1. 你有一条数据是错误的,有一件物品的收件人并不是关羽
复制代码
再次输出:
  1. 非常抱歉,我犯了一个错误。我查看一下表格,发现其实序号为17的手表的收货人不是关羽,正确的收件人应该是刘备。那么由关羽的快递应该只有2件。非常感谢您的纠正。正确的输出如下:
  2. 由关羽的快递有2件,分别是:
  3. 10.广东省深圳市寄出的耳机,快递公司为中通快递,收货人是关羽,预计达到时间为2023-04-21 21:00:00;
  4. 20.广东省广州市寄出的茶杯,快递公司为韵达快递,收货人是关羽,预计达到时间为2023-04-24 10:00:00;
复制代码
我测试了很多次,基本上每次都是先错,提醒后一般能改正,但是也有时不能改正,基本上没有办法第一次就得到正确答案,特别是当数据很多的时候,多次提醒也没有办法得到正确的答案,最多的错误是漏统计。因此,个人觉得使用ChatGPT直接进行数据处理可行不高。原因有三:
一是数据保密性问题,很多数据涉及商业秘密和个人隐私;
二是数据量的问题,现在还不能实现将数千行数据通过对话框进行处理。
三是数据处理结果的不确定性,AI模型内部的机理现在还不明确,他的结果随机性问题,特别是当数据量大时,出错的概率显著增加,毕竟数千行的数据不可能进行人工校对。
因此,下面尝试通过让ChatGPT生成一个Python脚本实现我想要的功能。
2 使用ChatGPT生成python脚本进行处理

ChatGPT也能写程序,让他帮忙写一个python的脚本,像这样简单的脚本应该能胜任。
输入:
  1. 有如下一个表格,存储在名为“物流信息统计表.docx”的文件中。
  2. | 序号 | 商品   | 发货地点       | 发货时间           | 预计收货时间       | 收货人   | 快递公司   | 快递公司电话 |
  3. | ---- | ---- | -------- | ------------ | ------------ | ------ | ------ | -------- |
  4. | 1    | 牙刷   | 广东省深圳市   | 2023-04-20 10:00:00 | 2023-04-21 18:00:00 | 张三   | 申通快递   | 95543    |
  5. | 2    | 洗发水 | 北京市海淀区   | 2023-04-20 10:30:00 | 2023-04-22 16:00:00 | 李四   | 圆通快递   | 95554    |
  6. | 3    | 衣服   | 上海市浦东新区 | 2023-04-20 11:00:00 | 2023-04-23 14:30:00 | 王五   | 中通快递   | 95555    |
  7. | 4    | 鞋子   | 广东省广州市   | 2023-04-20 12:00:00 | 2023-04-22 15:00:00 | 赵六   | 顺丰快递   | 95338    |
  8. | 5    | 手机   | 河北省石家庄市 | 2023-04-20 13:00:00 | 2023-04-23 10:00:00 | 张三丰 | 韵达快递   | 95546    |
  9. 表格的行数不确定,请帮我编写一个python程序,实现以下功能,
  10. 完整的统计“收货人”为“关羽”的所有数据,生成以下文字:
  11. 由关羽的快递有{}件,分别是:
  12. {序号}.{发货地点}寄出的{商品},快递公司为{快递公司},收货人是{收货人},预计达到时间为{预计达到时间};
  13. 并将上述文字保存在“物流信息处理表.docx”中。
复制代码
第一次输出:好的,你可以使用Python中的docx库实现这个功能。只需要读取并遍历“物流信息统计表.docx”中的表格数据,找到符合条件的数据进行统计,最后将统计结果保存至“物流信息处理表.docx”文件中即可。以下是实现该功能的Python代码:
  1. import docx
  2. # 打开物流信息统计表
  3. doc = docx.Document("物流信息统计表.docx")
  4. # 初始化目标数据列表
  5. target_data = []
  6. # 遍历表格数据
  7. for row in doc.tables[0].rows[1:]:
  8.     # 获取每一行的数据
  9.     data = [cell.text for cell in row.cells]
  10.     # 判断是否是关羽的快递
  11.     if data[5] == "关羽":
  12.         target_data.append({
  13.             "序号": data[0],
  14.             "商品": data[1],
  15.             "发货地点": data[2],
  16.             "发货时间": data[3],
  17.             "预计收货时间": data[4],
  18.             "收货人": data[5],
  19.             "快递公司": data[6],
  20.             "快递公司电话": data[7]
  21.         })
  22. # 拼接要保存的文字
  23. text = "由关羽的快递有{}件,分别是:\n".format(len(target_data))
  24. for i, data in enumerate(target_data):
  25.     text += "{}.{}寄出的{},快递公司为{},收货人是{},预计达到时间为{};\n".format(
  26.         data["序号"], data["发货地点"], data["商品"], data["快递公司"], data["收货人"], data["预计收货时间"]
  27.     )
  28. # 保存拼接好的文字到文件中
  29. docx.Document().add_paragraph(text).save("物流信息处理表.docx")
复制代码
运行以上代码后,程序将会自动读取“物流信息统计表.docx”中的表格数据,并统计“收货人”为“关羽”的所有数据,最后将整理好的文字保存至“物流信息处理表.docx”文件中。但是,第一次运行时,系统报错,



输入:
  1. docx.Document().add_paragraph(text).save("物流信息处理表1.docx")
  2. AttributeError: 'Paragraph' object has no attribute 'save'
  3. 上面是系统报错,请修改程序
复制代码
输出:
非常抱歉,是我在代码中疏忽了。正确的保存方式应该是使用doc.save("物流信息处理表.docx"),并且需要在新建文档的时候添加一个段落,然后再将拼接好的文字添加到此段落中,如下所示:
  1. import docx
  2. # 打开物流信息统计表
  3. doc = docx.Document("物流信息统计表.docx")
  4. # 初始化目标数据列表
  5. target_data = []
  6. # 遍历表格数据
  7. for row in doc.tables[0].rows[1:]:
  8.     # 获取每一行的数据
  9.     data = [cell.text for cell in row.cells]
  10.     # 判断是否是关羽的快递
  11.     if data[5] == "关羽":
  12.         target_data.append({
  13.             "序号": data[0],
  14.             "商品": data[1],
  15.             "发货地点": data[2],
  16.             "发货时间": data[3],
  17.             "预计收货时间": data[4],
  18.             "收货人": data[5],
  19.             "快递公司": data[6],
  20.             "快递公司电话": data[7]
  21.         })
  22. # 新建一个文档,添加一个段落
  23. new_doc = docx.Document()
  24. new_doc.add_paragraph()
  25. # 拼接要保存的文字
  26. text = "由关羽的快递有{}件,分别是:\n".format(len(target_data))
  27. for i, data in enumerate(target_data):
  28.     text += "{}.{}寄出的{},快递公司为{},收货人是{},预计达到时间为{};\n".format(
  29.         data["序号"], data["发货地点"], data["商品"], data["快递公司"], data["收货人"], data["预计收货时间"]
  30.     )
  31. # 将拼接好的文字添加到段落中
  32. new_doc.paragraphs[0].add_run(text)
  33. # 保存文档
  34. new_doc.save("物流信息处理表.docx")
复制代码
运行以上代码后,程序将会自动读取“物流信息统计表.docx”中的表格数据,并统计“收货人”为“关羽”的所有数据,最后将整理好的文字保存至“物流信息处理表.docx”文件中。
输出的结果为:




并没有数据?突然想起来,“关羽”这个数据前后有多个空格。
输入:
  1. 上面的程序并没有输出正确的结果,可能是数据{收货人}前面后都包含空格,需要你删除空格,请重新改上述程序
复制代码
输出:
正在为您搜索:上面的程序、输出、正确的结果、数据{收货人}好的,你可以在代码中对“收货人”数据进行strip()操作以删除空格,这样就可以避免由于数据前后有空格导致统计出错的情况。修改后的代码如下:
  1. import docx
  2. # 打开物流信息统计表
  3. doc = docx.Document("物流信息统计表.docx")
  4. # 初始化目标数据列表
  5. target_data = []
  6. # 遍历表格数据
  7. for row in doc.tables[0].rows[1:]:
  8.     # 获取每一行的数据
  9.     data = [cell.text.strip() for cell in row.cells]
  10.     # 判断是否是关羽的快递
  11.     if data[5] == "关羽":
  12.         target_data.append({
  13.             "序号": data[0],
  14.             "商品": data[1],
  15.             "发货地点": data[2],
  16.             "发货时间": data[3],
  17.             "预计收货时间": data[4],
  18.             "收货人": data[5],
  19.             "快递公司": data[6],
  20.             "快递公司电话": data[7]
  21.         })
  22. # 新建一个文档,添加一个段落
  23. new_doc = docx.Document()
  24. new_doc.add_paragraph()
  25. # 拼接要保存的文字
  26. text = "由关羽的快递有{}件,分别是:\n".format(len(target_data))
  27. for i, data in enumerate(target_data):
  28.     text += "{}.{}寄出的{},快递公司为{},收货人是{},预计达到时间为{};\n".format(
  29.         data["序号"], data["发货地点"], data["商品"], data["快递公司"], data["收货人"], data["预计收货时间"]
  30.     )
  31. # 将拼接好的文字添加到段落中
  32. new_doc.paragraphs[0].add_run(text)
  33. # 保存文档
  34. new_doc.save("物流信息处理表.docx")
复制代码
运行以上代码后,程序将会自动读取“物流信息统计表.docx”中的表格数据,并统计“收货人”为“关羽”的所有数据,最后将整理好的文字保存至“物流信息处理表.docx”文件中。
这次能够输出正确的结果,任务完成。


3  对比分析
本来想让文心一言也完成这个任务,来对比一下的,哎···文心一言、一言难尽啊~~~
4 结束语

这次测试ChatGPT是一个国内的版本,免费,号称是基于ChatGPT3.5版本,就结果来说,已经是很厉害了,因此,学习和使用这样的工具,的确是提升生产效率的工具,未来基于AI的工作模式也一定要学会。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|T9AI - 深度人工智能平台 ( 沪ICP备2023010006号 )

GMT+8, 2024-5-19 23:19 , Processed in 0.062062 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表