赞
踩
导读:近日,微软研究院发文称,NLP即将迎来“黄金十年”。他们认为,各领域对NLP的需求会大幅度上升,对NLP质量也提出更高要求。如果你想赶上这“黄金十年”,现在好好学习还来得及!
很多的数据科学库、框架、模块以及工具箱可以有效地实现NLP大部分常见的算法与技术,掌握与运用正则表达式、Numpy是开始NLP工作的好方式。
作者:涂铭,刘祥,刘树春,如需转载请联系大数据(ID:hzdashuju)
对于自然语言处理的学习,很多人会争论用什么样的编程语言实现最好?有些人认为是Java或者时下流行的Scala,我认为Python才是最佳的选择!
对于学习和从事自然语言处理工作来说,Python具有几大优势:
提供丰富的自然语言处理库
编程语法相对简单(尤其易于理解)
具有很多数据科学相关的库
01 正则表达式在NLP的基本应用
正则表达式是一种定义了搜索模式的特征序列,主要是用于字符串的模式匹配,或是字符的匹配。随着计算机的普及以及互联网的发展,大量的信息以电子文档方式呈现在人们的面前。
NLP通常所需要处理的语料一部分来自于web网页的信息抽取,一部分来自于文本格式的文档。Web网页具有很强的开发价值,具有时效性强,信息量大,结构稳定,价值高等特点,文本格式的文档多来源于人为编写或系统生成,其中包含了非结构化文本、半结构化文本以及结构化文本。
正则表达式的作用之一是将这些文档内容从非结构化转为结构化以便后续的文本挖掘。
正则表达式的另一个作用就是去除“噪声”。在处理大量文本片段的时候,有非常多的文字信息与最终输出的文本无关,这些无关的片段称之为“噪声”(比如url或链接、语气助词、标点符号等)。
正则表达式是处理NLP的最基本的手段之一,学习与掌握正则表达式在Python中的应用,可以帮助我们在格式复杂的文本中抽取所需要的文本信息。
比如说抽取以下文本中的年份,每一行的格式不同,因此没有办法通过Python提供的字符串方法来抽取,这个时候我们往往考虑使用正则表达式。
-“July 16, 2017”
-“16/07/2009”
-“Summer 2008”
02 匹配字符串
在Python中,我们会使用re模块来实现正则表达式。为了让大家更好地理解正则表达式在Python中的应用,我们会通过一系列的例子来阐述。
案例中,我们会提到re的一个方法: re.search。
通过使用re.search(regex,string)这个方法,我们可以检查这个string字符串是否匹配正则表达式regex。如果匹配到,这个表达式会返回一个match对象,如果没有匹配到则返回None。
我们先看下准备的有关爬虫介绍的文字信息。句子和句子之间是以句号分隔。具体的文本如下所示:
文本最重要的来源无疑是网络。我们要把网络中的文本获取形成一个文本数据库。利用一个爬虫抓取到网络中的信息。爬取的策略有广度爬取和深度爬取。根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分。
例1 获取包含“爬虫”这个关键字的句子
查找哪些语句包含“爬虫”这个关键字。Python的代码实现如下:
import retext_string = '文本最重要的来源无疑是网络。我们要把网络中的文本获取形成一个文本数据库。利用一个爬虫抓取到网络中的信息。爬取的策略有广度爬取和深度爬取。根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分。'regex = '爬虫'p_string = text_string.split('。') #以句号为分隔符通过split切分for line in p_string: if re.search(regex,line) is not None: #search方法是用来查找匹配当前行是否匹配这个regex,返回的是一个match对象 print(line) #如果匹配到,打印这行信息
运行上面的程序,我们可以看到输出结果为:
利用一个爬虫抓取到网络中的信息根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分
例2 匹配任意一个字符
正则表达式中,有一些保留的特殊符号可以帮助我们处理一些常用逻辑。如下表所示。
符号 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。