Finish PE-final

This commit is contained in:
nowadays0421
2023-07-24 16:39:16 +08:00
parent 98a723075d
commit b1990bf20c
5 changed files with 789 additions and 75 deletions

File diff suppressed because one or more lines are too long

View File

@ -17,9 +17,9 @@
"\n",
"让我们先想象一下,你是一名初创公司的数据分析师,你的任务是从各种产品评论和新闻文章中提取出关键的情感和主题。这些任务包括了标签提取、实体提取、以及理解文本的情感等等。在传统的机器学习流程中,你需要收集标签化的数据集、训练模型、确定如何在云端部署模型并进行推断。尽管这种方式可能会产生不错的效果,但完成这一全流程需要耗费大量的时间和精力。而且,每一个任务,比如情感分析、实体提取等等,都需要训练和部署单独的模型。\n",
"\n",
"然而就在你准备投入繁重工作的时候你发现了大型语言模型LLM。LLM的一个明显优点是对于许多这样的任务你只需要编写一个 Prompt就可以开始生成结果大大减轻了你的工作负担。这个发现像是找到了一把神奇的钥匙让应用程序开发的速度加快了许多。最令你兴奋的是你可以仅仅使用一个模型和一个API来执行许多不同的任务无需再纠结如何训练和部署许多不同的模型。\n",
"然而就在你准备投入繁重工作的时候你发现了大型语言模型LLM。LLM 的一个明显优点是,对于许多这样的任务,你只需要编写一个 Prompt就可以开始生成结果大大减轻了你的工作负担。这个发现像是找到了一把神奇的钥匙让应用程序开发的速度加快了许多。最令你兴奋的是你可以仅仅使用一个模型和一个 API 来执行许多不同的任务,无需再纠结如何训练和部署许多不同的模型。\n",
"\n",
"让我们开始这一章的学习一起探索如何利用LLM加快我们的工作进程提高我们的工作效率。"
"让我们开始这一章的学习,一起探索如何利用 LLM 加快我们的工作进程,提高我们的工作效率。"
]
},
{
@ -102,7 +102,7 @@
"id": "76be2320",
"metadata": {},
"source": [
"如果你想要给出更简洁的答案,以便更容易进行后处理,可以在上述 Prompt 基础上添加另一个指令:*用一个单词回答:「正面」或「负面」*。这样就只会打印出 “正面” 这个单词,这使得输出更加统一,方便后续处理。"
"如果你想要给出更简洁的答案,以便更容易进行后处理,可以在上述 Prompt 基础上添加另一个指令:*用一个单词回答:「正面」或「负面」*。这样就只会打印出 “正面” 这个单词,这使得输出更加统一,方便后续处理。"
]
},
{
@ -136,7 +136,7 @@
"id": "81d2a973-1fa4-4a35-ae35-a2e746c0e91b",
"metadata": {},
"source": [
"### 2.2 识别情感类型"
"### 1.2 识别情感类型"
]
},
{
@ -456,7 +456,7 @@
"id": "95b636f1",
"metadata": {},
"source": [
"假设我们有一个新闻网站或类似的平台,这是我们感兴趣的主题:美国航空航天局、当地政府、工程、员工满意度、联邦政府等。我们想要分析一篇新闻文章,理解其包含了哪些主题。可以使用这样的prompt确定以下主题列表中的每个项目是否是以下文本中的主题。以 0 或 1 的形式给出答案列表。"
"假设我们有一个新闻网站或类似的平台,这是我们感兴趣的主题:美国航空航天局、当地政府、工程、员工满意度、联邦政府等。我们想要分析一篇新闻文章,理解其包含了哪些主题。可以使用这样的 Prompt确定以下主题列表中的每个项目是否是以下文本中的主题。以 0 或 1 的形式给出答案列表。"
]
},
{
@ -499,7 +499,7 @@
"id": "08247dbf",
"metadata": {},
"source": [
"从输出结果来看,这个`story`与关于“美国航空航天局”、“员工满意度”、“联邦政府”、“当地政府”有关而与“工程”无关。这种能力在机器学习领域被称为零样本Zero-Shot学习。这是因为我们并没有提供任何带标签的训练数据仅凭 Prompt ,它便能判定哪些主题在新闻文章中被包含。\n",
"从输出结果来看,这个 `story` 与关于“美国航空航天局”、“员工满意度”、“联邦政府”、“当地政府”有关而与“工程”无关。这种能力在机器学习领域被称为零样本Zero-Shot学习。这是因为我们并没有提供任何带标签的训练数据仅凭 Prompt ,它便能判定哪些主题在新闻文章中被包含。\n",
"\n",
"如果我们希望制定一个新闻提醒,我们同样可以运用这种处理新闻的流程。假设我对“美国航空航天局”的工作深感兴趣,那么你就可以构建一个如此的系统:每当出现与'美国宇航局'相关的新闻,系统就会输出提醒。"
]
@ -961,7 +961,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@ -975,7 +975,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.11"
"version": "3.8.10"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,

View File

@ -9,7 +9,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "2fac57c2",
"metadata": {},
@ -22,7 +21,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "bf3733d4",
"metadata": {},
@ -35,7 +33,7 @@
"id": "06ba53ba",
"metadata": {},
"source": [
"文本翻译是大语言模型的典型应用场景之一。相比于传统统计机器翻译系统,大语言模型翻译更加流畅自然,还原度更高。通过在大规模高质量平行语料上进行fine-tuning训练,大语言模型可以深入学习不同语言间的词汇、语法、语义等层面的对应关系,模拟双语者的转换思维,进行意义传递的精准转换,而非简单的逐词替换。\n",
"文本翻译是大语言模型的典型应用场景之一。相比于传统统计机器翻译系统,大语言模型翻译更加流畅自然,还原度更高。通过在大规模高质量平行语料上进行 Fine-Tune,大语言模型可以深入学习不同语言间的词汇、语法、语义等层面的对应关系,模拟双语者的转换思维,进行意义传递的精准转换,而非简单的逐词替换。\n",
"\n",
"以英译汉为例,传统统计机器翻译多倾向直接替换英文词汇,语序保持英语结构,容易出现中文词汇使用不地道、语序不顺畅的现象。而大语言模型可以学习英汉两种语言的语法区别,进行动态的结构转换。同时,它还可以通过上下文理解原句意图,选择合适的中文词汇进行转换,而非生硬的字面翻译。\n",
"\n",
@ -43,7 +41,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "1b418e32",
"metadata": {},
@ -79,7 +76,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "e3e922b4",
"metadata": {},
@ -111,7 +107,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "c1841354",
"metadata": {},
@ -146,7 +141,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "68723ba5",
"metadata": {},
@ -154,31 +148,6 @@
"### 1.4 同时进行语气转换"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "a4770dcc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Formal: ¿Le gustaría ordenar una almohada?\n",
"Informal: ¿Te gustaría ordenar una almohada?\n"
]
}
],
"source": [
"prompt = f\"\"\"\n",
"Translate the following text to Spanish in both the \\\n",
"formal and informal forms: \n",
"'Would you like to order a pillow?'\n",
"\"\"\"\n",
"response = get_completion(prompt)\n",
"print(response)\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
@ -204,7 +173,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "b2dc4c56",
"metadata": {},
@ -213,7 +181,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "54b00aa4",
"metadata": {},
@ -297,7 +264,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "6ab558a2",
"metadata": {},
@ -306,7 +272,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "b85ae847",
"metadata": {},
@ -350,7 +315,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "98df9009",
"metadata": {},
@ -359,14 +323,13 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "0bf9c074",
"metadata": {},
"source": [
"大语言模型如ChatGPT在不同数据格式之间转换方面表现出色。它可以轻松实现JSONHTML、XML、Markdown等格式的相互转化。下面是一个示例,展示如何使用大语言模型**将JSON数据转换为HTML格式**:\n",
"大语言模型如 ChatGPT 在不同数据格式之间转换方面表现出色。它可以轻松实现 JSONHTML、XML、Markdown 等格式的相互转化。下面是一个示例,展示如何使用大语言模型**将 JSON 数据转换为 HTML 格式**:\n",
"\n",
"假设我们有一个JSON数据,包含餐厅员工的姓名和邮箱信息。现在我们需要将这个JSON转换为HTML表格格式以便在网页中展示。在这个案例中,我们就可以使用大语言模型,直接输入JSON数据,并给出需要转换为HTML表格的要求。语言模型会自动解析JSON结构,并以HTML表格形式输出,完成格式转换的任务。\n",
"假设我们有一个 JSON 数据,包含餐厅员工的姓名和邮箱信息。现在我们需要将这个 JSON 转换为 HTML 表格格式,以便在网页中展示。在这个案例中,我们就可以使用大语言模型,直接输入JSON 数据,并给出需要转换为 HTML 表格的要求。语言模型会自动解析 JSON 结构,并以 HTML 表格形式输出,完成格式转换的任务。\n",
"\n",
"利用大语言模型强大的格式转换能力,我们可以快速实现各种结构化数据之间的相互转化,大大简化开发流程。掌握这一转换技巧将有助于读者**更高效地处理结构化数据**。\n"
]
@ -429,6 +392,14 @@
"print(response)"
]
},
{
"cell_type": "markdown",
"id": "99c8114e",
"metadata": {},
"source": [
"将上述 HTML 代码展示出来如下:"
]
},
{
"cell_type": "code",
"execution_count": 11,
@ -476,7 +447,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "29b7167b",
"metadata": {},
@ -485,7 +455,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "22776140",
"metadata": {},
@ -552,7 +521,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "538181e0",
"metadata": {},
@ -602,7 +570,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "2e2d1f6a",
"metadata": {},
@ -657,7 +624,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "3ee5d487",
"metadata": {},
@ -1343,7 +1309,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@ -1357,7 +1323,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.11"
"version": "3.8.10"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,

View File

@ -13,11 +13,9 @@
"source": [
"**文本扩展**是大语言模型的一个重要应用方向,它可以输入简短文本,生成更加丰富的长文。这为创作提供了强大支持,但也可能被滥用。因此开发者在使用时,必须谨记社会责任,避免生成有害内容。\n",
"\n",
"在本章中,我们将学习*基于OpenAI API实现一个客户邮件自动生成的示例*,用于*根据客户反馈优化客服邮件*。这里还会介绍“温度”temperature这一超参数它可以**控制文本生成的多样性**。\n",
"在本章中,我们将学习*基于 OpenAI API 实现一个客户邮件自动生成的示例*,用于*根据客户反馈优化客服邮件*。这里还会介绍“温度”temperature这一超参数它可以**控制文本生成的多样性**。\n",
"\n",
"需要注意,扩展功能只应用来辅助人类创作,而非大规模自动生成内容。开发者应审慎使用,避免产生负面影响。只有以负责任和有益的方式应用语言模型,才能发挥其最大价值。\n",
"\n",
"相信践行社会责任的开发者可以利用语言模型的扩展功能,开发出真正造福人类的创新应用。\n"
"需要注意,扩展功能只应用来辅助人类创作,而非大规模自动生成内容。开发者应审慎使用,避免产生负面影响。只有以负责任和有益的方式应用语言模型,才能发挥其最大价值。相信践行社会责任的开发者可以利用语言模型的扩展功能,开发出真正造福人类的创新应用。\n"
]
},
{
@ -33,7 +31,7 @@
"source": [
"在这个客户邮件自动生成的示例中,我们**将根据客户的评价和其中的情感倾向,使用大语言模型针对性地生成回复邮件**。\n",
"\n",
"具体来说,我们先输入客户的评论文本和对应的情感分析结果(正面或者负面)。然后构造一个Prompt要求大语言模型基于这些信息来生成一封定制的回复电子邮件。\n",
"具体来说,我们先输入客户的评论文本和对应的情感分析结果(正面或者负面)。然后构造一个 Prompt要求大语言模型基于这些信息来生成一封定制的回复电子邮件。\n",
"\n",
"下面先给出一个实例,包括一条客户评价和这个评价表达的情感。这为后续的语言模型生成回复邮件提供了关键输入信息。通过输入客户反馈的具体内容和情感态度,语言模型可以生成针对这个特定客户、考虑其具体情感因素的个性化回复。这种**针对个体客户特点的邮件生成方式,将大大提升客户满意度**。"
]
@ -129,7 +127,7 @@
"source": [
"## 二、引入温度系数\n",
"\n",
"大语言模型中的 “温度”(temperature) 参数可以控制生成文本的随机性和多样性。temperature的值越大语言模型输出的多样性越大temperature的值越小输出越倾向高概率的文本。\n",
"大语言模型中的 “温度”(temperature) 参数可以控制生成文本的随机性和多样性。temperature 的值越大语言模型输出的多样性越大temperature 的值越小,输出越倾向高概率的文本。\n",
"\n",
"举个例子,在某一上下文中,语言模型可能认为“比萨”是接下来最可能的词,其次是“寿司”和“塔可”。若 temperature 为0则每次都会生成“比萨”而当 temperature 越接近 1 时,生成结果是“寿司”或“塔可”的可能性越大,使文本更加多样。\n",
"\n",
@ -192,6 +190,13 @@
"print(response)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"第二次运行输出结果会发生变化:"
]
},
{
"cell_type": "code",
"execution_count": 5,
@ -241,9 +246,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"**温度temperature参数可以控制语言模型生成文本的随机性**。温度为0时每次使用同样的Prompt得到的结果总是一致的。而在上面的样例中当温度设为0.7时,则每次执行都会生成不同的文本。\n",
"**温度temperature参数可以控制语言模型生成文本的随机性**。温度为0时每次使用同样的 Prompt得到的结果总是一致的。而在上面的样例中当温度设为0.7时,则每次执行都会生成不同的文本。\n",
"\n",
"所以这次的结果与之前得到的邮件就不太一样了。再次执行同样的Prompt,邮件内容还会有变化。因此。我建议读者朋友们可以自己尝试不同的 temperature 来观察输出的变化。总体来说temperature 越高,语言模型的文本生成就越具有随机性。可以想象,高温度下,语言模型就像心绪更加活跃,但也可能更有创造力。\n",
"所以,这次的结果与之前得到的邮件就不太一样了。再次执行同样的 Prompt,邮件内容还会有变化。因此。我建议读者朋友们可以自己尝试不同的 temperature 来观察输出的变化。总体来说temperature 越高,语言模型的文本生成就越具有随机性。可以想象,高温度下,语言模型就像心绪更加活跃,但也可能更有创造力。\n",
"\n",
"适当调节这个超参数,可以让语言模型的生成更富有多样性,也更能意外惊喜。希望这些经验可以帮助你在不同场景中找到最合适的温度设置。\n"
]
@ -411,7 +416,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@ -425,7 +430,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.11"
"version": "3.8.10"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,

