一、自然语言处理概述

定义:自然语言处理(Natural Language Processing)简称NLP,是一种利用计算机为工具对人类特有的书面形式和口语形式的自然语言的信息进行各种类型处理和加工的技术。

任务:通过处理和理解语言,来构建执行某些任务的系统

地位:人工智能与语言学的交叉学科,是人工智能的一个重要分支

NLP核心问题:文本分类、关键词提取、情感分析、语义消歧、主题模型、机器翻译、问题回答、汉语分词、垂直领域的对话机器人

·序列标注:分词、pos tag、NER、语义标注
·分类任务:文本分类、情感计算
·句子关系判断:QA、自然语言推理
·生成式任务:机器翻译、文本摘要

NLP典型应用:搜索引擎、文本主题与标签分类、文本创作与生成、机器翻译、情感分析、舆情监控、语音识别系统、对话机器人

一、基本文本处理操作

1、清理与替换

去掉空格

en_str = " hello world, hello, my name is Lucky_star!  "
#去空格及特殊符号
a = en_str.strip().lstrip().rstrip(',')
#strip能够把句子前后的空格去掉,lstrip左侧空格去除,rstrip右侧空格去除
print(a)
#hello world, hello, my name is Lucky_star!

替换字符串

#字符串替换
b = en_str.replace('hello', 'hi')
#将hello替换成hi,以返回值的形式替换,所以原字符串并没有发生变化
print(b)
# hi world, hi, my name is Lucky_star!

小运用

zh_str = "大家好, 我叫陆超"
zh_str = zh_str.strip().lstrip().rstrip(',')
zh_str = zh_str.replace("陆超", "小星星")
print(zh_str)
#大家好, 我叫小星星

2、截取

my_str = "大家好,我是李雪琴,我在北京大学,你吃饭没呢?"
#从左到右index从0开始,可以用index进行切片(左闭右开)
print(my_str[0:3])
#大家好

#从左往右index从0开始,可以用index进行切片(左闭右开)
print(my_str[4: 4+5])
#我是李雪琴

#从右往左index从-1开始
print(my_str[-1-5: -1])  #同样是左闭右开
#你吃饭没呢
#间隔截取
print(my_str[: : 2])
#大好我李琴我北大,吃没?

#翻转
print(my_str[::-1])
#?呢没饭吃你,学大京北在我,琴雪李是我,好家大

3、连接与分割

str1 = "大家好,我是lucky_star,有你们真好"
str2 = "大家好,我是李雪琴,你吃饭没呢"
print(str1 + str2)

#通过join的方式连接
strs = ["我是陆超", "我是李雪琴", "我是lucky_star"]
print(";".join(strs))
#我是陆超;我是李雪琴;我是lucky_star

#通过split的方式切分
tmp_str = "我是陆超;我是李雪琴;我是lucky_star"
print(tmp_str.split(";"))
#['我是陆超', '我是李雪琴', '我是lucky_star']

4、比较与排序

en_strs = ['ABc', 'aCD', 'CdE', 'xYz']
#以字母排序,注意是以返回值形态返回排序结果,不改变原来的list
print(sorted(en_strs))
#['ABc', 'CdE', 'aCD', 'xYz']

#自定义排序方式
def sort_fun(x):
    return x[1].lower()

print(sorted(en_strs, key=sort_fun))
#key输入sort_fun之后,就是按照函数返回结果进行排序,sort_fun是对将列表之后每个字符串中索引为1的字母变为小写之后进行排序
#['ABc', 'aCD', 'CdE', 'xYz']

print(sorted(en_strs, key=lambda x:x[2].lower()))
#['ABc', 'aCD', 'CdE', 'xYz']

5、查找与包含

#查找可以用index和find
zh_str = "我是陆超;我是李雪琴;我是毛毛姐"
print(zh_str.index("陆超"))
#2
print(zh_str.index("毛毛姐"))
#13

#print(zh_str.index("来了,老弟"))
#ValueError: substring not found

print(zh_str.find("毛毛姐"))
#13

print(zh_str.find("来了,老弟"))
#-1,因为找不到子串,所以索引返回为-1

6、大小写变换

en_str = "hello, my name is Patrick"
print(en_str.lower())
#将所有的字母小写化

print(en_str.upper())
#HELLO, MY NAME IS PATRICK

print(en_str.capitalize()) #首字母大写化
#Hello, my name is patrick

7、搜索查找更多的字符串相关操作

print(help(str))


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

11-28 07:23