自然语言处理 学习笔记(一)

个人学习nlp笔记:学习材料CS124、COSC572和《Speech and Language Processing》第三版

在这里插入图片描述

1.正则表达式和文本标准化

Regular Expressions, Text Normalization & Edit Distanc

1.1正则表达式

在线正则测试: 连接
一段英文文本: 连接
相关文字推荐推荐: 连接
在这里插入图片描述
[]表示字符集合,仅代表一个字符,在regexpal上使用[Oon]和[Oo]n就明白了
在这里插入图片描述
^表示否定,[^Oo ]匹配满足条件“开头不为O、o或空格,第二字符为n”的字符**,**[^e^]匹配满足条件既不是e也不是^的字符,[^a-x .,-\]’”“],匹配y和z,用\来表示转义字符,[^A-Za-z][Tt]he[^A-Za-z]表示定位the同时剔除other, there…

在这里插入图片描述

在这里插入图片描述
^和$用于表示开头和结尾
在这里插入图片描述

Error type 匹配"the" 错误原因 解决办法
False positive the 没有匹配大写的The 提高准确率(accuracy & precision)
False negative [tT]he 把其他词也给一起匹配了(there) 提高召回率(recall)

正确方法: [^a-zA-Z][tT]he[^a-zA-Z]!

精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。召回率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。
召回率和准确率的理解

1.2文本标准化(text normalization)

文本标准化本质就是把所有文本转化为一个更方便处理和标准化的形式,比如把U.S.A和USA匹配。
每一个NLP的工作都需要做文本标准化:

  1. 对文本进行分词(Segmenting\tokenizing words)
  2. Normalizing word formats
  3. Segmenting sentences in running text

1.2.1词语切分(word tokenization)

tokenization指词语的词语切分,比如在中文中没有空格符一句话应该这样切分,已得到词语数据:

我/今天/很/开心

在英文或其他语言中也存在着这样的问题,比如单词San Francisco应当理解成一个词而不是因为空格而被切分,不过一般都用Segmentation来表示中文的分词。

在这里插入图片描述
一些英文分词会遇到的问题,大都和符号以及缩写有关

在这里插入图片描述
在cs124中介绍了一种非常简单的中文分词方法,大致就是一次找到词典中最长的词,但是对英文显然效果不好。

1.2.2大写转换(Case folding)

字母在句子开头为大写,如The和the,因此需要进行标准化处理, 比如把所有字符都转为小写,统一大小写(当然有的词大小写的化意思不一样如china和China)。

1.2.3词型还原(lemmatization)

把形式发生变化的单词转换为最原始的形态,比如are,is都为be,这样对查找表达中心意思词的情况下会很有帮助。(在一些机器翻译的场景下)

I [wanted] to learn -> I want to learn
want 就能轻松被定位和翻译为想要…

Stemming看一看做简化版的lemmatization,只对单词的后缀进行处理。
语素(Morphemes)表达的意义有两种:词汇意义(Stems)和语法意义(Affixes),将其还原成根形式(stems)。

respectful
respect [真正代表词汇意义的部分]
-ful [代表形容词词型的后缀]

automate(s),automatic, automation 全部还原到 automate

在这里插入图片描述
一些常见的后缀等等,但基于规则也会出错,比如sing和string虽然有ing,但就是一个词,但这类词前面都是没有元音(vowel)的,我们又可以基于这个规则剔除sing…这类词(但不是完美的,比如something和nothing怎么办?)

[aeiou].*ing$ 正则

虽然再test data上出现没见过的单词,比如lower,而训练集上已经有low,lowest,我们可以用Stemming 或者 lemmatizing方法将其归类到low上,但有时候我们又想保留这些信息,比如在做词性标记时候,low和lower还是需要加以区分的。除了Porter’s algorithm外,在《Speech and Language Processing》还介绍了Byte-Pair Encoding方法,一种用迭代的方式把一起出现频率高的单词字母融合。这样在我们对test data进行分词时候,我们就直接用这些处理后的词典(merges)来进行分词。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值