做一个中文文本分类任务,首先要做的是文本的预处理,对文本进行分词和去停用词操作,来把字符串分割成词与词组合而成的字符串集合并去掉其中的一些非关键词汇(像是:的、地、得等)。再就是对预处理过后的文本进行特征提取。最后将提取到的特征送进分类器进行训练。
一、什么是自然语言处理
NLP(Natural Language Processing,自然语言处理)当中所谓的「自然」是为了与人造的语言(比如 C 语言, JAVA 等)区分开来,指自然形成的语言,即平时人们日常使用的交流的语言。「语言」则是人类区别其他动物的本质特性。在所有生物中,只有人类才具有语言能力。人类的多种智能都与语言有着密切的关系。人类的逻辑思维以语言为形式,人类的绝大部分知识也是以语言文字的形式记载和流传下来的。「处理」则指的是对自然语言的各种处理方法与运用。
NLP 不仅是计算语言学的应用领域,还是计算机科学和人工智能(AI)领域的一个重要研究方向。NLP 主要研究人与计算机之间用自然语言进行有效通信的各种理论和方法。
总的来说,自然语言处理可以概括为: 就是利用计算机的强大的运算能力,采用统计手段来对语言进行处理,然后获得需要的信息,以达到最终想要的目的,而使用各种方法的一门技术。
NLP 经过多年的发展与进步,从自然语言的角度出发,基本可以划分为两个部分:自然语言的理解和自然语言的生成。
1.语言理解涉及语言、语境和各种语言形式的学科。但总的来说,自然语言理解又可以分为三个方面:
- 词义分析
- 句法分析
- 语义分析
2.自然语言的生成则是从结构化的数据(可以通俗理解为自然语言理解分析后的数据)以读取的方式自动生成文本。主要有三个阶段:
- 文本规划:完成结构化数据中的基础内容规划。
- 语句规划:从结构化数据中组合语句来表达信息流。
- 实现:产生语法通顺的语句来表达文本。
3.NLP的研究问题(主要)有下面几种:
- 信息检索:对大规模文档进行索引。
- 语音识别:识别包含口语在内的自然语言的声学信号转换成符合预期的信号。
- 机器翻译:将一种语言翻译成另外一种语言。
- 智能问答:自动回答问题。
- 对话系统:通过多回合对话,跟用户进行聊天、回答、完成某项任务。
- 文本分类:将文本自动归类。
- 情感分析:判断某段文本的情感倾向
- 文本生成:根据需求自动生成文本
- 自动文摘:归纳,总结文本的摘要。
4.一些 NLP 的一些基础专业术语。
-
分词:词是 NLP 中能够独立活动的有意义的语言成分。即使某个中文单字也有活动的意义,但其实这些单字也是词,属于单字成词。
-
词性标注:给每个词语的词性进行标注,比如 跑/动词、美丽的/形容词等等。
-
命名实体识别:从文本中识别出具有特定类别的实体。像是识别文本中的日期,地名等等。
-
词义消歧:多义词判断最合理的词义。
-
句法分析:解析句子中各个成分的依赖关系。
-
指代消解:消除和解释代词「这个,他,你」等的指代问题。
5.字符作为文本类数据的基本单元,其在自然语言处理中的地位可以说是非常的重要。而且,大部分的自然语言处理任务都是从字符上着手,下面是一些字符串操作
- 统计子串出现的次数
- 去除字符串
- 拼接字符串
- 比较(直接比较‘a‘>‘b‘)
- 字符串大小写转换
- 翻转字符串
- 查找字符串
- 判断子串是否存在
- 字符串代替
- 检查字符串
二、python实现对字符串的处理
.count()
方法返回特定的子串在字符串中出现的次数
.strip()
方法可以去除字符串首尾的指定符号。无指定时,默认去除空格符 ‘ ‘
和换行符 ‘\n‘
.lstrip()只去除开头的
.rstrip()只去除结尾的
需要将字符串用特定的符号拼接起来的字符的时候,可以用 .join()
方法来进行拼接。
.upper()
将文本转化为大写, .lower()
将文本转化为小写。
.find查找到某段字符串当中某个子串的位置信息,未找到的则会返回 -1
字符串截取[0:4]
表示从0开始截4个
.split(‘k‘)拆分
翻转字符串
判断某字符是否在某字符串中用in
.replace(old,new)
.startswish()判断字符串是否以某段字符开头,.endswith()
来确定字符串是否以某段字符串结尾。
.isdigit()检查字符串是否由纯数字构成
python中的正则