中文NLP笔记

1.中文自然语言处理的一般流程

在这里插入图片描述

图片发自简书App

中文NLP一般流程

1. 获取语料

语料,是NLP任务所研究的内容

通常用一个文本集合作为语料库(Corpus)

来源:

已有语料

积累的文档

下载语料

搜狗语料、人民日报语料

抓取语料

2. 语料预处理

  • 1.语料清洗

    留下有用的,删掉噪音数据

常见的数据清洗方式 :

人工去重、对齐、删除和标注等,或者规则提取内容、正则表达式匹配、根据词性和命名实体提取、编写脚本或者代码批处理等。

  • 2.分词

    将文本分成词语

常见的分词算法 :

基于字符串匹配的分词方法、基于理解的分词方法、基于统计的分词方法和基于规则的分词方法

  • 3.词性标注

    给词语打词类标签,如形容词、动词、名词等

    在情感分析、知识推理等任务中需要

常见的词性标注方法

基于规则

基于统计

如基于最大熵的词性标注、基于统计最大概率输出词性和基于 HMM 的词性标注。

  • 4.去停用词

    去掉对文本特征没有任何贡献作用的字词,比如标点符号、语气、人称等

3.特征工程
把分词表示成计算机能够计算的类型,一般为向量

常用的表示模型 :

词袋模型(Bag of Word, BOW)

TF-IDF  

词向量

One-hot 

Word2Vec

4. 特征选择

选择合适的、表达能力强的特征

常见的特征选择方法 :

有 DF、 MI、 IG、 CHI、WLLR、WFO

5. 模型训练

机器学习模型 :

KNN、SVM、Naive Bayes、决策树、GBDT、K-means 等

深度学习模型

CNN、RNN、LSTM、 Seq2Seq、FastText、TextCNN

注意过拟合、欠拟合问题

过拟合:在训练集上表现很好,但是在测试集上表现很差。

常见的解决方法有:

增大数据的训练量;

增加正则化项,如 L1 正则和 L2 正则;

特征选取不合理,人工筛选特征和使用特征选择算法;

采用 Dropout 方法等。

欠拟合:就是模型不能够很好地拟合数据

常见的解决方法有:

添加其他特征项;

增加模型复杂度,比如神经网络加更多的层、线性模型通过添加多项式使模型泛化能力更强;

减少正则化参数,正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。

注意梯度消失和梯度爆炸问题

6. 评价指标

错误率、精度、准确率、精确度、召回率、F1 衡量。

ROC 曲线、AUC 曲线

7. 模型上线应用

第一就是线下训练模型,然后将模型做线上部署

第二种就是在线训练,在线训练完成之后把模型 pickle 持久化

2.中文分词的工具 jieba

在这里插入图片描述
中文分词的工具有:

中科院计算所 NLPIR、哈工大 LTP、清华大学 THULAC 、斯坦福分词器、Hanlp 分词器、jieba 分词、IKAnalyzer 等


其中 jieba 分词可以做下面这些事情:

1. 精确分词

试图将句子最精确地切开

2. 全模式

把句子中所有的可能是词语的都扫描出来,速度非常快,但不能解决歧义

3. 搜索引擎模式

在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词

4. 用 lcut 生成 list

jieba.lcut 对 cut 的结果做了封装,l 代表 list,即返回的结果是一个 list 集合

5. 获取词性

jieba.posseg 模块实现词性标注

6. 获取分词结果中词列表的 top n

7. 自定义添加词和字典

使用默认分词,是识别不出一句话中的新词,需要添加新词到字典

8. 还可以做:

关键词提取、自动摘要、依存句法分析、情感分析等任务

3. 关键词提取的几个方法

在这里插入图片描述
提取 ,意思是从文本里面把意义最相关的词语抽取出来。

在文献检索、自动文摘、文本聚类/分类等任务中有重要的应用


主要有2种提取方法

1. 关键词分配

在一个已有的关键词库中匹配几个词语作为这篇文档的关键词。

2. 关键词提取

通过算法分析,提取文档中一些词语作为关键词。


其中第二种,关键词提取的常用算法有以下几个

1. 基于 TF-IDF 算法进行关键词提取

TF-IDF :用于反映一个词对于某篇文档的重要性。过滤掉常见的词语,保留重要的词语

如果某个词在一篇文档中出现的频率高,则TF 高;并且在其他文档中很少出现,则 IDF 高,TF-IDF 就是将二者相乘为 TF * IDF, 这样这个词具有很好的类别区分能力。

在 jieba 用以下代码实现

 jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=()) 

2. 基于 TextRank 算法进行关键词提取

由 PageRank 改进而来,将文本中的词看作图中的节点,通过边相互连接,权重高的节点作为关键词。

在 jieba 用以下代码实现

jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) 

3. 基于 LDA 主题模型进行关键词提取

一般步骤为:文件加载 -> jieba 分词 -> 去停用词 -> 构建词袋模型 -> LDA 模型训练 -> 结果可视化。

4. 基于 pyhanlp 进行关键词提取

可以用 HanLP 的 TextRankKeyword 实现

from pyhanlp import *
result = HanLP.extractKeyword(sentence, 20)
print(result)

4. 文本数据可视化 的几个方法

文本数据可视化 有下面三种

  1. 基于文本内容的可视化

基于词频的可视化和基于词汇分布的可视化

常用的有词云、分布图和 Document Cards

  1. 基于文本关系的可视化

研究文本内外关系,帮助人们理解文本内容和发现规律

常用的可视化形式有树状图、节点连接的网络图、力导向图、叠式图和 Word Tree 等

  1. 基于多层面信息的可视化

研究如何结合信息的多个方面,帮助用户更深层次理解文本

常用的有地理热力图、ThemeRiver、SparkClouds、TextFlow 和基于矩阵视图的情感分析可视化等


代码举例

  1. 词云
wordcloud=WordCloud(font_path=simhei,background_color="white",max_font_size=80) 
  1. 关系图

用连线图来表示事物相互关系的一种方法。

安装 Matplotlib、NetworkX

DG = nx.DiGraph()
DG.add_nodes_from(nodes)
DG.add_edges_from(weights
nx.draw(DG,with_labels=True, node_size=1000, node_color = colors) 
  1. 地理热力图

通过分词得到城市名称后,将地理名词通过转换成经纬度

使用 Folium 库进行热力图绘制地图

map_osm = folium.Map(location=[35,110],zoom_start=5)   
HeatMap(data1).add_to(map_osm)  

中文情感分析

在这里插入图片描述
图片发自简书App

中文情感分析

什么是情感分析

即分析主体对某一客体的主观喜恶和评价

由两个方面来衡量

情感倾向方向

情感倾向度

情感分析的方法主要分为两类

基于情感词典的方法

需要用到标注好的情感词典

基于机器学习的方法

需要大量的人工标注的语料作为训练集,提取文本特征,构建分类器,进行情感的分类。

分析粒度可以是词语、句子、段落或篇章

段落篇章级

如电影评论的分析

需要构建电影行业自己的情感词典,这样效果会比通用情感词典更好;

也可以通过人工标注大量电影评论来构建分类器

也可以通过聚合篇章中所有的句子的情感倾向来计算得出

句子级

大多通过计算句子里包含的所有情感词的值来得到

中文情感分析的一些难点

句子是由词语根据一定规则构成的,应该把词语的依存关系纳入到情感的计算过程中去

不同的依存关系,进行情感计算是不一样的

转载于:https://cloud.tencent.com/developer/user/1000059/activities

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值