NLP的基本手段--正则表达式

正则表达式是自然语言处理(NLP)的基础工具,用于字符串的模式匹配和信息抽取。在处理半结构化文本时,它帮助转换文本为结构化数据,并去除噪声,如URL、标点符号等。在Python中,可以借助re模块的re.search方法进行正则匹配操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

是什么?

正则表达式是一种定义了搜索模式的特征序列,主要用于字符串的模式匹配,或是字符的匹配。正则表达式是处理NLP的最基本手段之一,其可以帮助我们在格式复杂的的文本中抽取所需要的信息。

用来做什么?

  1. NLP通常所需要处理的预料一部分来自web网页的信息抽取,一部分来自文本格式的文档,但是它们的格式不统一,大部分为半结构化文本,因此需要处理它们,将其转变为结构化文本以便后续处理。
  2. 正则表达式的另一个作用是去除噪声。在处理大量文本片段的时候,有非常多的文字信息与最终输出的文本无关,这些无关片段称之为噪声(如URL或链接、语气助词、标点符号等)。

实现方法 

在Python中,我们用re模块来实现正则表达式。通过使用re的一个方法--re.search。

通过使用re.search(regex,string)这个方法,我们可以检测到string这个字符串是否匹配正则表达式regex。如果匹配到会返回一个match对象,如果没有匹配到则返回None。

  • 例一
import re
text_string = '''正则表达式是一种定义了搜索模式的特征序列,主要用于字符串的模式匹配,或是字符的匹配,正则表达式是处理NLP的最基本手段之一,其可以帮助我们在格式复杂的的文本中抽取所需要的信息,'''
regex = '正则'
p_string = text_string.split(',')                               #以逗号为分隔符划分原句
for line in p_string:
    if re.search(regex,line) is not None:                       #查找是否匹配
        print(line)                                             #如果匹配到,打印这行信息

结果:

正则表达式是一种定义了搜索模式的特征序列
正则表达式是处理NLP的最基本手段之一
  • 例二 匹配任意一个字符
符号含义
.匹配任意一个字符

正则表达式可以匹配不能匹配
a.cabcabdc
..tbatit
import re
text_string = '''正则表达式是一种定义了搜索模式的特征序列,主要用于字符串的模式匹配,或是字符的匹配,正则表达式是处理NLP的最基本手段之一,其可以帮助我们在格式复杂的的文本中抽取所需要的信息,'''
regex = '正.'
p_string = text_string.split(',')                               #以逗号为分隔符划分原句
for line in p_string:
    if re.search(regex,line) is not None:                       #查找是否匹配
        print(line)                                             #如果匹配到,打印这行信息

结果

正则表达式是一种定义了搜索模式的特征序列
正则表达式是处理NLP的最基本手段之一
  • 例三 匹配起始和结尾字符串
符号含义 
^匹配开始的字符串''^a'' 代表的是匹配所有以a开头的字符串
$匹配结尾的字符串

''a$'' 代表的是匹配所有以a结尾的字符串

import re
text_string = '''正则表达式是一种定义了搜索模式的特征序列,主要用于字符串的模式匹配,或是字符的匹配,正则表达式是处理NLP的最基本手段之一,其可以帮助我们在格式复杂的的文本中抽取所需要的信息,'''
regex = '^正'
p_string = text_string.split(',')                               #以逗号为分隔符划分原句
for line in p_string:
    if re.search(regex,line) is not None:                       #查找是否匹配
        print(line)                                             #如果匹配到,打印这行信息

结果

正则表达式是一种定义了搜索模式的特征序列
正则表达式是处理NLP的最基本手段之一
  • 例四 使用中括号匹配多个字符
符号含义例子
[ ]匹配多个字符''[bcr]at'' 代表匹配 ''bat'' ''cat'' ''rat''
[string1-string2]匹配从string1到string2的所有字符''[a-z]'' 代表从a-z的所有字符   ''[1-9]''代表从1-9的所有字符
  • 例五 转义符问题

正则表达式也使用的是“\”作为转义符,所以会有困扰

符号含义
''\\\\''前两个和后两个斜杠分别在编程语言中转义为一个反斜杠,然后这两个反斜杠再在正则表达式中转义为一个反斜杠。

 解决方法

符号含义
r''\\''同上
  • 另外,,,re.finddall(''[a-z]'',''abc1234'')得到的结果是[''a'',''b'',''c'']

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值