Coggle 30 Days of ML(23年8月)


## Part1 内容介绍

欢迎参加我们的学习活动:“高效使用ChatGPT:构建有效的Prompt”。ChatGPT是一个强大的工具,可以帮助我们完成各种任务,但要实现高效使用,我们需要掌握如何构建合适的prompt(提示语)。在这个活动中,我们将一起学习如何编写有效的prompt,以最大程度地利用ChatGPT的潜力。

本次活动面向所有对于使用ChatGPT感兴趣的人群,无论您是学生、研究者、开发者还是企业用户,只要您希望提升在ChatGPT上的应用能力和效率,都欢迎参加本次活动。

本月学习内容包括:

  • 了解GPT模型的基本原理和工作方式。
  • 探索ChatGPT在自然语言处理和人工智能领域的应用。
  • 理解prompt在使用ChatGPT时的重要性,以及对生成结果的影响。
  • 分析优秀和低效prompt的案例,从中学习如何设计更有效的prompt。

## Part2 活动安排

  • 免费学习活动,不会收取任何费用。
  • 请各位同学添加下面微信,并回复【竞赛学习】,即可参与。


## Part3 积分说明和奖励

为了激励各位同学完成的学习任务,在完成学习后(本次活动,截止9月4),将按照积分顺序进行评选 Top3 的学习者。如果打卡积分相同,则按照prompt质量和文本长度进行排序。

打卡地址:https://shimo.im/forms/G1m1jSLq7owsgmPw/fill

昵称 T1 T2 T3 T4 T5 T6 T7 T8
wx292371958
徐乜乜
无盐
irrational
liuqingmin
zhangruochennina
liuxinganyue
Purple
Frank
oliver
liuxinganyue
maoleqqq
酱油味Haoran
s2735684367
芋泥
ᥫ᭡້໌ᮨ97喵门传人
佳佳佳包娜
晓梦蝉君
豫澄

### 打卡积分奖励

Top1的学习者将获得以下奖励:

  • 50元现金红包
  • Coggle 竞赛专访机会

Top2-3的学习者将获得以下奖励:

  • 20元红包
  • Coggle 竞赛专访机会

历史活动打卡链接,可以参考如下格式:


## Part4 高效ChatGPT

### 背景介绍

ChatGPT是一个基于OpenAI的GPT(Generative Pre-trained Transformer)模型的变种,它是一个强大的自然语言处理(NLP)工具。GPT系列模型的主要特点是预训练和生成能力,能够根据输入的文本生成具有连贯性和合理性的输出文本。ChatGPT特别针对对话式应用进行了优化。它经过在大规模文本数据上进行预训练,并通过阅读大量的对话数据来学习对话风格和语言表达。因此,它可以用于许多自然语言处理任务,如对话生成、问答系统、文本摘要、语言翻译等。

Prompt是用户向模型提供任务指导和输入信息的方式,它直接影响了模型生成的回答或结果的质量和准确性。一个好的prompt可以引导模型产生有用、合理且符合预期的回答,而一个不合适或模糊的prompt可能导致模型输出错误、无关或混乱的内容。

### 打卡任务

任务名称 所需技能
初识ChatGPT Python
ChatGPT编写正则 Python
ChatGPT自动EDA Python
ChatGPT文本分类 Python
ChatGPT实体抽取 Python
ChatGPT关系抽取 Python
ChatGPT渲染表格 Python
ChatGPT文本匹配 Python
ChatGPT创意设计 Python

#### 任务1:初识ChatGPT

  • 任务说明:熟悉ChatGPT的基本使用方法,了解如何与模型进行交互,并生成文本输出。
  • 实践步骤:
    1. 通过网页端ChatGPT或ChatGPT API发送prompt,可以尝试不同的prompt,观察模型的输出。
    2. 理解ChatGPT的对话机制,尝试在网页端ChatGPT和API进行对话。
    3. 将ChatGPT或API的实验过程进行截图,并思考为什么ChatGPT能回答不同的文本。

网页端ChatGPT需自己注册,如果没有账号可以使用下面的ChatGPT API来完成打卡。

import requests
url = "https://openai.api2d.net/v1/chat/completions" # 服务域名+接口

headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer fkxxxxx' # <-- 把 fkxxxxx 替换成你自己的 Forward Key,注意前面的 Bearer 要保留,并且和 Key 中间有一个空格。
}

data = {
  "model": "gpt-3.5-turbo",
  "messages": [{"role": "user", "content": "你好!给我讲个笑话。"}]
}
response = requests.post(url, headers=headers, json=data)
print("Status Code", response.status_code)
print("JSON Response ", response.json())

