NLP学习(正则化)
来源:互联网 发布:kali网络摄像头 编辑:程序博客网 时间:2024/05/23 20:56
学习自 Speech and language processing 3rd ed
https://web.stanford.edu/~jurafsky/slp3/
注:以下双斜线中间的都表示匹配模式 /*/
1.基础正则表达式模式
输入你想要匹配的字符
注意:正则表达式是大小写敏感的,若现在想匹配W或w,可以使用 /[Ww]/ 做匹配
方括号[]中间的内容只要匹配其中的一个就算匹配成功
若觉得此处的/[1234567890]/过于麻烦,可以简化为/[0-9]/,就是在中间加一短横,同样,所有的大写字母可以简化成/[A-Z]/
那如果我们想要匹配的是 非大写字母 呢,我们可以在中括号最前面加一个^符号,比如/[^A-Z]/ 就表示不匹配所有的大写字母,如果,^符号在匹配段的中间的话,^表示自己本身,见下图
注意:在匹配没有方括号[]表示的模式时,就是匹配该模式本身,^表示的是自己本身,而不是表示非,再者,若^在[]里面,但不是在开头,^也表示自己本身
若我们想匹配 woodchuck和woodchucks,怎么办呢?我们可以使用 ?, ?表示之前的一个字符由零个或者一个,见下图
那么,如果我们想匹配如下字符:
baa!
baaa!
baaaa!
baaaaa!
…
我们可以使用星号 * ,表示之前的一个字符有零个或者多个,因此,若我们要表示连续一个或多个a,我们就要使用 /aa*/ 的方式匹配,为什么不能用a*来匹配呢?这样有时会十分不方便,于是我们就有了另外一个符号 加号+ ,加号+表示一个或多个
现在,若我们想匹配上面的那段字符,可以使用/baaa*!/ 或者 /baa+!/ 进行匹配
另外一个重要的符号是 点号 . ,点号是一个通配符,表示任何单个字符(除了回车符),见下图
那么,现在,我们可以将点号和星号联合起来,表示任意长度的任意符号串了,
比如,我们想要匹配开头和结尾都是www的行,我们可以用 /www.*www/
锚(anchor)
又轮到 ^登场了,^可以匹配句子开头,比如我们要找以 The 开头的句子,使用 /^The/ 进行匹配,另一个anchor美元符号
还有另外两个anchor,\b 和 \B ,\b单词分隔符,\B匹配非单词分隔符,比如 /\bthe\b/ 匹配单词the而不匹配other,注意,此处的单词分隔符为除了字母,数字,下划线以外的所有符号,包括空格 \t \n $%^&等等.
2. 析取(disjunction),组合(grouping),优先关系(precedence)
假如我们现在希望能搜索字符串cat或者dog,我们如何搜索(想想我们为什么不能用/[catdog]/ ?) ,我们需要一个新的操作符,析取操作符,也叫管道(pipe symbol) | ,模式 /cat|dog/匹配cat或者dog
再假如,我想搜索 guppy或者他的复数形实guppies,我们不能使用/guppy|ies/,这时由于guppy在管道操作符 | 上有优先关系,我们使用 /gupp(y|ies)/,将匹配gupp开头,以y或ies结尾的单词
优先级的表如下:
由于星号比字符串有更高的优先级,所以/the/匹配theee… 而不是匹配thethe…,我们可以用/(the)*/来匹配thethe
3.一个简单的例子
我们要匹配英文单词里面的the
第一个想到的是/the/,但是,我们还想匹配The,因此可以用
/[Tt]he/
但是,这样也会匹配到other,我们可以用
/\b[Tt]he\b/
若我们想匹配到the25,_the,我们继续改进
/[^a-zA-Z][Tt]he[^a-zA-Z]/
但是这又带来了一个问题:模式前面的[^a-zA-Z] 要求必须匹配一个非字母的字符,因此,若我们要匹配的the处于行首,则匹配不到,因此我们可以用 /^|[^a-zA-Z]/来匹配the的前面,那么,the的结尾处同理,我们得到如下表达式
/(^|[^a-zA-Z])[Tt]he([^a-zA-Z]|$)/
4.高级操作符
比如大括号{},/a.{3}z/ 匹配 a…z ,a和z中间是三个点的字符串,有且只能有三个点
在大括号里写两个数字,表示一个范围,/a.{3,4}z/ 匹配a…z a….z,而第二个数字不写,/a.{3,}z/,表示至少有三个句点。
最后,前面的特殊操作符*.?等当要表示其本身时,使用转义字符,在前面加一个 \
详细解释见下图
- NLP学习(正则化)
- [NLP]CS224n学习笔记一:NLP介绍
- NLP 学习笔记 01
- nlp, ml, 学习书单
- NLP学习笔记
- NLP入门学习
- NLP学习笔记1
- NLP学习网址
- NLP学习笔记01
- NLP学习资料
- NLP深度学习资源
- NLP学习笔记
- NLP学习资料
- nlp中的LSTM学习
- 特征工程:机器学习中的特征与标签nlp化
- standford NLP课程笔记一 正则表达式
- NLP 学习教程 第一节 简介
- 深度学习-->NLP-->语言模型
- 收集统计信息(二) 之 dbms_stats
- butterknife使用
- Java高级特性之XML
- JS基本语法+实例
- mysql中的NULL记录和空值有什么区别
- NLP学习(正则化)
- GCD实现单例模式
- 浅谈 java /Android设计模式--代理模式(Proxy pattern)
- jQuery的函数
- React Native开发之windows开发环境最简配置
- C# 如何将Excel表格复制到Word中并保留格式
- linux环境变量自定义环境变量
- easyui 的脚本引用
- 数值的整数次方