您的位置:首页 > 编程语言 > Python开发

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分钟入门教程”>

——————————————————————————————————————————

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: