【语言处理与Python】3.5正则表达式的有益作用

提取字符块

#找到所有的无重叠的匹配指定的正则表达式

re.findall(r’[aeiou]’,word)

#看看一些文本中的两个或者两个以上的元音序列,并确定他们的相对频率

wsf=sorted((set(nltk.corpus.treebank.words()))

fd=nltk.FreqDist(vs for word in wsj

                 for vs in re.findall(r’[aeiou]{2,}’,word))

fd.items()

在字符块上做更多事情

#我们可以对元组进行索引操作,这样可以更方便的使用

nltk.Index()

查找词干

抽出一个词的词干的方法有很多种,最简单直观的办法就是直接去掉看起来像一个后缀的字符。

#首先使用正则表达式,建立一个所有后缀的连接

re.findall(r’^.*(ing|ly|ed|ious|ies|ive|es|s|ment’)$’,’processing’)

这样匹配出来的的结果是[‘ing’]

#注意:这里只是返回给了我们后缀。这是因为括号有第二个功能,选择要提取的子字符串,#这一点很重要,如果这一点遗忘,那么后面的阅读将会非常的不顺利。如果想要使用括号

#来指定连接的范围,但不想选择要输出的字符串,必须添加“?:”,他是许多神秘奥妙的正#则表达式之一。

#使用正则表达式把词干和后缀分离。但是要注意*是贪婪的,如果要取消他的贪婪要加?

re.findall(r’^(.*)(ing|ly|ed|ious|ies|ive|es|s|ment)$’,’processing’)

[(‘process’,’ing’)]

搜索已分词文本

#注意尖括号和小括号的作用

from nltk.corpus import gutenberg,nps_chat

moby=nltk.Text(gutenberg.words(‘melville-moby_dick.txt’))

moby.findall(r‘<a>(<.*>)<man>’)

#最终结果是显示满足小括号里面的内容

monied;nervous;dangerous;white;white;white;pious; queer; good;

mature;white;Cape;great; wise;wise;butterless; white;fiendish;

pale; furious; better;certain; complete; dismasted; younger;brave;

brave; brave; brave
原文地址:https://www.cnblogs.com/createMoMo/p/3097121.html