文章目录

  • 一、分词
    • 1.最大匹配分词法
    • 2.基于语言模型的分词
  • 二、拼写纠错
    • 1. 如何解决错别字错误?
  • 三、停用词过滤
  • 四、词的标准化—normallzation
    • 1.Stemming—词干提取
    • 2. Lemmatization—词形还原

一、分词

  中文中常用的分词工具(Word Segmentation Tools)有JieBa分词,SnowNlp,HanLP。

1.最大匹配分词法

  最大匹配分词法是一种基于字符串匹配和规则的方法,这种方法依赖于词典的信息,对于词典以外的信息,认为没有见过。最大匹配分词法会优先考虑长词,如果优先考虑短词则是最小匹配分词法。如果从前往后匹配则是前向匹配,如果从后往前匹配则是后向匹配。

以前向最大匹配法,这句话会分成
他 说 的确 实在 理
以后向最大匹配法,这句话会分成
他 说 的 确实 在理

在汉语中,后向匹配的准确率比前向匹配的准确率高,这是因为汉语中存在中心词偏后的现象。
最大匹配法的缺点是什么?
  这种方法的优势在于切分简单,很容易将待切分的字符串分成不同的词,但是这种方法很容易生成不符合语法逻辑的分词结果,不符合汉语常用的语法规则(不像人话)。

2.基于语言模型的分词

  语言模型可以说是自然语言处理中最重要的模型。语言模型可以看做是一个函数,用于计算一个句子出现的概率,即语言模型可以判断某一句话是不是人话。那么我们怎么利用语言模型进行分词呢?我们可以采取这样的套路,对于待切分的句子,我们生成所有可能的切分,使用语言模型对所有可能的分词模型进行打分,选择概率最高的作为分词结果,最终得到最符合语言模型的结果。其原理为:

这样求解下来,容易出现数据稀疏问题,如果假设:假设每个词的出现概率是独立的,那样,就可以将上面的条件概率分布简化为如下一元语言模型:

但是很明显每个词出现的概率不可能是独立的,所以我们可以放宽假设,这就涉及到NLP领域最重要的假设:马尔科夫假设,假设任意一个词,它的出现概率只与前面出现的一个词(或者几个词)有关,那么,基于这个假设就可以将上面的条件概率分布简化为如下二元语言模型:

这就是基于N-gram的语言模型。其思路是:利用链式法则,将联合概率分布转化为条件概率分布乘积的形式,然后再近似估计每一个单词的条件概率,最后得到每一个句子出现的概率。


我们需要做的是:对于这个带权重的有向图,我们需要寻找从第一个节点到最后一个节点的一条路径,这条路径使得对应边上权重的乘积最大。我们可以使用动态规划算法来解决这个DP问题。比如:维特比算法,将分词任务转变成有向图中路径检索的任务,检索出最优路径,即得到最好的分词结果。

二、拼写纠错

  拼写错误在英语中比汉语中更加常见。拼写纠错的前提是你所要输入的词是在词典中的,所使用的词典是非常完备的。我们可以将拼写错误分成两种情况:一种是错别字错误;另一种是语法错误。

1. 如何解决错别字错误?

  1. 首先是发现错误
    假设有一个非常完备的包含所有正确单词的词典,将用户的词在词典中寻找,如果没有发现,那么认为用户单词拼写错误
  2. 纠正错误
    纠正错误的核心是如何生成候选的单词,要求候选的词与输入非常相近,这时,我们就需要一个度量方式(编辑距离),来度量两个单词之间是否相似,我们把编辑距离最小的词当成它的候选。
  • 输入(用户输入)
  • 从词典中寻找编辑距离最小的候选(生成编辑距离为1,2的字符串)
  • 过滤
    我们如何进行过滤呢?
    这里要用到noisy channel model


    贝叶斯公式:

    其中,P(c)P(c)P(c)就是一个语言模型,P(s|c)就是在字符串c出现的前提下,字符串s出现的概率。这样处理相当于将一个复杂问题划分成两个子问题乘积的形式来考虑。
  • 返回

最小编辑距离Minimum Edit Distance(MED)
  两个字符串之间的最小编辑距离可以定义为将字符串1转化为字符串2的最小的[插入/删除/替换]的操作数。

字符串"ABC"到字符串“BC”的操作数为1。

字符串“INTENTION”转变成字符串“EXECUTION”的操作数为5。
  最小编辑距离有如下应用:拼写纠错,基因序列对齐;评估机器翻译与语音识别中的错误。
  如何计算两个字符串的最小编辑距离?
这是一个DP问题,需要使用动态规划算法,两个字符串的最小编辑距离可以划分成计算两个子串的最小编辑距离。

如果两个子串Am == Bn,则两个字符串的最小编辑距离等于去掉这个子串的最小编辑距离。
如果两个子串Am != Bn,则分别计算三种操作的最小编辑距离,选择编辑距离最小的,即为最小编辑距离。

三、停用词过滤

  对于NLP应用,我们通常会先把停用词、出现频率很低的词汇过滤掉,这其实类似于特征筛选的过程。在英文里,比如:“the”,“an”,“their”这些都可以作为停用词来处理,但是,也需要考虑对应的应用场景。这一部分会基于已维护的停用词表来做,只要这个词出现在停用词表中,就将这个词删掉。

四、词的标准化—normallzation

  Acronyms(缩略语)

  Accents(口音)

  Capitalization(大小写转换)

  其他,诸如:日期的统一

