nlp——python学习记录

这篇博客介绍了Python在自然语言处理(NLP)中的应用,强调了Python的重要性,特别是re正则表达式库的使用,通过实例展示了如何匹配文本中的特定模式。同时,博主还探讨了Numpy库,解释了其在科学计算中的作用,如矩阵运算和数据处理。文中通过创建和操作数组,展示了Numpy的切片、比较和数值替换等功能。

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

NLP:Natural Language Processing,自然语言处理,是计算机科学领域以及人工智能的重要研究方向。我个人理解就是让机器理解我们人类使用的语言,就像小布(一加)聊天,你跟他说设置一个闹钟他能理解你的语言并做出相应操作。学习NLP时python是很重要的一项工具,当时大二的时候有进行学习过,但是并不深,所以接下来决定重新学习python,所以接下来会更新关于python的学习记录。

今天跟着张老师给的课程进行了学习,对nlp了解也更为深刻,希望接下来能有更深的认识。

python的re正则表达式,下面是对该库进行了实操,还对numpy库进行了了解。

import re #正则表达式
'''
text_string = '文本最重要的来源无疑是网络。我们要把网络中的文本获取形成一个文本数据库。' \
              '利用一个爬虫抓取到网络中的信息。爬取的策略有广度爬取和深度爬取。' \
              '根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分。'
#regex='爬虫' #换成文本试试
#regex='爬.' #匹配爬+任一一个字符,这里的“.”表示一个字符,换行除外,换成“用户+任一字符”试试
#regex='^文本' #查找以文本开头的,格式为“^a”,如果要匹配以a为结尾的话,使用格式为“a$”
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)#有匹配到的话将其打印出来
'''
'''
text_string = [ '[重要的]今年第七号台风23日登陆广东东部沿海地区',
                '上海发布车库销售监管通知:违规者暂停网签资格',
                '[紧要的]中国对印连发强硬信息,印度急切需要结束对峙']
regex='^\[[重紧]..\]' #提取以[重要的]或[紧要的]为起始 “所以使用了^” 的新闻标题。
#[]匹配多个字符[cd]ab,重要的紧要的,后面两字都是相同的,[]是特殊字符,所以需要转义字符\
#如果想要匹配字符串中的“\”,可以使用 r“\\” 或者"\\\"
for line in text_string:
    if re.search(regex,line) is not None:
        print(line)
    else:
        print('not match')
'''
'''
#抽取文本中的数字:[0-9]代表从0到9的所有数字,[a-z]代表从a到z所有小写字母,{3}代表重复之前的三次。[0-9]{3}代表[0-9][O-9][O-9]。
year_string=[]
strings=['war of 1812', 'there are 5280 feet to a mile',' happy new year 2016!']
for string in strings:
    if re.search('[1-2][0-9]{3}', string):
        year_string.append(string)
print(year_string)
'''
'''
#抽取所有的年份:re模块的另一个方法findall()可以返回匹配带正则表达式的那部分字符串。
strings='2020 is a good year,but 2021 will be better'
years=re.findall('[2][0-9]{3}',strings)
print(years)
'''

#Numpy(Numerical Python):是高性能科学计算和数据分析的基础包,提供了矩阵运算的功能,主要功能如下:
#ndarray是一个具有向量运算和复杂广播能力的多为数组对象。
# "广播"可以这么理解:当有两个维度不同的数组(array)运算的时候,可以用低维的数组复制成高维数组参与运算(因为Numpy运算的时候需要结构相同)。
#用于对数组数据进行快速运算的标准数学函数。
#用于读写磁盘数据的工具以及用于操作内存映射文件的工具。
#非常有用的线性代数,傅里叶变换和随机数操作。
#用于集成C/C++和Fortran代码的工具

import numpy as np
'''
#创建numpy组
vector=np.array([1,2,3,4])
matrix=np.array([[1,'Tim'],[2,'Joey'],[3,'Tonny'],[4,'Frank']]) #打印出来会是一个矩阵形状
print(vector)#向量
print(matrix)#矩阵

#获取Numpy中数组的维度
#方法arange (n),生成一个到n-1的数组。
#方法reshape (m, n),构建一个m行n列的array对象。
a=np.arange(15).reshape(3,5) #创建一个3行5列的数组,随机
print(a)
print(a.shape)#返回值(3,5)是一个元组,3行5列

#Numpy支持像list一样的定位操作。输入下面的的代码,可以得到结果为2。
matrix=np.array([[1,2,3],[20,30,40]])
print(matrix[0,1]) #数组索引

#Numpy支持像list一样的切片操作。
matrix=np.array([
    [5,10,15],
    [20,25,30],
    [35,40,45]
]
)
print(matrix[:,1])#选择所有的行,但是列为1的数据
print(matrix[:,0:2])#选择所有的行,,但是列为0和1的数据
print(matrix[1:3,0:2])#选择行为1和2,列为0和1的数据

#Numpy强大的地方是数组或矩阵的比较,比较之后会产生boolean值。
matrix=np.array([
    [5,10,15],
    [20,25,30],
    [35,40,45]
]
)
m=(matrix==25)
print(m)
second_column_25=(matrix[:,1]==25)#将第一列与25进行比较,是否同行
print(second_column_25)
print(matrix[second_column_25,:])#返回true的那一行数据

#Numpy可以运用布尔值来替换值。
matrix=np.array([
    [5,10,15],
    [20,25,30],
    [35,40,45]
]
)
second_column_25=(matrix[:,1]==25)#将第一列与25进行比较
matrix[second_column_25,1]=10#将true值的行与第二列的数值替换为10
print(matrix)

vector=np.array([5,10,15,20])
ten_or_five=(vector==10)|(vector==5)#返回bool值
vector[ten_or_five]=50#将true的位置数值替换成50
print(vector)

#在大数据处理中,会出现空值的情况,我们有必要替换为其他的值或者删除。
matrix=np.array([
    ['5','10','15'],
    ['20','25','30'],
    ['35','40','']
]
)
second_column_25=(matrix[:,2]=='')
matrix[second_column_25,2]='0'#"="赋值
print(matrix)
'''
#sum):计算数组元素的和;对于矩阵计算结果为一个一维数组,需要指定行或者列。
#mean():计算数组元素的平均值;对于矩阵计算结果为一个一维数组,需要指定行或者列。
#max():计算数组元素的最大值;对于矩阵计算结果为一个一维数组,需要指定行或者列。
matrix=np.array([
    [5,10,15],
    [20,25,30],
    [35,40,45]
]
)
print(matrix.sum(axis=1))#行和
print(matrix.sum(axis=0))#列和

vector=np.array([5,3,6,7])
print(vector.sum())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值