ChatGPT使用指南——句词分类 笔记

1. NLU 基础

 

  • 定义与任务:Natural Language Understanding(自然语言理解),长期与 NLG(自然语言生成)作为 NLP 两大主流任务,在智能对话等应用广泛。如用户输入语句,机器人会进行情感倾向分析、意图识别、实体抽取、关系抽取等全面分析。
  • 分析类型
    • 情感倾向分析:分正向、中性、负向等类型,也可细分。
    • 意图识别:多为分类模型,包括多分类、层次分类、多标签分类。
    • 实体抽取:抽取文本中有特定意义的词,如人名、地名等,常与业务相关。
    • 关系抽取:找出实体间关系,如 “刘亦菲出演《天龙八部》”,“刘亦菲” 是人名,“《天龙八部》” 是作品名,关系是 “出演”。
  • 分类层次
    • 句子级别分类:如情感分析、意图识别、关系抽取等,给定句子输出一个或多个 label。
    • Token 级别分类:如实体抽取、阅读理解,每个 Token 对应一个或多个 label。如 “刘亦菲出演天龙八部” 
    • 刘/B-PER
      亦/I-PER
      菲/I-PER
      出/O
      演/O
      天/B-WORK
      龙/I-WORK
      八/I-WORK
      部/I-WORK
      。/O
    • 1.1 句子级别的分类

    • 基本流程:句子级别分类是自然语言处理深度学习的基础应用。首先将给定句子或文本表征为 Embedding,接着把 Embedding 输入神经网络计算不同 Label 的概率分布,最后将该概率分布与真实分布做比较,通过误差回传修改神经网络参数。
    • 简单示例(三分类)
      • 假设 Embedding 维度为 32,用np.random.normal(0, 1, (1, 32))生成。
      • 三分类时简单的模型参数 W 大小为 32×3,用np.random.random((32, 3))生成。通过z = embed @ W计算,得到的结果需归一化(变为 0 - 1 之间且和为 1 ),自定义norm函数实现归一化。
    • 复杂示例:实际中 W 可更复杂,如通过w1 = np.random.random((32, 100)) 、 w2 = np.random.random((100, 30)) 、 w3 = np.random.random((30, 3))构建,再进行计算和归一化。
    • 多标签分类和层次分类:输出多个标签,处理更麻烦。以 10 个标签的多标签二分类为例,输出大小为 10×2,每行表示对应标签的概率分布。归一化时需指定维度。
    • (图片来源:hugging-llm/content/chapter3/ChatGPT使用指南——句词分类.ipynb at main · datawhalechina/hugging-llm · GitHub
    • 1.2 Token 级别的分类

    • 核心特点:Embedding 针对每个 Token。若给定文本长度为 10,维度 32,则 Embedding 大小为 (1, 10, 32),每个 Token 对应 32 维向量,模型可统一处理不同数量的 Token。
    • 示例:假设 Label 共 5 个(B - PER, I - PER, B - WORK, I - WORK, O ) 。
      • embed = np.random.normal(0, 1, (1, 10, 32))生成 Embedding,W = np.random.random((32, 5))生成模型参数 W。
      • 通过z = embed @ W 、 y = norm(z)计算,得到的 y 形状为 (1, 10, 5) ,每行表示一个 Token 是某个 Label 的概率分布(每行和为 1 )。可据此判断预测的 Label,通过误差更新参数以提高预测准确性
    • 2.相关API

    1. 关键概念

    • GPT:全称Generative Pretrained Transformer,是生成式预训练Transformer大模型。

    • In - Context:上下文能力,模型通过学习大量文本获得,能根据输入文本自动给出结果。

    • Zero - Shot:直接给模型文本,让其给出标签或输出。

    • Few - Shot:先给模型一些类似案例(输入+输出),再给新的无输出输入,让模型生成输出。

    2. API参数

    • model:指定模型,如gpt-3.5-turbo ,需综合价格和效果选择。

    • messages:支持多轮会话消息,每条消息为包含“role”和“content”的字典。

    • max_tokens:生成的最大Token数,默认16,Token数与字数对中文近似一致,生成文本的Token长度不能超模型上下文长度。

    • temperature:温度,介于0和2之间,值越高输出越随机,越低越集中确定。

    • top_p:采样topN分布,默认1 。

    • stop:停止的Token或序列,默认null,最多4个。

    • presence_penalty:存在惩罚,介于-2.0和2.0之间,正值会根据新Token是否出现过惩罚,增加讨论主题可能性。

    • frequency_penalty:频率惩罚,介于-2.0和2.0之间,正值根据Token频率惩罚,降低重复生成可能 。

    3. 应用示例

    • 情感分类:

    • Zero - Shot:直接给出待分类内容,如“Apple, Facebook, FedEx”,模型可给出类别。

    • Few - Shot:先给示例“今天真开心。 -->正向” “心情不好。 -->负向”,再给新句子“我们是快乐的年轻人。”,模型可判断情感倾向。

    • 实体识别:

    • Zero - Shot:按格式要求模型从文本中抽取实体,如从法律事件文本中抽取公司和人物。

    • Few - Shot:先给抽取格式示例,再对音乐相关文本抽取和弦实体。

    4. Prompt工程建议

    • 清晰:避免复杂歧义,定义术语。

    • 具体:语言具体,不抽象模糊。

    • 聚焦:避免问题宽泛开放。

    • 简洁:去除不必要描述。

    • 相关:保持主题相关,不跑题。

    5. 新手注意点

    • 明确输出目标。

    • 避免一次对话多个主题。

    • 不让语言模型做数学题。

    • 给出示例样本。

    • 避免反向提示。

    • 一次让模型做一件事,复杂任务可给示例(Few - Shot),简单任务直接描述要求。

  •  

    3.

    1. 文档问答(Document QA)

    • 原理:先用QA方法召回相关文档,再让模型在文档中找答案,类似阅读理解任务,预测答案在文档中的索引位置(start和end)。

    • 流程

    • 召回:与上章QA类似,通过相似Embedding选择最相似的文档 。

    • 回答:将召回文档和问题以Prompt方式提交给Completion/ChatCompletion接口获取答案。

    • 代码实现

    • 初始化:导入openai和zhipuai库,初始化相关客户端。

    • 定义提问函数:定义ask和ask_zhipu函数分别调用OpenAI和智谱AI接口提问。

    • 示例

    • 英文示例:根据召回文档回答“Who won the 2020 Summer Olympics men’s high jump?”,答案为“Gianmarco Tamberi and Mutaz Essa Barshim”。

    • 中文示例:根据上下文回答“诺曼底在哪个国家/地区?”,答案为“法国” 。

    • 完整流程

    • 加载数据集:从CSV文件加载与2020年夏季奥运会相关的数据集。

    • 选择工具:使用Qdrant向量搜索引擎(比Redis更易扩展),通过Docker启动,安装客户端。

    • 生成Embedding:定义get_embedding和get_embedding_zhipu函数分别生成OpenAI和智谱AI的Embedding,使用Batch方法处理大量数据并存储。

    • 创建索引:使用QdrantClient创建集合,并设置向量参数。

    • 向量入库:将数据以指定格式上传到Qdrant集合。

    • 查询:将问题生成Embedding后在集合中查询相似文档。

    • 构建Prompt:根据查询结果构建Prompt,包含相关文档内容和问题,然后调用模型获取答案。

    2. 分类/实体微调

    • 主题分类:给定文本判断所属主题,使用取自CLUBenchmark/CLUE的新闻主题分类数据集(共15个类别) 。

    • 后续任务:后续会介绍更具体、常见的任务,但文档中未展开,仅提及开始导入数据集查看数据量(10000条) 。

  •  

     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值