我是靠谱客的博主 笑点低外套,最近开发中收集的这篇文章主要介绍Stanford自然语言处理笔记1 -basic text processing,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//过年归来,虽然还想玩,但是还是要学习了,上午机器学习技法,下午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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部