自然语言处理(NLP)入门(3)——文本预处理
**数据和特征决定了机器学习的上限,而模型和算法只是无线逼近这个上限。**正是因为数据处理的重要性,在NLP算法的工作中,大部分的时间是与数据打交道,文本预处理更是重中之重!
文本预处理
方法:
文本处理的基本方法
- 分词
- 作用: 为了更好的进行语言语义的理解(why)
- 工具: jieba 安装: pip install jieb
- jieba特性:
- 多种分词模式
- 精确模式(how)
- jieba.cut(content, cut_all=False)—> 生成器
- jieba.lcut(content, cut_all=False)—> 列表
- 全模式
- jieba.cut(content, cut_all=True)—> 生成器
- jieba.lcut(content, cut_all=True)—> 列表
- 搜索引擎模式
- jieba.cut_for_search(content)> 生成器
- jieba.lcut_for_search(content)—> 列表
- 精确模式(how)
- 中文繁体分析
- 用户自定义的模式
- 自定义字典: 格式: 词语 词频[可省略] 词性[可省略]
- 加载自定义字典: jieba.load_userdict(自定义字典文件)
- 多种分词模式
- jieba特性:
- 词性标注**[POS]**
- 作用: 为了计算机更好的理解自然语言, 处理更高阶的NLP任务自动问答, 机器翻译等任务
- 命名实体识别[NER] eg: 马云 创办了阿里巴巴
- 实质是一个NLP任务类型
- 命名实体: 人名, 地名, 机构名等专有名称
- 分词
文本张量表示方法
One-hot编码 0 1 001 010 100
- 定义了词汇映射器[词—>数字]
- one-hot编码的保存 joblib.dump()
- 优点: 操作简单, 容易理解
- 缺点:词和词之间的联系少,大语料集上, 占用的内容大
Word2vec(what)—(why)
第一种模式: CBOW: 词袋模式—> 两边(输入)到中间(输出)
第二种模式: skipgram—> 中间(输入)到两边(输出)
fasttext工具进行词向量的训练(how)
安装:
第一种方式的安装: pip install fasttext(简洁版)
第二种方式安装: (建议使用这种方式)
$ git clone https://github.com/facebookresearch/fastText.git $ cd fastText # 使用pip安装python中的fasttext工具包 $ sudo pip install .
训练词向量(how)
- 步骤:
- 获取训练数据集 enwik9
- 训练词向量
- 训练api: Fasttext.train_unsupervised(data)
- 查看词向量: model.get_word_vector(词)
- 模型参数的设定
- 模型的训练类型
- epoch
- lr
- thread等等
- 模型检验
- model.get_nearest_neighbors(词)
- 模型的保存和重加载
- 模型的保存: model.save_model(模型的名字)
- 模型的重加载: new_model = fasttext.load_model(模型的名字)
- 步骤:
Word Embedding
- 广义上说: word2vec
- 狭义的word Embedding: 就是网络中的embedding层, 最后是输入所有词汇的向量表示组成的矩阵
文本语料的数据分析—> 绘制图像
标签数量的分析
- 目的: 查看各个类别之前的数量关系, 确定样本是否均衡
句子的长度进行分析—绘制柱状图
- 目的: 指导对句子长度进行截断或是补齐
- 散点图的绘制目的: 为了方便人工审核, 异常数据
词频的统计和关键词词云
不同词汇的统计
# 不同词汇总数的统计 --> embedding上 one-hot set(chain(*map(lambda x: jieba.lcut(x), train_data["sentence"])))
词云的绘制
- 训练集上绘制正样本的词云
- 训练集上绘制负样本的词云
- 验证集上绘制正样本的词云
- 验证集上绘制负样本的词云
文本特征处理
n_gram特征
定义: 在文本序列中, n个词或字相邻且共现即n_gram特征 n: 1 2 3 4 5
作用 为了增加更多的语义信息, 是语句有更多元化的语义表示
如何实现
set(zip(*[input_list[i:] for i in range(ngram_range)]))
文本长度的规范 处理成一定的长度
原因: 网络需要等尺寸大小的语句序列.
前期要进行的处理: 进行句子长度的分析(绘制图像), 然后确定要规范的句子长度
- Eg: 语句 现象的阐述, 后面的结论
How 怎么做
# 在此api函数中, 可以根据业务需求, 进行前面截断补齐或是后面截断补齐的选择 sequence.pad_sequences(x_train, cutlen, padding='post', truncating='post')
数据增强方法
回译增强法
- 第一种方式 pip install itranslate
import itranslatetext = ["酒店设施非常不错", "这家酒店服务好,价格便宜"] ko_result = itranslate.itranslate(text, from_lang='zh-cn', to_lang='ko') print(text) print("翻译成韩文:", ko_result) cn_result = itranslate.itranslate(ko_result, from_lang='ko', to_lang='zh-cn') print('回译成中文:', cn_result)
第二种方式: google接口 pip install google_trans_new
如果发生错误: json解析错误 修改源码: google_trans_new.py文件中151行
# 151行 修改源码 # response = (decoded_line + ']') # 导致json解析错误 # 修改成 # response = decoded_line # 即可
自然语言处理(NLP)入门(3)——文本预处理相关推荐
- 【组队学习】【29期】9. 基于transformers的自然语言处理(NLP)入门
9. 基于transformers的自然语言处理(NLP)入门 航路开辟者:多多.erenup.张帆.张贤.李泺秋.蔡杰.hlzhang 领航员:张红旭.袁一涵 航海士:多多.张红旭.袁一涵.童鸣 基 ...
- 【组队学习】【28期】基于transformers的自然语言处理(NLP)入门
基于transformers的自然语言处理(NLP)入门 论坛版块: http://datawhale.club/c/team-learning/39-category/39 开源内容: https: ...
- 自然语言处理(NLP)入门
本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库.NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Python库. 什么是NLP? 简单来说,自然 ...
- 文本预处理方法_生产中的自然语言处理27种快速文本预处理方法
文本预处理方法 大纲(Outline) Estimates state that 70%–85% of the world's data is text (unstructured data) [1] ...
- 人工智能自然语言处理NLP入门教程
导读:自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域. 语言是人类区别其他动物的本质特性.在所有生物中,只有人类才具有语言能力.人类的多种智能都与 ...
- 关于NLP中的文本预处理的完整教程
实现文本预处理 在下面的python代码中,我们从Twitter情感分析数据集的原始文本数据中去除噪音.之后,我们将进行删除停顿词.干化和词法处理. 导入所有的依赖性. ! pip install c ...
- [深度学习] 自然语言处理 --- NLP入门指南
NLP的全称是Natuarl Language Processing,中文意思是自然语言处理,是人工智能领域的一个重要方向 自然语言处理(NLP)的一个最伟大的方面是跨越多个领域的计算研究,从人工智能 ...
- NLP入门:文本特征的表示方式
一.前言 NLP区别与CV的一个重要特征之一,在于模型的输入需要预先处理,从CV转行NLP的炼丹者一开始定会对模型的输入形式感到疑惑.不像CV中模型的输入就是图像的RGB值,本来就是数值型,且像素值可 ...
- 自然语言处理(NLP)之从文本中提取时间
在我们的日常生活和工作中,从文本中提取时间是一项非常基础却重要的工作,因此,接下来将介绍如何从文本中有效地提取时间. 举个简单的例子,我们需要从下面的文本中提取时间: 6月28日,杭州市统计局权威 ...
- python进行文本预处理_用python做NLP:中文文本预处理
数据挖掘入门与实战 公众号: datadw 一 得到原始文本内容 def FileRead(self,filePath): f = open(filePath) raw=f.read() retur ...
最新文章
- ARC107——C - Shuffle Permutation
- 如何在Pandas中使用Excel文件
- python创建sqlite3 unicode error_python/sqlite3:发生异常:sqlite3.operationalerror
- Pairwork2 总结
- 推荐的字符与字符串处理方式
- win10自带虚拟机安装CentOS7系统(转)
- 【每日算法Day 64】LeetCode 861. 翻转矩阵后的得分
- paip.python错误解决2
- iOS appicon 与 launchImage 尺寸一览
- 国内外有名的计算机视觉团队汇总
- 商业智能时代,大数据分析行业前景
- 使用TRA命令进行磁带备份的命令汇总(转)
- OculusClient登录错误“发生意外错误,请稍后重试(OVR40779122)”解决方法
- Python 可视化--Matplotlib 安装和pyplot
- 【MySQL】 DATE_FORMAT() 格式化时间
- 二叉树的叶子结点按从左到右的顺序连成一个单链表
- obj-c UISlider 使用
- 在linux中500g怎么分区,本人500G电脑装双系统,linux 100G,求linux如何分区,要有原因。...
- Android Studio 不能连接MuMu模拟器的解决方案
- 正则化--L1正则化(稀疏性正则化)