View File

@ -15,14 +15,8 @@
"id": "f0bdc2c9",
"metadata": {},
"source": [
"大型语言模型带给我们的激动人心的一种可能性是我们可以通过它构建定制的聊天机器人Chatbot而且只需很少的工作量。在这一章节的探索中我们将带你了解如何利用会话形式与具有个性化特性或专门为特定任务或行为设计的聊天机器人进行深度对话。"
]
},
{
"cell_type": "markdown",
"id": "e6fae355",
"metadata": {},
"source": [
"大型语言模型带给我们的激动人心的一种可能性是我们可以通过它构建定制的聊天机器人Chatbot而且只需很少的工作量。在这一章节的探索中我们将带你了解如何利用会话形式与具有个性化特性或专门为特定任务或行为设计的聊天机器人进行深度对话。\n",
"\n",
"像 ChatGPT 这样的聊天模型实际上是组装成以一系列消息作为输入,并返回一个模型生成的消息作为输出的。这种聊天格式原本的设计目标是简便多轮对话,但我们通过之前的学习可以知道,它对于不会涉及任何对话的**单轮任务**也同样有用。"
]
},
@ -380,6 +374,14 @@
"!pip install panel"
]
},
{
"cell_type": "markdown",
"id": "b61e475a",
"metadata": {},
"source": [
"如果你还没有安装 panel 库(用于可视化界面),请运行上述指令以安装该第三方库。"
]
},
{
"cell_type": "code",
"execution_count": null,
@ -850,7 +852,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.11"
"version": "3.8.10"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,