资讯详情

深度学习基础——(4)自然语言处理基础

📅 2026/10/31 1:35:54 | 华诺云谱 👁 阅读
深度学习基础——(4)自然语言处理基础
文章目录一、文本数据处理1.1 jieba分词1.2 索引化1.3 向量化1.2.2 Word2Vec1.2.3 nn.EmbeddingPyTorch 可训练嵌入1.2.4 GloVe 全局词向量1.2.5 ELMo上下文动态词向量三、循环神经网络3.1 RNN3.2 LSTM3.3 GRU3.4 Bi-RNN一、文本数据处理1.1 jieba分词1分句把长篇文本按句号、问号、感叹号切分成句子。英文按标点直接分割中文需考虑省略号、引号等特殊标点2分词难点是歧义分词、未登录词网络新词、人名、地名、专业术语英文天然以空格分隔只需简单分割中文无天然分隔符必须中文分词主流分词工具Jieba、THULAC、LTP、HanLP安装包pipinstalljiebaimportjiebaimporttorchimporttorch.nnasnn# 1. 原有的文本处理 text我非常喜欢学习自然语言处理技术它真的很有趣# 分词wordsjieba.lcut(text)# 去停用词stop_words{我,它,的,很,,}filtered_words[wforwinwordsifwnotinstop_words]# 去重保留顺序unique_wordslist(dict.fromkeys(filtered_words))print(分词结果,words)print(去停用词,filtered_words)print(去重后,unique_words)分词结果[我,非常,喜欢,学习,自然语言,处理,技术,,它,真的,很,有趣,]去停用词[非常,喜欢,学习,自然语言,处理,技术,真的,有趣]去重后[非常,喜欢,学习,自然语言,处理,技术,真的,有趣]1.2 索引化索引化主要是把词语映射成唯一数字编号构建word_to_ix 字典让词语变成模型能处理的数字序列。# 2. 构建词 → 索引字典 word_to_ix{word:ifori,wordinenumerate(unique_words)}vocab_sizelen(word_to_ix)# 词汇表大小print(词汇表,word_to_ix)词汇表{非常:0,喜欢:1,学习:2,自然语言:3,处理:4,技术:5,真的:6,有趣:7}1.3 向量化把数字序列转换成稠密向量是模型真正能理解的形式。方法特点One-hot最基础稀疏向量无语义信息现在基本不用Word2vec静态词向量一个词一个固定向量能捕捉基础语义nn.EmbeddingPyTorch 内置的可训练词嵌入层随模型一起学习更新GloVe全局词向量结合了 Word2vec 和矩阵分解的优点ELMO上下文相关的动态词向量同一个词不同语境向量不同给每个词分配一个唯一编号只有对应位置是 1其他全是 0。one_hotnp.eye(vocab_size)[sentence_ids]print(One-Hot 形状,one_hot.shape)print(第一个词“非常”的One-Hot,one_hot[0])非常 →[1.0.0.0.0.0.0.0.]1.2.2 Word2Vec无监督训练一个词固定一个向量近义词向量距离近无法处理多义词苹果 水果 / 公司1.2.3 nn.EmbeddingPyTorch 可训练嵌入深度学习标配随机初始化 → 随任务训练优化importtorchimporttorch.nnasnn embeddingnn.Embedding(vocab_size,embedding_dim5)sentence_tensortorch.LongTensor(sentence_ids)vectorsembedding(sentence_tensor)print(nn.Embedding 输出形状,vectors.shape)print(第一个词“非常”的向量)print(vectors[0].detach().numpy())(8,5)→8个词每个5维[-0.120.34-0.450.110.29]1.2.4 GloVe 全局词向量from gensim.modelsimportKeyedVectors# 这里用模拟向量真实GloVe需下载预训练文件glove_vectors{word: np.random.rand(5)forwordinvocab}print(GloVe - “学习”向量)print(glove_vectors[学习])1.2.5 ELMo上下文动态词向量第一个真正的上下文词向量同一个词不同语境向量不同解决多义词问题# 模拟ELMo动态向量# 同一个词“苹果”在不同语境向量不同defelmo_mock(word,context):staticnp.random.rand(5)if公司incontext:returnstatic0.5elif水果incontext:returnstatic-0.5returnstatic vec1elmo_mock(苹果,吃苹果)vec2elmo_mock(苹果,苹果公司)print(水果苹果,vec1.round(2))print(公司苹果,vec2.round(2))三、循环神经网络3.1 RNN3.2 LSTM3.3 GRU3.4 Bi-RNN
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