在访问代理api时,如果出现问题,则建议替换下面的域名:

  • https://openai.api2d.net 正式接口,分布式部署
  • https://oa.api2d.net 备用接口,如果上一个无法使用(比如因为域名包含 openai 被屏蔽)可以使用这个
  • https://oa.api2d.site,https://oa.api2d.online 临时域名,如果前两个都无法访问可以尝试这两个(过期时间 2024-06-15)
  • https://stream.api2d.net 备用接口,如果前两个都无法使用,可以使用这个

#### 任务2:ChatGPT编写正则

  • 任务说明:在ChatGPT中编写和使用正则表达式,以实现文本匹配和模式提取的功能。
  • 待匹配文本:
Enron Dataset: Over half a million anonymized emails from over 100 users. It’s one of the few publically available collections of “real” emails available for study and training sets.

Google Blogger Corpus: Nearly 700,000 blog posts from blogger.com. The meat of the blogs contain commonly occurring English words, at least 200 of them in each entry.

SMS Spam Collection: Excellent dataset focused on spam. Nearly 6000 messages tagged as legitimate or spam messages with a useful subset extracted directly from Grumbletext.

Recommender Systems Datasets: Datasets from a variety of sources, including fitness tracking, video games, song data, and social media. Labels include star ratings, time stamps, social networks, and images.

Project Gutenberg: Extensive collection of book texts. These are public domain and available in a variety of languages, spanning a long period of time.
  • 实践步骤:
    1. 编写prompt让ChatGPT写一个能识别首字母大写单词的正则。
    2. 编写prompt让ChatGPT写一个能识别首字母大写且字符个数小于10的正则。
    3. 编写prompt让ChatGPT写一个能识别单词末尾为标点符号的正则。
    4. 上述实验过程进行截图,通过Python代码验证ChatGPT输出正则的有效性。

### 任务3:ChatGPT自动EDA

  • 任务说明:使用ChatGPT模型对表格数据进行自动EDA,以发现数据中的模式、趋势和特征。
  • 任务数据集:
import pandas as pd
df = pd.read_csv('https://mirror.coggle.club/dataset/affairs.txt')
df.info()
  • 实践步骤:
    1. 将数据集关键信息整理为prompt内容,让ChatGPT输出Pandas代码来统计每列缺失值。
    2. 编写prompt让ChatGPT输出Pandas代码来统计affairs列的分布并绘制饼图。
    3. 编写prompt让ChatGPT输出Pandas代码来统计affairs列在yrs_married下的分布并绘制柱状图。
    4. 编写prompt让ChatGPT输出Pandas代码来绘制age列和yrs_married列的散点图。
    5. 上述实验过程进行截图,通过Python代码验证ChatGPT输出Python代码的有效性。

### 任务4:ChatGPT文本分类

  • 任务说明:了解如何使用ChatGPT模型实现文本分类,并将文本数据分配到正确的类别中。
  • 任务训练集:
label review
0 辣,饭冷啦,都两三小时才送来慢
0 足足等了將近一個半小時,飯也基本不太熱了,因為網上付款了所以吃飯就不退送餐費,所以你們就任意遲到,我說的有錯嗎
0 送餐的师傅,服务质量太差,送过来都已经坨了
1 送的慢了点
1 还行,就是速度好慢,一个多小时
0 好慢,差一点就超时能打五折了
0 皮太厚,不喜欢
0 卷饼味道真的很一般
0 就是太慢了,我12:44才收到,晚了一个小时,饭都凉了。
0 土豆要多煮一下
  • 任务测试集:
label review
0 味道没有传说中好
0 太糟了。等了两个小时,牛肉我吃的快吐了,再也不可能第二次
1 微辣一点都不辣啊
1 定很多次啦!菜很好吃!也很及时!
0 太慢了、恶死了
  • 实践步骤:
    1. 在不使用训练集的情况下,编写prompt让ChatGPT对于输入的文本进行分类,需要支持输入5条文本一次回答得到所有类别结果,且分类结果为0或1。
    2. 在使用训练集的情况下,编写prompt让ChatGPT对于输入的文本进行分类,需要支持输入5条文本一次回答得到所有类别结果,且分类结果为0或1。
    3. 上述实验过程进行截图,哪种方法可以得到更加有效的结果,为什么?

### 任务5:ChatGPT实体抽取

  • 任务说明:学习如何使用ChatGPT模型实现实体抽取,并从文本中准确地抽取出实体信息。
  • 待处理文本:
山药去皮洗净,切成小丁,用水浸泡,避免氧化变色。豌豆剥好,冲洗干净。胡萝卜去皮洗净,切成小丁。葱姜末、小米椒碎准备好。

