NLP -- 从文本特征到输入
将一系列核心特征转换成分类器可接收的特征向量。即输入 x
两种方案
-
独热编码(one-hot)
每个特征都用单独一维来表示(其中只有一维值为1,其余维为0)
特点:维度高、且很稀疏,向量维度与不同特征的数目相同,特征空间完全相互独立
-
稠密编码
每个核心特征都被嵌入到 d 维空间中,并用空间中的一个向量表示(通常空间维度 d 都远小于特征数目),并且嵌入向量(每个核心特征的向量表示)作为网络的参数与函数 f 中的其他参数一起被训练
特点:向量维度是 d ,模型训练会导致相似特征对应相似向量,相似特征间的信息是共享的
优势:具有很强得泛化能力(这种好的词向量(预训练嵌入)能够通过基于分布假设的算法在大规模文本语料上得到得到)
如何选择:
独热:适用于缺乏同一类别区分度大的特征并且不同特征间没有相互关系的情况 ,以及特征空间相对较小并且训练数据比较充足或不希望共享不同词间的统计信息时
稠密:当希望捕捉不同词之间的相似性时
组合稠密向量
每个特征对应一个稠密向量,采用某种方式将不同的向量组合起来,主要有 拼接、相加(或取平均)和同时使用拼接与相加
基于窗口的特征
以位置 i 为中心词,两边各包含 k 个单词的窗口,假设 k = 2,窗口内的词为 a,b,c,d
- 若不关心窗口内词的相对位置,可通过求和的方式对窗口编码:a + b + c + d
- 若关心相对位置,可使用拼接的方式 [a; b; c; d]
- 若不太关心词的顺序,但相比于离中心较远的词,更加注重距中心较近的词,采用加权求和:1/2 a+ b + c + 1/2 d
- 若关心特征是出现在中心词的前还是后,但不关心窗口内的词距中心词的距离,采用 拼接 + 相加 的方式: [(a + b); (c + d)]
可变特征数目:连续词袋(CBOW)
有时不能预先确定特征的数目(如在文本分类任务中,通常句子的每个词都是一个特征),因此需要使用固定大小的向量表示任意数量的特征。
CBOW:通过相加或者平均的方式组合特征的嵌入向量
加权 CBOW 是CBOW 的一种简单变换,为不同的向量赋予不同的权重:
每个特征 f_i 都有对应的权重 a_i,表明特征的相对重要性
Others
-
距离与位置特征
实际中将距离特征采用与其他特征类型相似的方式编码,每一组关联到一个 d 维向量,这些距离嵌入向量作为网络参数进行训练
-
补齐、未登录词和词丢弃
-
补齐:缺失时。添加一个特殊符号(补齐符号)到嵌入表中
-
未登录词:没有对应的嵌入向量,即这个词不是训练时词表中的一部分。
solutions: 保留一个特殊符号 UNK 表示未知记号来应对; 另一种方式时是将词的形式回退到词签名,实际上 UNK 符号是将所有未登录词回退到同样的签名,一种更加细粒度的策略是如 用 ” -ing “ 符号代替以 ing 结尾的未登录词等,这种映射列表是手工构建,以反映回退模式,实际中很常用。
-
词丢弃:在训练集中抽取特征时,用未登录符号随机替换单词,这种替换基于词频:低频词相较于高频词更可能被未登录符号代替
-
-
维度
根据经验,为每个特征分配 50-1000 之间较好
-
网络的输出
对于多分类问题,网络的输出是一个 k 维向量,每一维表示一个输出类别的强度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端