概述
//过年归来,虽然还想玩,但是还是要学习了,上午机器学习技法,下午nlp吧=。=
//最近在看公主的男人,我家厚厚好帅=。=,实在是太呆萌了。
开始
第一部分直接讲的正则匹配=。=
We和we我都想匹配出来[Ww]e这样肯定可以搞定啦
[a-z]任意一个小写字母[A-Z]任意一个大写字母
[^a-z]任意一个非小写字母
其实[]就是在这个中括号中的任意一个都可以匹配
视频中很nice的网站:http://regexpal.com.s3-website-us-east-1.amazonaws.com/?_ga=1.18690618.2038855406.1455431192
接着|用这个来表示或a|b|c可以匹配a,b,c中的任意一个所以a|b|c=[abc]
接着是?比如colou?r这个问号代表了前面一个元素是可以有也可以没有的,所以colou?r可以匹配color也可以匹配colour
接着是*,比如oo*h这个*代表了前面一个元素可以出现任意次,0次,1次,2次都可以,比如出现0次就是oh,一次就是ooh
接着是+,比如o+h这个+代表了前面一个元素至少出现1次,所以可以匹配oh,ooh...
接着是点,比如beg.n这个点可以匹配任意一个元素,所以可以匹配begin,begun,beg3n等等=。=
上面讲了[^a-z]代表不是小写字母,而对比一下^[a-z]则代表在一行开头的任意小写字母=。=区分
^[^A-Za-z]代表什么呢?就是代表在一行开头的任意非字母元素
同理[A-Z]$表示结尾和上面讲的开头同理
两个特殊的,.$匹配一行结尾的点
而.$则匹配结尾的任意元素(注意那个点,可能不太明显=。=)
补充一点点=。=
{2,4}表示前面一个元素出现的次数为2到4之间
同时一些东西,比如.和(需要用转义来表示,.需要用.表示而(需要用(来表示。
如果不是很清楚,就在我上面给的那个网站去自己写几个例子试一试=。=
接下来是讲的word tokenization 单词化
其实就是分词吧
由于老师是讲的英语的,所以讲了一下lemma 和 wordtype之类的
lemma讲的就是来源一样,比如cat和cats其实是一个意思,只不过word form不一样
用N表示tokens的个数,就是数有多少单词
用V表示单词的种数
区别很明显,如果一个句子有两个I,前面肯定算两次,后者算一次
接着作者讲了一个unix上的tr工具,就是替换的
说到对于英语分词中,如何处理I'm I'd之类的,如果暴力处理,把非单词的部分都隔开,那么I‘m肯定变成I和m,但是实际上我们需要变成的是I AM
对于那些中间有连接符号的单词,也需要好好考虑。
相对英语来说,汉语的分词比较难,老师介绍了正向最大匹配,其实就是一个贪心。
给定汉字串和词表,从第一个汉字开始,找到在词表中出现的最长单词,如何就这样=。=
当然比起正向最大匹配,我记得逆向匹配效果更好,当然现在基本都是用统计吧,更超期是不是都用dl了=。=
下面讲了正规化=。=
老师还是主要讲的英语的正规化。
1.大写=>小写 因为人们检索的时候习惯用检索,所以大写到小写可以是一个规范化的标准。但是文中的一些大写,比如专有的,还是需要保留
2.把同根源的单词还原成根源单词,当然还包括去除词缀之类的,比如am,are,is还原成be之类的,automates,automatic,automation还原成
automat
比较简单的算法有Porter's 算法,其实就是几个简单的替换规则
step 1a
sses -> ss 比如 caresses -> caress
ies ->i 比如ponies -> poni
ss ->ss
s -> null 比如cats->cat
step 1b
(v)ing -> null walking ->walk
(v) ed ->null plastered -> plaster
当然在定义规则的时候还需要小心处理一些单词,,比如一般要求在去掉ing以后,剩余部分包含元音,比如sing就还是会保留成sing
step 2
ational ->ate 比如relational ->relate
izer ->izer 比如digitizer -> digitize
ator ->ate operator ->operate
step3
al -> null 比如revival -> reviv
able ->null 比如adjustable ->adjust
ate ->null activate ->activ
这些感觉都是语言学家需要总结出来的规则呀=。=
实在是很繁琐,
最后一部分,老师讲了,英语中句子的切分。
严格区分的标点!和?
但是句号就不能严格。
老师的课程中介绍的是决策树,简单的决策树就是一些定性的条件,比如这个句号后面有没有很多空白,或者这个句号前面的词语是不是数字,简写之类的
当然我们也可以把决策树弄复杂一点。比如这个句号前后次的形式,全大写,小写,或者只是首字母大写,或者是数字,甚至通过这个句号前面单词的长度,或者这个单词做为结束单词的频率,或者句号后面的单词作为一个句子开头的频率=。=
当然不仅仅是用决策树,其他机器学习算法,比如SVM,也可以解决这些问题。
最后
以上就是笑点低外套为你收集整理的Stanford自然语言处理笔记1 -basic text processing的全部内容,希望文章能够帮你解决Stanford自然语言处理笔记1 -basic text processing所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复