当前位置:   article > 正文

Day1-正则表达式在NLP中的基本应用_第1关:正则表达式在 nlp 中的应用

第1关:正则表达式在 nlp 中的应用

目录

1:Anaconda常用命令

2:正则表达式应用

2.1 匹配字符串

2.2 转义符

2.3 抽取文本中的数字


1:Anaconda常用命令

conda --version

conda info

conda list 已安装的包

conda install package_name(package_name:包名)

例如:

conda install numpy

安装多个

conda install numpy scipy pandas

安装指定版本

conda install numpy=1.10

卸载

conda remove package_name

更新

conda update package_name

更新多有

conda update --all

2:正则表达式应用

2.1 匹配字符串

使用re模块实现正则表达式

使用re的方法:re.search(regex,string) 实现

例1 获取包含"爬虫"这个关键字的句子

  1. import re
  2. text_string = "文本最重要的来源无疑是网络。我们要把网络中的文本获取形成一个文本数据库。利用一个爬虫获取到网络中的信息。爬取的策略有广度爬取和深度爬取。根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分。"
  3. regex = '爬虫'
  4. p_string = text_string.split("。")
  5. for line in p_string:
  6. if re.search(regex, line) is not None:
  7. print(line)

输出结果:

  1. 利用一个爬虫获取到网络中的信息
  2. 根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分

例2 匹配任意一个字符

符号

含义

.

匹配任意一个字符

例如

正则表达式

可以匹配

不可匹配

"a.c"

"abc","branch"

"add","crfdadnh"

"..t"

"bat","out"

"it","table"

演示代码:

  1. import re
  2. text_string = "文本最重要的来源无疑是网络。我们要把网络中的文本获取形成一个文本数据库。利用一个爬虫获取到网络中的信息。爬取的策略有广度爬取和深度爬取。根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分。"
  3. # 修改此处
  4. regex = '爬.'
  5. p_string = text_string.split("。")
  6. for line in p_string:
  7. if re.search(regex, line) is not None:
  8. print(line)

代码基本不变,把regex中的“爬虫” 修改为 “爬.”即可。所以“爬虫”和“爬去”都匹配。

输出结果:

  1. 利用一个爬虫获取到网络中的信息
  2. 爬取的策略有广度爬取和深度爬取
  3. 根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分

例3 匹配起始和结尾字符串

符号

含义

^

匹配开始的字符串

$

匹配结尾的

例如

  1. import re
  2. text_string = "文本最重要的来源无疑是网络。我们要把网络中的文本获取形成一个文本数据库。利用一个爬虫获取到网络中的信息。爬取的策略有广度爬取和深度爬取。根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分。"
  3. regex = '^文本'
  4. p_string = text_string.split("。")
  5. for line in p_string:
  6. if re.search(regex, line) is not None:
  7. print(line)

输出:

文本最重要的来源无疑是网络

例4 使用中括号匹配多个字符

符号

含义

[]

匹配多个字符串

例如:

[bcr]at 匹配==>> bat cat rat

 

  1. import re
  2. text_string = ['重要的今年第七号台风23日登陆广东东部沿海地区','上海发布车库销售监管通知:违规者暂停网签资格','紧要的中国对印连发强硬信息,印度紧切需要结束对峙']
  3. regex = '[重紧]..'
  4. for line in text_string:
  5. if re.search(regex, line) is not None:
  6. print(line)
  7. else:
  8. print('not match')

输出:

  1. 重要的今年第七号台风23日登陆广东东部沿海地区
  2. not match
  3. 紧要的中国对印连发强硬信息,印度紧切需要结束对峙

2.2 转义符

r"\\" == "\\\\"

例如:"\\d" 可以写成 r"\d"

例子:

  1. import re
  2. if re.search("\\\\","I have one nee\dle") is not None:
  3. print("match it")
  4. else:
  5. print("not match")
  6. # 使用r"\\" 转换 "\\\\"
  7. if re.search(r"\\","I have one nee\dle") is not None:
  8. print("match it")
  9. else:
  10. print("not match")

2.3 抽取文本中的数字

1:通过正则表达式匹配年费

"[0-9]"代表从0到9的所有数字

"[a-z]"代表从a-z的所有小子字母

  1. import re
  2. strings = ['War of 1812', 'There are 5280 feet to a mile', 'Happy New Year 2016', 'What fuck 2021']
  3. year_strings = []
  4. for string in strings:
  5. if re.search('[1-2][0-9]{3}', string):
  6. year_strings.append(string)
  7. print(year_strings)

输出结果:

['War of 1812', 'Happy New Year 2016', 'What fuck 2021']

2:抽取所有年份

  1. import re
  2. year_string = '2012 是一个很不错的年,但是2020却是一个让人很不愉快的一年。'
  3. years = re.findall('[2][0-9]{3}',year_string)
  4. print(years)

输出结果:

['2012', '2020']

参考文献:python自然语言处理实践-核心计算与算法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/421142
推荐阅读
  

闽ICP备14008679号