Python学习笔记(五)正则表达式
2014-09-16 13:48
645 查看
注:学习笔记来源于自己在学习Python过程中遇到的小问题及对网络诸多大牛提供的方法的实践。
此Python版本:Python 3.3.5
Python 正则表达式
最初接触python也是在有一天问师兄,实验室要用到的语言都有什么,师兄说了一堆,什么shell、C++、matlab、perl等等,说的我晕头转向。后来做自然语言处理的大作业,有汉语分词系统、文本分类等等的题目,龟爬的我还是选择的k近邻文本分类,有进步的是,自己是用python这项脚本语言写的代码,虽然代码很少,写的也没有漂亮的结构,但,终究是用了python。写大作业的时候就决定,之后一定要写一个汉语分词,哪怕是只用正向匹配、反向匹配这样简单地机械匹配方法,自己也要经历一遍这个过程。 好啦。第一步是处理数据。下载的是:北大分词语料库语料库内容包括:已经分好的词及它们的词性标记、语料时间标签、以及中括号标记短语人名机构名等 处理数据需要做的工作是:(1)由于我们只需要分词,所以其它标记都可以去掉了。所以先把所有标记去掉,只留下由空格分隔的词,可以用作我们自己做分词之后的正确率和召回率的计算标准(2)把(1)得到的文件的词间空格去掉,可以作为需要被分词的对象(3)把(1)得到的文件里的词做成每行一个的字典的形式,用于分词过程中的匹配(4)利用分词算法,在基于字典(3)上对(2)进行分词,得到的结果与(1)相比较,计算正确率和召回率注意:在这个语料库中,有一些机构名是用 [ ]
这样的中括号括起来的,中括号里面有多个分好的词,之前的数据处理已经提取了中括号里面的词,但是中括号本身也是一个词,需要作为特殊词提取到字典里去 处理数据第一步:去掉标记!处理方法:正则表达式 pattern1 =
re.compile('\/\w+')
#在语料里匹配到 /w 这样的标记,w 指一个词,+
指一个或多个line = pattern1.sub('',
line)
#把line中匹配到的词替换成‘无’,也就是去掉
('\]\w{2}')
替换 ] 和 ] 后面的两个词('^\s+')
替换以 空格 开始的一个或多个空格('\s+$')
替换以 空格 结束的一个或多个空格('\s+')
替换一个或多个 空格 处理数据第二步:生成字典! (1)去掉所有标记,只留空格,那么以空格为标准
split 一下就出现了字典 pattern2 = re.compile (' ') string = pattern2.split(line)再把 string 里的字符串输出,就是字典(2)语料里有一些特殊词是这个样子的:
标记为nt的是一个机构名,是一个大词,里面还有几个小词。第一步是去掉了所有的标记,生成了小词的字典,并没有把机构名这样的大词考虑进去。所以,我们应用正则表达式的时候,可以先把 /w+ 这样的模式匹配掉,留下 [ ]nt 这样的模式通过另一个正则来匹配中括号里面的词语。执行:
红框里的含义就是匹配以 [ 为开始,以 ] 为结尾,中间有至少1个字的任意文本的模式。讲解:<来自“正则表达式30分钟入门教程”>
——————————————————————————————————————————
相关文章推荐
- Python学习笔记8:标准库之正则表达式
- 基于python的正则表达式学习笔记
- (转)Python爬虫学习笔记(2):Python正则表达式指南
- Python 学习笔记 正则表达式
- 【python学习笔记】用正则表达式从含中文的网页中提取数据(含编码转换)
- Python基础教程 正则表达式 学习笔记
- python 学习笔记(5)用户自定义类正则表达式
- python学习笔记4-正则表达式
- Python学习笔记(四):面向对象、正则表达式(快速入门篇)
- python 正则表达式 学习笔记(不断补充ing)
- python 学习笔记 10 -- 正则表达式
- Python学习笔记:正则表达式
- Python学习笔记 第二部分 - 正则表达式 与 爬虫小实例(抓取豆瓣电影中评分大于等于8分的影片)
- 基于python的正则表达式学习笔记
- Python学习笔记(十):Python正则表达式
- Python之学习笔记(正则表达式)
- python的正则表达式学习笔记
- Python 学习笔记 (5)—— 正则表达式
- python学习之正则表达式笔记
- Python学习笔记<正则表达式与python>