锅内加水,煮开后放入少许盐,倒入豌豆,煮几分钟,至豌豆断生,煮好后捞出沥干水分。

另起锅加油,烧热后倒入姜末、小米椒碎爆锅,再倒入胡萝卜、山药翻炒,炒两分钟。

最后倒入豌豆翻炒均匀,再加入盐、鸡精、葱末翻炒几下,就可以出锅了,很好吃下饭香,快尝尝吧。
  • 实践步骤:
    1. 编写prompt让ChatGPT识别文本中的食物。
    2. 编写prompt让ChatGPT识别文本中的时间。
    3. 编写prompt让ChatGPT识别文本中的动作。
    4. 上述实验过程进行截图,人工验证抽取结果的有效性。

### 任务6:ChatGPT关系抽取

  • 任务说明:将学习如何使用ChatGPT模型实现关系抽取,并从文本中准确地抽取出实体之间的关系信息。
  • 待处理文本:
王小蒙的豆腐厂上线,每天忙里忙外,不得清闲。谢永强则专注自己的果园,和小蒙几天都见不上一面。两个孩子忙事业始终推迟婚期,急坏永强的父亲谢广坤。

赵玉田和刘英结婚后,开始忙于花圃的经营。来村中实习的女大学生陈艳南吸引了赵玉田的注意,刘英大吃其醋,无事忙刘能对女婿的做法也颇为不满。

香秀迎来了新同事王天来,李大国担心嫉妒,从中作梗。王天来单恋陈艳南,又和赵玉田矛盾不断。

长贵一方面想吸引王大拿来村里投资,一方面又怕谢大脚被大拿抢走,他和大脚之间若即若离,忽冷忽热,闹出不少笑话。
  • 实践步骤:

    1. 编写prompt让ChatGPT识别文本中的人名和两者之间的关系。
    2. 编写prompt让ChatGPT识别文本中有夫妻关系的人名和关系。
    3. 编写prompt让ChatGPT识别文本中与香秀相关的人名和关系。
    4. 上述实验过程进行截图,人工验证抽取结果的有效性。
  • 要求输出格式:

实体A - 关系1 - 实体B
实体B - 关系2 - 实体C

### 任务7:ChatGPT渲染表格

  • 任务说明:使用ChatGPT模型来生成和渲染表格,以便将数据以表格形式展示。
  • 待处理文本:
              precision    recall  f1-score   support

     class 0       0.50      1.00      0.67         1
     class 1       0.00      0.00      0.00         1
     class 2       1.00      0.67      0.80         3

    accuracy                           0.60         5
   macro avg       0.50      0.56      0.49         5
weighted avg       0.70      0.60      0.61         5
  • 实践步骤:编写prompt让ChatGPT将数据集处理为如下格式,要求prompt越短越好。
|         | F1    | Recall |
| ------- | ----- | ------ |
| class 2 | 0.800 | 0.670  |
| class 1 | 0.000 | 0.000  |
| class 0 | 0.670 | 1.000  |

### 任务8:ChatGPT文本匹配

  • 任务说明:使用ChatGPT的嵌入API,您可以将文本转换为嵌入向量,然后计算向量之间的相似度来实现文本匹配。
  • 待处理数据集:
文本1 文本2 标签
魔兽世界坐骑去哪买 奥比岛在哪有皇室舞会的邀请函? 0
在淘宝去哪里充值好 在淘宝里怎么买火车票,哪里有 0
鱼不可以和什么蔬菜一起吃 鱼不能和什么药物一起吃 0
读音是什么?怎么组词 熙的读音和组词是什么? 1
七夕到了,单身该怎么过啊? 七夕单身的人怎么过? 1
什么品牌的智能手机好用 现在什么牌子的智能手机好用,又便宜呀 1
一个人怎么过七夕? 七夕一个人怎么过 1
import requests

url = "https://openai.api2d.net/v1/embeddings"

headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer fkxxxxx' # <-- 把 fkxxxxx 替换成你自己的 Forward Key,注意前面的 Bearer 要保留,并且和 Key 中间有一个空格。
}

data = {
    "model": "text-embedding-ada-002",
    "input": "Coggle数据科学"
}
response = requests.post(url, headers=headers, json=data)

print("Status Code", response.status_code)
print("JSON Response ", response.json())
  • 实践步骤:
    1. 使用BERT对上面文本进行编码,然后计算每个样本句子相似度与标签的相关性。
    2. 使用ChatGPT对上面文本进行编码,然后计算每个样本句子相似度与标签的相关性。
    3. 上述实验过程进行截图,对比两种方法的有效性。


© 2019-2023 coggle.club 版权所有     京ICP备20022947    京公网安备 11030102010643号