自然语言处理(NLP)—分词-—word2vec

开发环境`jupyter notebook`

一、自然语言处理

这里写图片描述

1.1 分词简介
  1. 自动文本分类:给定分类体系,将文本划分到某一个或者某几个类别中
分类模式:
二分类模式,属于或不属于(binary)
多分类模式,有多个分类,属于其中某一个分类(multi-class)
可拆分成多个二分类问题
多标签问题,一个文本可以属于多个类别(multi-label)
  1. 文本分类的应用

    垃圾邮件的判定: 垃圾邮件、非垃圾邮件
    新闻频道分类(案例):经济、体育、娱乐、政治
    词性标注: 动词、名词、形容词
    情感识别: 正向评论、负向评论

1.2 分词算法:三大类
  • 基于词典、词库匹配的方法: 正向(逆向)最大匹配
  • 基于规则、知识理解的方法: 短语结构、文法
  • 基于统计、机器学习的分词方法: 隐马尔科夫、最大熵模型、条件随机场
1.3 词特征表示 (Bag of Words----Word2Vec)
词袋模型(Bag of Words)
从语料库中使用一些方法选择一堆词作为文本的特征(通常用TF-IDF)
所有文章都只保留这些被选中的词
维数很大,数据很稀疏
词嵌入模型(Word2Vec)
把文章的词映射到一个固定长度的连续向量
维数较小,通常为100 ~ 500
意义相近的词之间的向量距离较小
1.4 分类算法

使用一般分类问题的分类算法即可:
如:朴素贝叶斯;逻辑回归;支持向量机(SVM);决策树

二、文本分词

基于搜狐的新闻的数据,训练一个新闻频道的分类器,可以对新闻进行自动分类
数据详情:12个频道(汽车、财经、文化、健康、房地产、科技、教育、新闻、体育、旅游、女人、娱乐)
每个频道2000篇文章做训练数据,1000篇为测试数据。

2.1 Jieba分词

项目地址:https://github.com/fxsjy/jieba
安装方法:pip install jieba

主要功能
分词:三种分词模式(精确模式、全模式、搜索引擎模式)
支持自定义词典
基于TF-IDF算法的关键词提取
词性标注
并行分词(不支持windows)
2.2 词袋模型(Bag of Words)

忽略文本的语法和语序等要素,仅仅将其看成是若干个词汇的集合,每个词的出现都是独立的。
这里写图片描述
词袋模型的问题:不同词语的重要性没有区别,但实际上不同词语提供的信息量不同

2.3 TF-IDF(词频-逆文档频率)

TF-IDF:全称Term Frequency-Inverse Document Frequency

  • TF(词频)
    词语在一篇文章中出现的次数,出现的次数越多表示这个词对这篇文章越重要
    通常需要归一化,以防止它偏向于长文章
    T F w , d = 词   w   在 文 章   d   中 出 现 的 次 数 文 章   d   中 词 的 总 数 TF_{w,d}=\frac{词~w~在文章~d~中出现的次数}{文章~d~中词的总数} TFw,d= d  w  d 

  • IDF(逆文档频率)
    如果在所有的语料中,包含某个词语的文章数越多,那么这个词语的区分度就越低,重要长度也就越低
    I D F w = log ⁡ ( 语 料 库 的 文 档 总 数 包 含 词 语   w   的 文 章 数 + 1 ⁡ ) IDF_w=\log(\frac{语料库的文档总数}{包含词语~w~的文章数+1}⁡) IDFw=log( w +1)

实 际 通 常 使 用 I D F w = log ⁡ ⁡ ( 语 料 库 的 文 档 总 数 + 1 包 含 词 语   w   的 文 章 数 + 1 ) + 1 实际通常使用IDF_w=\log⁡(\frac{语料库的文档总数+1}{包含词语~w~的文章数+1})+1 使IDFw=log( w +1+1)+1

  • 通常,我们需要过滤掉IDF过低和过高的词语
  • 在词袋模型中,我们可以使用TF×IDF作为每个词的权重
    这里写图片描述

三、文本表达方式( one_hot编码—word2vec)

