1.定义自然语言处理Natural Language Processing, NLP是人工智能领域的一个重要分支。自然语言指人类日常使用的语言如中文、英文NLP的目标是让计算机“理解”或“使用”这些语言。文本表示分词子词级分词是一种介于词级分词与字符级分词之间的分词方法它将词语切分为更小的单元——子词subword例如词根、前缀、后缀或常见词片段。与词级分词相比子词分词可以显著缓解OOV问题与字符级分词相比它能更好地保留一定的语义结构。子词分词的基本思想是即使一个完整的词没有出现在词表中只要它可以被拆分为词表中存在的子词单元就可以被模型识别和表示从而避免整体被替换为。常 见 的 子 词 分 词 算 法 包 括BPEByte Pair Encoding 、WordPiece 和 Unigram Language Model。其中BPE是最早被广泛应用的方法其需要先从语料中学习一个子词词表基本原理是首先将所有词语拆分为单个字符然后迭代地统计语料中出现频率最高的字符对将其合并为一个新的子词并加入词表。该过程持续进行直到达到设定的词表大小。然后再根据词表对新输入的文本进行分词其基本原理是从输入文本的第一个字符开始优先选择词表中能够匹配的最长子词单元然后继续处理剩余部分直到完成整个序列的切分。子词级分词已经成为现代英文NLP模型中的主流方法如BERT、GPT等模型均采用了基于子词的分词机制。分词工具基于词典或模型的传统方法主要以“词”为单位进行切分代表工具包括jieba、HanLP等这些工具广泛应用于传统NLP任务中。基于子词建模算法如BPE的方式从数据中自动学习高频字组合构建子词词表。代表工具包括Hugging Face Tokenizer、SentencePiece、tiktoken等常用于大规模预训练语言模型中。GitHub - huggingface/tokenizers: Fast State-of-the-Art Tokenizers optimized for Research and ProductionGitHub - google/sentencepiece: Unsupervised text tokenizer for Neural Network-based text generation.GitHub - openai/tiktoken: tiktoken is a fast BPE tokeniser for use with OpenAI’s models.GitHub - fxsjy/jieba: 结巴中文分词GitHub - hankcs/HanLP: 中文分词 词性标注 命名实体识别 依存句法分析 成分句法分析 语义依存分析 语义角色标注 指代消解 风格转换 语义相似度 新词发现 关键词短语提取 自动摘要 文本分类聚类 拼音简繁转换 自然语言处理词表示语义化词向量传统的one-hot表示虽然结构简单但它无法反映词语之间的语义关系也无法衡量词与词之间的相似度。为了解决这个问题研究者提出了Word2Vec模型它通过对大规模语料的学习为每个词生成一个具有语义意义的稠密向量表示。这些向量能够在连续空间中表达词与词之间的关系使得“意思相近”的词在空间中距离更近。Word2Vec的设计理念源自“分布假设”——即一个词的含义由它周围的词决定。Word2Vec原理Word2Vec不依赖人工标注而是直接利用大规模原始文本如书籍、新闻、网页等作为数据源从中自动构造训练样本。由于两种模型的输入和输出都是词语因此首先需要对原始文本进行分词将连续文本转换为token序列。此外模型无法直接处理文本符号训练时仍需将词语转换为one-hot编码以便作为模型的输入和输出进行计算。:::infoCBOWContinuous Bag-of-Words模型输入是一个词的上下文即前后若干个词模型的目标是预测中间的目标词。:::CBOW模型的前向传播过程如下1.输入上下文词乘坐、上班每个词用one-hot向量表示。2.查找词向量W每个one-hot向量与参数矩阵W相乘查出对应的词向量。W实际上就是词向量矩阵每一行表示一个词的向量3.平均上下文向量将多个上下文词向量取平均得到一个整体的上下文表示。4.预测中心词将平均后的上下文向量与参数矩阵Wout相乘得到对整个词表的预测得分。5.Softmax输出将得分输入Softmax得到每个词作为中心词的概率分布。6.计算损失将预测结果与真实中心词“地铁”的one-hot向量进行比对计算交叉熵损失。之后在进行反向传播时参数矩阵Win中“乘坐”和“上班”对应的词向量就会被更新。模型通过不断训练逐步优化这些向量最终便能得到具有语义的词向量。:::infoSkip-gram模型输入是一个中心词模型的目标是预测其上下文中的所有词即前后若干个词。:::前向传播过程如下1.输入中心词地铁“地铁”用one-hot向量表示2.查找词向量W与参数矩阵W相乘取出“地铁”对应的词向量。W实际上就是词向量矩阵每一行表示一个词的向量3.预测上下文将中心词向量与参数矩阵Wout相乘得到对整个词表的预测得分。4.Softmax输出得分通过Softmax转为概率分布表示各词作为上下文的可能性。5.计算损失与真实上下文词“乘坐”、“上班”进行比对计算交叉熵损失并求和得到总损失。之后在进行反向传播时参数矩阵W中的“地铁”对应的词向量就会被更新模型通过这个过程不断的进行学习最终便能得到具有语义的词向量。2.传统序列模型RNNRNN循环神经网络的核心结构是一个具有循环连接的隐藏层它以时间步time step为单位依次处理输入序列中的每个token。在每个时间步RNN接收当前token的向量和上一个时间步的隐藏状态即隐藏层的输出计算并生成新的隐藏状态并将其传递到下一时间步。其中隐藏层的计算公式为 ℎℎ(ℎ―1ℎ)torch.nn.RNN(input_size,hidden_size,num_layers1,nonlinearitytanh,biasTrue,batch_firstFalse,dropout0.0,bidirectionalFalse,deviceNone,dtypeNone,)参数名类型说明input_sizeint每个时间步输入特征的维度词向量维度hidden_sizeint隐藏状态的维度num_layersintRNN层数默认为1nonlinearitystr激活函数‘tanh’默认或’relu’biasbool是否使用偏置项默认Truebatch_firstbool输入张量是否是(batch, seq, feature)默认False表示(seq, batch, feature)dropoutfloat除最后一层外其余层之间的dropout概率bidirectionalbool是否为双向RNN默认Falsedevicetorch.device or str模块的初始化设备如’cuda’, ‘cpu’dtypetorch.dtype模块初始化时的默认数据类型如torch.float32rnntorch.nn.RNN()output,h_nrnn(input,h_0)input输入序列形状为(seq_len, batch_size, input_size)如batch_firstTrue则为(batch_size, seq_len, input_size)h_0可 选 初 始 隐 藏 状 态 形 状 为(num_layers × num_directions, batch_size, hidden_size)outputRNN层的输出包含最后一层每个时间步的隐藏状态形状为(seq_len,batch_size, num_directions × hidden_size )如果batch_firstTrue则为 (batch_size, seq_len, num_directions × hidden_size )h_n最后一个时间步的隐藏状态包含每一层的每个方向形状为(num_layers ×num_directions, batch_size, hidden_size)常见的NLP任务类型有哪些至少说出三种文本分类、序列标注、文本生成、信息抽取、文本转换英文分词有哪些分词粒度词级分词、字符级分词、子词分词双向RNN的意义是什么多层RNN的意义是什么使每个时间步都可以获取上下文的信息每层提取不同的语义例如底层提取局部信息词组短语高层提取更抽象的语义信息句子含义
nlp自然语言处理(2)
发布时间:2026/6/24 8:45:56
1.定义自然语言处理Natural Language Processing, NLP是人工智能领域的一个重要分支。自然语言指人类日常使用的语言如中文、英文NLP的目标是让计算机“理解”或“使用”这些语言。文本表示分词子词级分词是一种介于词级分词与字符级分词之间的分词方法它将词语切分为更小的单元——子词subword例如词根、前缀、后缀或常见词片段。与词级分词相比子词分词可以显著缓解OOV问题与字符级分词相比它能更好地保留一定的语义结构。子词分词的基本思想是即使一个完整的词没有出现在词表中只要它可以被拆分为词表中存在的子词单元就可以被模型识别和表示从而避免整体被替换为。常 见 的 子 词 分 词 算 法 包 括BPEByte Pair Encoding 、WordPiece 和 Unigram Language Model。其中BPE是最早被广泛应用的方法其需要先从语料中学习一个子词词表基本原理是首先将所有词语拆分为单个字符然后迭代地统计语料中出现频率最高的字符对将其合并为一个新的子词并加入词表。该过程持续进行直到达到设定的词表大小。然后再根据词表对新输入的文本进行分词其基本原理是从输入文本的第一个字符开始优先选择词表中能够匹配的最长子词单元然后继续处理剩余部分直到完成整个序列的切分。子词级分词已经成为现代英文NLP模型中的主流方法如BERT、GPT等模型均采用了基于子词的分词机制。分词工具基于词典或模型的传统方法主要以“词”为单位进行切分代表工具包括jieba、HanLP等这些工具广泛应用于传统NLP任务中。基于子词建模算法如BPE的方式从数据中自动学习高频字组合构建子词词表。代表工具包括Hugging Face Tokenizer、SentencePiece、tiktoken等常用于大规模预训练语言模型中。GitHub - huggingface/tokenizers: Fast State-of-the-Art Tokenizers optimized for Research and ProductionGitHub - google/sentencepiece: Unsupervised text tokenizer for Neural Network-based text generation.GitHub - openai/tiktoken: tiktoken is a fast BPE tokeniser for use with OpenAI’s models.GitHub - fxsjy/jieba: 结巴中文分词GitHub - hankcs/HanLP: 中文分词 词性标注 命名实体识别 依存句法分析 成分句法分析 语义依存分析 语义角色标注 指代消解 风格转换 语义相似度 新词发现 关键词短语提取 自动摘要 文本分类聚类 拼音简繁转换 自然语言处理词表示语义化词向量传统的one-hot表示虽然结构简单但它无法反映词语之间的语义关系也无法衡量词与词之间的相似度。为了解决这个问题研究者提出了Word2Vec模型它通过对大规模语料的学习为每个词生成一个具有语义意义的稠密向量表示。这些向量能够在连续空间中表达词与词之间的关系使得“意思相近”的词在空间中距离更近。Word2Vec的设计理念源自“分布假设”——即一个词的含义由它周围的词决定。Word2Vec原理Word2Vec不依赖人工标注而是直接利用大规模原始文本如书籍、新闻、网页等作为数据源从中自动构造训练样本。由于两种模型的输入和输出都是词语因此首先需要对原始文本进行分词将连续文本转换为token序列。此外模型无法直接处理文本符号训练时仍需将词语转换为one-hot编码以便作为模型的输入和输出进行计算。:::infoCBOWContinuous Bag-of-Words模型输入是一个词的上下文即前后若干个词模型的目标是预测中间的目标词。:::CBOW模型的前向传播过程如下1.输入上下文词乘坐、上班每个词用one-hot向量表示。2.查找词向量W每个one-hot向量与参数矩阵W相乘查出对应的词向量。W实际上就是词向量矩阵每一行表示一个词的向量3.平均上下文向量将多个上下文词向量取平均得到一个整体的上下文表示。4.预测中心词将平均后的上下文向量与参数矩阵Wout相乘得到对整个词表的预测得分。5.Softmax输出将得分输入Softmax得到每个词作为中心词的概率分布。6.计算损失将预测结果与真实中心词“地铁”的one-hot向量进行比对计算交叉熵损失。之后在进行反向传播时参数矩阵Win中“乘坐”和“上班”对应的词向量就会被更新。模型通过不断训练逐步优化这些向量最终便能得到具有语义的词向量。:::infoSkip-gram模型输入是一个中心词模型的目标是预测其上下文中的所有词即前后若干个词。:::前向传播过程如下1.输入中心词地铁“地铁”用one-hot向量表示2.查找词向量W与参数矩阵W相乘取出“地铁”对应的词向量。W实际上就是词向量矩阵每一行表示一个词的向量3.预测上下文将中心词向量与参数矩阵Wout相乘得到对整个词表的预测得分。4.Softmax输出得分通过Softmax转为概率分布表示各词作为上下文的可能性。5.计算损失与真实上下文词“乘坐”、“上班”进行比对计算交叉熵损失并求和得到总损失。之后在进行反向传播时参数矩阵W中的“地铁”对应的词向量就会被更新模型通过这个过程不断的进行学习最终便能得到具有语义的词向量。2.传统序列模型RNNRNN循环神经网络的核心结构是一个具有循环连接的隐藏层它以时间步time step为单位依次处理输入序列中的每个token。在每个时间步RNN接收当前token的向量和上一个时间步的隐藏状态即隐藏层的输出计算并生成新的隐藏状态并将其传递到下一时间步。其中隐藏层的计算公式为 ℎℎ(ℎ―1ℎ)torch.nn.RNN(input_size,hidden_size,num_layers1,nonlinearitytanh,biasTrue,batch_firstFalse,dropout0.0,bidirectionalFalse,deviceNone,dtypeNone,)参数名类型说明input_sizeint每个时间步输入特征的维度词向量维度hidden_sizeint隐藏状态的维度num_layersintRNN层数默认为1nonlinearitystr激活函数‘tanh’默认或’relu’biasbool是否使用偏置项默认Truebatch_firstbool输入张量是否是(batch, seq, feature)默认False表示(seq, batch, feature)dropoutfloat除最后一层外其余层之间的dropout概率bidirectionalbool是否为双向RNN默认Falsedevicetorch.device or str模块的初始化设备如’cuda’, ‘cpu’dtypetorch.dtype模块初始化时的默认数据类型如torch.float32rnntorch.nn.RNN()output,h_nrnn(input,h_0)input输入序列形状为(seq_len, batch_size, input_size)如batch_firstTrue则为(batch_size, seq_len, input_size)h_0可 选 初 始 隐 藏 状 态 形 状 为(num_layers × num_directions, batch_size, hidden_size)outputRNN层的输出包含最后一层每个时间步的隐藏状态形状为(seq_len,batch_size, num_directions × hidden_size )如果batch_firstTrue则为 (batch_size, seq_len, num_directions × hidden_size )h_n最后一个时间步的隐藏状态包含每一层的每个方向形状为(num_layers ×num_directions, batch_size, hidden_size)常见的NLP任务类型有哪些至少说出三种文本分类、序列标注、文本生成、信息抽取、文本转换英文分词有哪些分词粒度词级分词、字符级分词、子词分词双向RNN的意义是什么多层RNN的意义是什么使每个时间步都可以获取上下文的信息每层提取不同的语义例如底层提取局部信息词组短语高层提取更抽象的语义信息句子含义