自然语言处理(NLP)—分词-—word2vec
文章目录
- 一、自然语言处理
- 1.1 分词简介
- 1.2 分词算法:三大类
- 1.3 词特征表示 (Bag of Words----Word2Vec)
- 1.4 分类算法
- 二、文本分词
- 2.1 Jieba分词
- 2.2 词袋模型(Bag of Words)
- 2.3 TF-IDF(词频-逆文档频率)
- 三、文本表达方式( one_hot编码—word2vec)
- 四、分类与评估
开发环境`jupyter notebook`
一、自然语言处理
1.1 分词简介
- 自动文本分类:给定分类体系,将文本划分到某一个或者某几个类别中
- 分类模式:
-
二分类模式,属于或不属于(binary)
多分类模式,有多个分类,属于其中某一个分类(multi-class)
可拆分成多个二分类问题
多标签问题,一个文本可以属于多个类别(multi-label)
文本分类的应用
垃圾邮件的判定: 垃圾邮件、非垃圾邮件
新闻频道分类(案例):经济、体育、娱乐、政治
词性标注: 动词、名词、形容词
情感识别: 正向评论、负向评论
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
利用当前的词来预测上下文
- CBOW(Continuous Bag of Words)(词袋模型)
通过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)∙β2∙Precision+Recall(PrecisionxRecall), β>1时,Recall更重要模型持久化
Python中,我们可以使用pickle,把分类器序列化成二进制文件
在另一环境中加载这个文件,进行分类
自然语言处理(NLP)—分词-—word2vec相关推荐
- matlab分词NLP,自然语言处理NLP分词篇
自然语言处理NLP分词篇 自然语言处理NLP[分词篇] NLP简介和三种分词模型 NLP逐渐成为人工智能一大热点研究方向,目前国外对英文分词的研究比较深入,而中文分词发展较缓.它需要联系上下文.作者背 ...
- 自然语言处理(NLP)之word2vec的实现(PTB语料库)<找语义相近的词>
在2013年Google开源了一款用于词向量计算的工具:word2vec,它本身不是一种深度学习之类的模型,是一种用于计算词嵌入的体系结构.实际上大家平时说的这个指代的就是前面介绍过的跳字(元)模型与 ...
- 自然语言处理NLP中文分词,词性标注,关键词提取和文本摘要
NLP相关工具包的介绍 1.1 jieba "结巴"中文分词,理念是做最好的 Python 中文分词组件. 支持三种分词模式: (1)精确模式,试图将句子最精确地切开,适合文本分析 ...
- 视频教程-2020新版 自然语言处理NLP视频课程Word2Vec GloVe关系挖掘-NLP
2020新版 自然语言处理NLP视频课程Word2Vec GloVe关系挖掘 6年开发经验,具有丰富的移动端.中台.后端.大数据.NLP.语音生成.图像识别开发经验,团队管理经验:擅长数据架构,NLP ...
- 自然语言处理NLP之BERT、BERT是什么、智能问答、阅读理解、分词、词性标注、数据增强、文本分类、BERT的知识表示本质
自然语言处理NLP之BERT.BERT是什么.智能问答.阅读理解.分词.词性标注.数据增强.文本分类.BERT的知识表示本质 目录
- 自然语言处理NLP之分词、词性标注(POS)、组块分析(Chunking)、命名实体识别(Named Entity Recognition,简称NER)
自然语言处理NLP之分词.词性标注(POS).组块分析(Chunking).命名实体识别(Named Entity Recognition,简称NER) 目录
- 自然语言处理NLP简介
自然语言处理NLP简介 NLP简介 1 引言 人工智能.机器学习.深度学习 什么是自然语言处理? 人工智能的流派 2 NLP发展历史 人工智能发展历史 推理期 知识期 学习期 文本的预训练可分为两个重 ...
- 自然语言处理NLP面试问题
自然语言处理NLP面试问题 前言 一.机器学习相关模型 1.朴素贝叶斯 1-1.相关概念介绍 1-2.贝叶斯定理 1-3.贝叶斯算法的优缺点 1-4.拓展延伸 1-4-1.MLE(最大似然) 1-4- ...
- 视频教程-从零开始自然语言处理-NLP
从零开始自然语言处理 楚门智能创始人,昆士兰理工大学数据科学硕士,多年大数据行业经验,原联想电商大数据平台负责人,Cloudera认证架构师.管理员,主要科研方向为数据科学,在自然语言处理领域有的经验 ...
- 智能金融的三驾马车之自然语言处理NLP
什么是自然语言处理NLP 用通俗的话来讲,自然语言处理NLP的目标是让机器能够理解人类的语言,NLP就是人和机器进行交流的技术.用专业语言来讲,自然语言处理有狭义和广义之分.狭义的自然语言处理是使用计 ...
最新文章
- JMeter性能测试,完整入门篇(自己做测试了)
- 关于linux内核无法编译成模块的解决方法
- LeetCode算法总结-回溯法与深度优先搜索
- linux实现字符火焰动画,linux flamegraph火焰图使用
- C++ std::thread
- PopWindow使用实战
- 【压力测试】用JMeter进行百科网站压力测试
- mysql如何设置host_如何快速修改MySQL用户的host属性
- 警告: A docBase inside the host appBase has been specified, and will be ignore2
- 计算机文档打不开是什么原因,文档打不开电脑我的文档Word突然打不开了,是怎会是啊?其他还都 爱问知识人...
- 廖雪峰python教程阅读之条件判断
- 最新高频Java面试题目分享,分布式ID(数据库多主模式
- c语言考研复试一般考什么,考研复试考什么
- Python之父:Python 4.0可能不会有了
- Display Port 1.4 link Training 过程
- 树莓派基于face_recognition人脸识别
- STM32网址大全(快速定位网址查找资料)
- Win10关闭蓝牙省电模式的两种方法
- GEE遍历影像中每个像元的值
- 机器人建模----运动学模型及代码实现
热门文章
- 查看LINUX放开端口,linux如何查看端口是否开放?
- OnCreate()与PreCreateWindow()
- html中创建学生对象,在考生文件夹下,存在一个数据库文件“sampl.mdb”。在数据库文件中已经建立了一个表对象“学生基本情...
- JAVA实现的百万英雄,芝士超人等答题,自动搜索答案,答题辅助
- idea中类和方法创建文档注释
- 休眠(Hibernate)和睡眠(Sleep)的区别
- 如何做一个基于微信酒店预订小程序系统毕业设计毕设作品
- Linux目录标准FHS介绍
- ubuntu解压rar文件
- Node.js当中的ioredis设置timeout的问题