《NLTK基础教程——用NLTK和Python库构建机器学习应用》——2.4 标识化处理-阿里云开发者社区

开发者社区> 异步社区> 正文

《NLTK基础教程——用NLTK和Python库构建机器学习应用》——2.4 标识化处理

简介:
+关注继续查看

本节书摘来异步社区《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书中的第2章,第2.4节,作者:Nitin Hardeniya,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.4 标识化处理

机器所要理解的最小处理单位是单词(即分词)。所以除了标识化处理之外,我们不宜再对这些文本字符串做更进一步的处理。这里所谓的标识化,实际上就是一个将原生字符串分割成一系列有意义的分词。标识化处理的复杂性因具体的NLP应用而异,当然目标语言本身的复杂性也会带来相关的变化。例如在英语中,我们可以通过正则表达式这样简单的方式来选取纯单词内容和数字。但在中文和日文中,这会成为一个非常复杂的任务。

>>>s = "Hi Everyone !    hola gr8" # simplest tokenizer
>>>print s.split()
['Hi', 'Everyone', '!', 'hola', 'gr8']
>>>from nltk.tokenize import word_tokenize
>>>word_tokenize(s)
['Hi', 'Everyone', '!', 'hola', 'gr8']
>>>from nltk.tokenize import regexp_tokenize, wordpunct_tokenize, blankline_ tokenize 
>>>regexp_tokenize(s, pattern='\w+')
['Hi', 'Everyone', 'hola', 'gr8']
>>>regexp_tokenize(s, pattern='\d+')
['8']
>>>wordpunct_tokenize(s)
['Hi', ',', 'Everyone', '!!', 'hola', 'gr8']
>>>blankline_tokenize(s)
['Hi, Everyone !!  hola gr8']

在上述代码中,我们用到了各种标识器(tokenizer)。我们从最简单的——Python字符串类型的split()方法开始。这是一个最基本的标识器,使用空白符来执行单词分割。当然,split()方法本身也可以被配置成一些较为复杂的标识化处理过程。因此在上面的例子中,我们其实很难找出s.split()与word_tokenize()这两个方法之间的差异。

word_tokenize()方法则是一个通用的、更为强大的、可面向所有类型语料库的标识化处理方法。当然,word_tokenize()是NLTK库的内置方法。如果你不能访问它,那就说明在安装NLTK数据时出了些差错。请参照第1章“自然语言处理简介”中的内容来安装它。

通常情况下,我们有两个最常用的标识器。第一种是word_tokenize(),这是我们的默认选择,基本上能应付绝大多数的情况。另一选择是regex_tokenize(),这是一个为用户特定需求设计的、自定义程度更高的标识器。其他的大部分标识器都可以通过继承正则表达式的标识器来实现。我们也可以利用某种不同的模式来构建一个非常具体的标识器。如在上述代码的第8行,我们也可以基于正则表达式的标识器分割出相同的字符串。你可以用w+这个正则表达式,它会从目标字符串中分隔出所有我们所需要的单词和数字,其他语义符号也可以通过类似的分割器来进行分离,如对于上述代码的第 10 行,我们可以使用d+这个正则表达式。这样我们就能从目标字符串中提取出纯数字内容。

现在,你能为提取大小写单词、数字和金钱符号构建专用的正则表达式标识器吗?

提示:只需参考之前正则表达式的查询模式来使用regex_tokenize()即可。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
WorkerMan 入门学习之(二)基础教程-Connection类的使用
一、TcpConnection类 的使用  1、简单的TCP测试 Server.php
1657 0
NLTK基础教程学习笔记(一)
由于之后图像上可能要结合NLP的问题加快节奏 刷一波NLTK,用python3
12006 0
独家 | 关于NLP和机器学习之文本处理的你需要知道的一切(附学习资源)
本文将介绍自然语言处理和机器学习中常见的文本预处理方法。
1848 0
如何使用 GeoTrellis 和 React 构建地理处理应用程序
这篇博文是使用 GeoTrellis、Akka HTTP和 React 创建GIS处理的网页应用程序的指南。翻译自凯利·英尼斯 (Kelly Innes)的博客。
160 0
《构建实时机器学习系统》一1.6 实时应用对机器学习的要求
本节书摘来自华章出版社《构建实时机器学习系统》一 书中的第1章,第1.6节,作者:彭河森 汪涵,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
964 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
12049
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载