本月竞赛学习将以对话意图识别展开,意图识别是指分析用户的核心需求,错误的识别几乎可以确定找不到能满足用户需求的内容,导致产生非常差的用户体验。
在对话过程中要准确理解对方所想表达的意思,这是具有很大挑战性的任务。在本次学习中我们将学习:
在本月中我们将加入与ChatGPT精度对比(由小助手教ChatGPT进行意图识别)的环节,如果你的模型高于排行榜上的ChatGPT会获得其他奖励。
为了激励各位同学完成的学习任务,将学习任务根据难度进行划分,并根据是否完成进行评分难度高中低的任务分别分数为3、2和1。在完成学习后(本次活动,截止4月1),将按照积分顺序进行评选 Top3 的学习者。
打卡地址:https://shimo.im/forms/WzKfKu5RFdQICu6I/fill
Top1的学习者将获得以下奖励:
Top2-3的学习者将获得以下奖励:
历史活动打卡链接,可以参考如下格式:
意图识别(Intent Recognition)是指通过自然语言文本来自动识别出用户的意图或目的的一项技术任务。在人机交互、语音识别、自然语言处理等领域中,意图识别扮演着至关重要的角色。
意图识别有很多用途,例如在搜索引擎中分析用户的核心搜索需求,在对话系统中了解用户想要什么业务或者闲聊,在身份识别中判断用户的身份信息等等。意图识别可以提高用户体验和服务质量。
实践环境建议以Python3.7+,且需要安装如下库:
任务名称 | 难度/分值 |
---|---|
任务1:数据读取与分析 | 低/1 |
任务2:TFIDF提取与分类 | 中/2 |
任务3:词向量训练与使用 | 中/2 |
任务4:LSTM意图分类 | 高/3 |
任务5:BERT意图分类 | 高/3 |
任务6:T5/Prompt意图分类 | 高/3 |
打卡地址:https://shimo.im/forms/WzKfKu5RFdQICu6I/fill
昵称 | 任务1 | 任务2 | 任务3 | 任务4 | 任务5 | 任务6 |
---|---|---|---|---|---|---|
墨语 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
无盐 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
irrational | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
徐乜乜 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ruler同学 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
soufal | ✅ | ✅ | ✅ | ✅ | ||
huggingaha | ✅ | ✅ | ✅ | |||
Elaine | ✅ | |||||
LiamPayne | ✅ | |||||
流星 | ✅ | |||||
Elaine | ✅ | |||||
虞雨霖(I0382) | ✅ | |||||
Jellison | ✅ | |||||
夜的第七章 | ✅ | |||||
Ian 罗永贵 | ✅ | |||||
ys | ✅ | |||||
伍 | ✅ | |||||
yingying | ✅ | |||||
hy_scny | ✅ | |||||
Elaine | ✅ | |||||
ChatGPT | ✅ | ✅ |
注明:
NLP是自然语言处理的缩写,是研究如何让计算机理解和处理自然语言的一门技术。自然语言是人类交流和表达思想的主要工具,具有丰富的语义和多样的形式。学习NLP需要掌握基本的语言学概念、文本预处理和文本表示方法等基础知识。语言学概念可以帮助我们分析自然语言的结构和规律,文本预处理可以帮助我们清洗和规范化文本数据,文本表示方法可以帮助我们将文本转换为计算机可处理的数值向量。
学习NLP很难的原因可能有以下几点:NLP涉及多个领域的知识,需要有较强的综合能力和自学能力;NLP是一个快速发展的领域,需要不断更新自己的知识和技能;NLP面临很多挑战和难题,如自然语言的歧义性、复杂性、多样性等。
# 读取数据集,这里是直接联网读取,也可以通过下载文件,再读取
import pandas as pd
data_dir = 'https://mirror.coggle.club/dataset/coggle-competition/'
train_data = pd.read_csv(data_dir + 'intent-recognition-train.csv', sep='\t', header=None)
test_data = pd.read_csv(data_dir + 'intent-recognition-test.csv', sep='\t', header=None)
train_data[1].value_counts()
train_data[0].apply(len).describe()
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
# 中文分词
content = ''.join(train_data[train_data[1] == 'Music-Play'][0])
words = jieba.lcut(content)
# 读取中文停用词
cn_stopwords = ' '.join(pd.read_csv('https://mirror.coggle.club/stopwords/baidu_stopwords.txt', header=None)[0])
words = [x for x in words if x not in cn_stopwords]
# 中文字体,https://mirror.coggle.club/STHeiti-Light.ttc
# 如果不设置,云图不能展示中文
wordcloud = WordCloud(background_color = 'white', max_words = 1000, font_path = 'STHeiti-Light.ttc')
wordcloud.generate(' '.join(words))
plt.imshow(wordcloud)
plt.xticks([]); plt.yticks([])
TFIDF(词频-逆文档频率)是一种常见的文本表示方法,可以用于文本分类任务。TFIDF将文本表示为词项的权重向量,其中每个词项的权重由其在文本中出现的频率和在整个语料库中出现的频率共同决定。TFIDF可以反映出词项在文本中的重要程度,越是常见的词项权重越低,越是稀有的词项权重越高。
词向量是一种将单词转化为向量表示的技术,在自然语言处理中被广泛应用。通过将单词映射到一个低维向量空间中,词向量可以在一定程度上捕捉到单词的语义信息和关联关系,进而提高自然语言处理任务的性能。以下是使用词向量进行文本分类的一个简单示例:
LSTM(Long Short-Term Memory)是一种特殊的循环神经网络,在文本分类任务中表现良好。LSTM可以通过对输入文本进行序列建模来捕捉文本中的长期依赖关系,并对文本进行分类。
BERT(Bidirectional Encoder Representations from Transformers)是一种预训练语言模型,它可以生成高质量的文本表示,并被广泛应用于文本分类任务。BERT使用双向Transformer编码器来捕捉文本中的上下文信息,从而获得更好的表示效果。
Prompt分类(Prompt-based Classification)是一种新兴的文本分类技术,它通过将任务特定的提示文本(Prompt Text)与输入文本(Input Text)一起输入到预训练语言模型(Pre-trained Language Model)中来实现文本分类。Prompt分类具有高度灵活性和可扩展性,并已经在多个NLP任务中取得了优异的性能。
Prompt分类的基本思想是将文本分类任务转化为掩码语言模型(Masked Language Modeling,MLM)任务,通过预测掩码位置([MASK])的输出来判断类别。例如,通过文本描述判定天气好坏,类别【好、坏】:常规方法是在BERT模型之后添加一个分类层,哪个输出节点概率最大则划分到哪一类别;而Prompt分类方法是在输入文本前后添加提示文本,并在类别位置添加掩码标记:
Prompt分类的优势是可以利用预训练语言模型的强大表达能力和泛化能力,无需额外增加参数或进行微调。Prompt分类的挑战是如何设计合适的提示文本来引导模型进行正确的推理和预测。
© 2019-2023 coggle.club 版权所有 京ICP备20022947 京公网安备 11030102010643号