为了让计算机能够处理文本,我们需要一些方法把文本编码为数字

  • one-hot 编码:最简单的编码方式是把每个词都表示成一个长向量,向量的长度为词表的大小(还有其他编码方式,比如:哑变量编码)
    只有这个词对应位置上为1,其余都为0。
    不足:无法表示词和词之间的关系

  • word2vec:把词表示为一个低维向量
    基于“具有相似上下文的词,应该具有相似的语义”,这种方式称为分布式表达(Distributed Representation)
    每一维表示词语的一个潜在特征,每一维的取值都是连续的
    优点:可以使用空间距离或者余弦夹角来表示词和词之间的相似性

  • word2vec 通过预测一个长度为c的窗口内每个词周边词语的概率,来作为这个词的词向量。包含两个神经网络模型

    • CBOW(Continuous Bag of Words)(词袋模型)
      利用词的上下文预测当前的词
    • Skip-gram
      利用当前的词来预测上下文
  • 通过Google开源的工具包gensim实现
    安装方法:conda install gensim
    使用 gensim.models.Word2Vec 训练word2vec模型

这里写图片描述

参数与详解文档:

  • Word2vec和Doc2vec原理:https://blog.csdn.net/mpk_no1/article/details/72458003
  • Word2vec分布式表达:(NPLM;word2vec(CBOW/Skip-gram)
  • https://www.cnblogs.com/Determined22/p/5780305.html
  • https://www.cnblogs.com/Determined22/p/5804455.html

四、分类与评估

  • 训练分类器 --文本分类这样一个分类任务,可以使用大部分通用分类模型
    朴素贝叶斯
    逻辑回归
    支持向量机(SVM)
    决策树

  • 模型效果评估

  • 评估模型效果应该在测试集上进行(而不是在训练集)

  • 混淆矩阵(Confusion Matrix)

  • 常用的评估标准有
    查全率(Recall)
    正确预测为某个类别的文章数 / 这个类别的实际文章数 * 100%
    查准率(Precision)
    正确预测为某个类别的文章数 / 预测为这个类别的文章数 * 100%
    F1值,查全率和查准率的调和均值
    2 x Precision x Recall / (Precision + Recall)
    F β F_\beta Fβ值:    F β = ( 1 + β 2 ) ∙ ( P r e c i s i o n x R e c a l l ) β 2 ∙ P r e c i s i o n + R e c a l l ,     β > 1 ~~F_\beta=(1+\beta^2 )∙\frac{(PrecisionxRecall)}{\beta^2∙Precision+Recall},~~~\beta>1   Fβ=(1+β2)β2Precision+Recall(PrecisionxRecall)   β>1时,Recall更重要

  • 模型持久化
    Python中,我们可以使用pickle,把分类器序列化成二进制文件
    在另一环境中加载这个文件,进行分类

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
PyTorch是一个开源的Python机器学习库,可以用于创建神经网络模型和训练深度学习模型。Word2Vec是一种用于处理自然语言处理任务的词嵌入模型。 在PyTorch中实现Word2Vec的步骤如下: 1. 数据准备:收集和预处理用于训练Word2Vec模型的文本数据。可以使用任何合适的文本数据集,如语料库或文章集。 2. 数据预处理:对文本数据应用必要的预处理步骤,如分词、去除停用词、标点符号等。 3. 构建词汇表:通过遍历预处理后的文本数据,创建一个词汇表,包含所有唯一的词汇。 4. 创建训练样本:将文本数据转换为模型需要的训练样本格式。一种常用方法是创建一个滑动窗口,在滑动窗口内部的词汇用作输入,目标词汇用作输出。 5. 定义模型:使用PyTorch构建Word2Vec模型。模型可以由一个嵌入层和一个线性层组成。嵌入层用于将输入词嵌入为低维向量,线性层用于将嵌入向量映射回词汇表。 6. 定义损失函数和优化器:为模型定义适当的损失函数和优化器。在Word2Vec中,常用的损失函数是负对数似然损失函数(Negative Log Likelihood Loss)。 7. 训练模型:使用训练数据和定义的损失函数和优化器进行模型训练。迭代训练样本,并更新模型参数以最小化损失函数。 8. 保存模型:在训练完成后,保存训练好的Word2Vec模型。 9. 应用模型:可以使用训练好的Word2Vec模型进行各种自然语言处理任务,如文本分类、语义相似度计算等。 总结:通过PyTorch实现Word2Vec模型需要进行数据准备和预处理、构建词汇表、创建训练样本、定义模型、损失函数和优化器、训练模型,最后保存和应用模型。使用Word2Vec可以将文本数据转换为向量表示,从而在自然语言处理任务中提供更好的特征表示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SongpingWang

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值