1.Stemming—词干提取

  只保留词根(通常只是删除后缀),将不同词性的单词统一成为同一词干的形式。

 keeping only the root of the word (usually just deleting suffixes)

例如:
’ economy, economic, economical, economically, economics, economize => econom

2. Lemmatization—词形还原

  仅保留lemma
例如:
produce, produces, product, production => produce

不论是词干提取还是词形还原现在都可以直接调用现成的工具库来使用。


如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论或者私信!


NLP基础—2.文本预处理相关推荐

  1. NLP基础 - 计算文本的相似度

    NLP基础 - 计算文本的相似度 一.计算文本的相似度简介 二.举例 一.计算文本的相似度简介 计算两个文本间的相似度在NLP领域中的应用非常广,包括:搜索引擎.问答系统.聊天机器人.文本分类等. 计 ...

  2. 关于NLP中的文本预处理的完整教程

    实现文本预处理 在下面的python代码中,我们从Twitter情感分析数据集的原始文本数据中去除噪音.之后,我们将进行删除停顿词.干化和词法处理. 导入所有的依赖性. ! pip install c ...

  3. python进行文本预处理_用python做NLP:中文文本预处理

    数据挖掘入门与实战  公众号: datadw 一 得到原始文本内容 def FileRead(self,filePath): f = open(filePath) raw=f.read() retur ...

  4. 文本预处理库spaCy的基本使用(快速入门)

    文章目录 spaCy 简介 spaCy 安装 spaCy的基本使用 spaCy中的几个重要类 spaCy的处理过程(Processing Pipeline) 实战:对中文进行分词和Word Embed ...

  5. 【NLP】文本预处理:删除单词停用词

    作者 | Chetna Khanna 编译 | VK 来源 | Towards Data Science 我们很清楚这样一个事实:计算机可以很容易地处理数字. 然而,我们掌握的大部分信息都是以文本的形 ...

  6. 使用Stanford NLP software进行中文文本预处理

    中文文本预处理的几个主要步骤有: 中文分词,词性标注,生成词向量,生成中文依存语法树. Stanford NLP software是Stanford NLP小组提供的一个NLP处理工具集合,部分工具支 ...

  7. Task02:学习笔记文本预处理;语言模型;循环神经网络基础

    Task02:学习笔记文本预处理:语言模型:循环神经网络基础 文本预处理 文本是一类序列数据,一篇文章可以看作是字符或单词的序列,本节将介绍文本数据的常见预处理步骤,预处理通常包括四个步骤: 读入文本 ...

  8. NLP | 文本预处理

    一.文本预处理 作用:文本语料在输送给模型前一般需要一系列的预处理工作,才能符合模型输入的要求,如:将文本转化成模型需要的张量,规范张量的尺寸等,而且科学的文本预处理环节还将有效指导模型超参数的选择, ...

  9. NLP任务中的文本预处理步骤、工具和示例

    作者 | Viet Hoang Tran Duong 来源 | DeepHub IMBA 头图 | CSDN付费下载于视觉中国 数据是新的石油,文本是我们需要更深入钻探的油井.文本数据无处不在,在实际 ...

  10. 动手学深度学习(文本预处理+语言模型+循环神经网络基础)

    文本预处理 文本是一类序列数据,一篇文章可以看作是字符或单词的序列,本节将介绍文本数据的常见预处理步骤,预处理通常包括四个步骤: 读入文本 分词 建立字典,将每个词映射到一个唯一的索引(index) ...

最新文章

  1. bootstrap java_查看tomcat启动文件都干点啥---Bootstrap.java
  2. Overlay 网络 — Overview
  3. 英伟达开源行人生成/重识别代码
  4. [转]宝文!Apple Push Notification Service (APNS)原理与实现方案
  5. 南工大计算机学院,江南-欢迎访问湖北工业大学计算机学院官方网站
  6. 详解vmware安装
  7. 开发对接微信卡包会员卡_产品||AI刷脸会员+电子会员卡
  8. WCF 第一章 基础 更多关于配置文件的内容
  9. 校园网网络命令拓扑命令+详解集合
  10. excel中如何进行元单位到万元单位的转换
  11. python输入直角三角形两条直角边、输出斜边长_python直角三角形的两个直角边、求斜边_直角三角形斜边公式计算器 两个直角边边长的平方加起来等......
  12. 学妹跑过来问我为啥Xshell 打不开了,让我帮她处理下【手把手讲解】
  13. 201771010112罗松《面向对象程序设计(java)》第十一周学习总结
  14. 1101 -- 正弦和余弦
  15. Linux桌面录屏分享
  16. java开发面试复试_【java开发初轮技术面试以后 复试一般问什么?】-看准网
  17. DBA职业生涯规划:八步打造高级DBA专家
  18. 面试题详解:如何用Redis实现分布式锁?
  19. 基于android的防抖音直播,uniapp 仿火山 / 抖音短视频|uni-App+vue 直播实例
  20. ubuntu提示“播放此文件需要MPEG-4-AAC解码器,H264解码器“

热门文章

  1. SRM 207 Div II Level Two: RegularSeason,字符串操作(sstream),多关键字排序(操作符重载)...
  2. 通过计划任务使FlashFXP在晚上自动下载备份
  3. UPC 2019年第二阶段我要变强个人训练赛第六场
  4. 24.1 新建集成库工程
  5. 原生js之同级元素添加移除class
  6. 如何优雅的编写Objective-C语言?
  7. Json 入门例子【3】
  8. iOS语言中的代理模式
  9. ASP.NET简化编辑界面 V2
  10. access 数据库目录权限只读引起asp的访问错误