nltk(4)——加工原始语料库
来源:互联网 发布:mirna引物设计软件 编辑:程序博客网 时间:2024/04/28 03:46
加工原始语料库
分词
做自然语言处理,一定离不开数据资源,即对数据资源的分析,了解其中潜在的内容。
网络上存在众多的资源,如文本,网页等等。这次写的主要是文本和网页。
1、我们要使用程序获取本地或网络上的资源,从而使众多的资源成为自己的资源
2、如何对资源进行简单的处理,例如标点符号等等,使文本符合我们的要求。
3、编写程序格式化我们想要的输出。
电子书
查看书中的代码是from urllib import urlopen
,但是在更新的nltk中已经没有这个导入了,取而代之的是from urllib import request
所以从网络中下载电子图书并进行处理:
from urllib import requesturl = "http://www.gutenberg.org/files/2554/2554.txt"raw = request.urlopen(url) #从网络中下载电子书,转换成纯文本的字符串type(raw)len(raw)
对文本进行分词:
书中的原始代码tokens = nltk.word_tokenize(raw)
但是更新后的nltk,相关的api变了,新的分词为:
from nltk import tokenizetokens = tokenize.word_tokenize(raw)type(tokens) #返回得到是一个list链表
此处得到的是一个链表,文章中说对链表进行进一步的处理,将链表转换成nltk.Text类型,由此可以进行nltk提供的各种方法的处理。(至于为什么暂时未搞懂)
text = nltk.Text(tokens)type(text)tokenstext
可以看出来,两种类型还是有一定的区别的,转换成Text后就不是list了
当然如果已经将文件下载到了本地,python也提供了oi操作,读取本地文件。
from nltk import tokenizefile = open('/home/ubuntu/Documents/111.txt')raw = file.read()tokens = tokenize.word_tokenize(raw)text = nltk.Text(tokens)
这样读取了本地的文件,完成了上面的相关操作。
HTML
很多自然语言处理都是和网页有关的,想要对html进行处理,nltk提供了方法。
1、使用request.openurl()
方法获取html
2、将html文件读取成文本。read()
3、将html的标签过滤掉nltk.clean_html(html)
,得到无html的文本资料。
4、对文本进行处理。
from urllib import requestfrom nltk import tokenizestream = request.urlopen("http://geek.csdn.net/news/detail/58565")html = stream.read() #读取文件成文本raw = nltk.clean_html(html) #过滤html标签tokens = tokenize.word_tokenize(raw)text = nltk.Text(tokens)
字符串处理常用方法
因为在进行上面的处理是,我们需要对原始字符串进行一定的处理,所以掌握常见字符串的处理方法也是必要的。
正则表达式使用
在自然语言处理的初始阶段,对原始语料进行处理时,正则表达式的使用非常频繁。正则表达式的使用可以参考网络上其他博客。
关于正则表达式的使用这里介绍re库两个函数:
search(pattern, string ,flags=0)
官方解释为:Scan through string looking for a match to the pattern, returning a match object, or None if no match was found.
意思就是该方法是扫描一个字符串判断字符串是否满足设定的正则表达式匹配模式,如果匹配成功,则返回一个匹配对象,否则返回nome
testwordlist = "aksdjeiruiurixckjxvsdouauosdfouii"w = re.search(r'[aeiou]{2,}',testwordlist) #匹配字符串中含有连续两个或两个以上的元音print(w)
可以看出返回值的类型不是一个list或是匹配的单词
所以要从文本中过滤出想要的文本的时候:使用if判断
[w for w in nltk.corpus.words.words() if re.search(r'[aeiou]{2,}',w)]
re.findall(pattern, string ,flags = 0)
官方解释:Return a list of all non-overlapping matches in the string.
If one or more capturing groups are present in the patern, return a list of groups; this will be a list of typles if the pattern has more than one group
意思:函数将返回一个列表,这个列表中包含从字符串中匹配了的非重叠的匹配项(这个non-overlapping我也没明白什么意思,但可以确定不是重复的意思)。
如果匹配模式中有多个匹配组,那么返回的列表将是一个包含元组的列表。即列表的单项是元组
testwordlist = "aifffaihhioilleiio"re.findall(r'[aeiou]{2,}',testwordlist)
可以看出返回的是所有匹配的内容,且有重复对象
对比:
返回对象不同:search方法返回的是一个包含匹配信息的对象;findall方法返回的是一个list,其包含所有匹配成功的内容,注意不是匹配的源对象。
- nltk(4)——加工原始语料库
- nltk(3)——语料库
- 现代汉语语料库加工规范
- 2.NLTK之文本语料库
- 文本分析--NLTK语料库选择
- nltk中文语料库使用总结
- 影评分析初级 nltk 电影语料库
- 3.NLTK之加工原料文本
- Pyhon 自然语言处理(一)NLTK及语料库下载
- 语料库————(二)
- 【链接】中医药文献语料库——参考文献
- MM—公司委托加工流程(转贴)
- nltk(1)——常用函数
- NLTK学习笔记——开篇
- 语料库
- 语料库
- 语料库
- 语料库
- reflux+react web 第三种写法
- ubuntu MYSQL添加远程用户
- Apple Pay接入详细教程
- 代码判断发布的是debug版本还是release版本
- win7 64位下配置caffe的Python接口
- nltk(4)——加工原始语料库
- iOS setBackgroundImage不起作用
- mongodb启动不了:child process failed, exited with error number 100
- 【Android进度条】三种方式实现自定义圆形进度条ProgressBar
- spring之spring mvc的DispatcherServlet
- Nginx + Tomcat 服务器集群架构及调优心得小结
- java的List排序
- 利用urllib和beautiful soup下载网页图片
- dstat-多功能的系统资源统计工具