nlp复习笔记¶
输入输出¶
现在你是一名正在准备计算机自然语言课程期末复习的研二研究生, 下面是老师给的复习资料, 需要下列问题符合考试标准的答案, 有些问题已经给出了一部分答案, 请你再完善一下
自然语言和人工语言的区别是什么?
人工语言
- 关键词数量有限且确定
- 具有明确的结构关系
- 几乎没有歧义性
- 容错性差
- 变化相对较缓慢
- 内容不易简略
什么是自然语言处理(NLP)?
研究用机器处理人类语言的理论和技术, 以实现在人与人以及人与计算机之间利用自然语言进行交互的一门学科
自然语言处理可以分为哪两类任务,并分别举例典型的应用领域?
自然语言理解(NLU) : 即懂人话 如: 文本分类、情感分析、命名实体识别
自然语言生成(NLG) : 即说人话 如: 机器翻译, 智能问答, 文本摘要
自然语言处理主要研究内容由浅入深划分为几个层面?
词法分析: 如词性标注, 中文分词, 命名实体识别, 去停用词
句法分析: 如句法结构分析, 依存关系分析
语义分析: 如语义表示, 语义消歧, 语义角色标注, 语义关系分析
语用分析: 如文本分类与文本聚类, 信息抽取
NLP的发展历程大体可以分为哪三个阶段,各个阶段主要特点是什么、代表方法与模型又是什么?
基于规则的理性主义方法阶段
- 特点: 过于依赖专家知识和规则,难以处理实际应用中的不确定性
- 方法: 基于人工设计的规则,通过编写规则来处理自然语言
- 模型: 基于逻辑推理的语言处理和搜索匹配
基于统计学习的经验主义方法阶段
- 特点: 通过使用一定的数据进行训练,特征学习自动学习并调整模型参数,可以更好地处理不确定性
- 方法: 利用统计模型
- 模型: 隐马尔可夫模型(HMM)、最大熵模型(MaxEnt)、支持向量机、条件随机场、贝叶斯网络、决策树、浅层神经网络等
基于深度神经网络的深度学习方法:
- 特点: 当前主流, 取得了惊艳的效果
- 方法: 利用深度神经网络模型
- 模型: 循环神经网络(RNN)、长短期记忆网络(LSTM)、Transformer
常用的NLP工具包有哪些? 其所支持的常用NLP功能有哪些?
Jieba:中文分词
NLTK(Natural Language Toolkit):词性标注, 命名实体识别, 句法分析
LTP: 分词、词性标注、句法分析
Gensim:主题模型方法(TF-IDF, LSA, LDA, word2vec等)
其中哪些工具适合于处理中文文本,哪些工具适合于处理英文文本?
中文文本: Jieba
英文文本: NLTK, SpaCy
都适合: Gensim
语料可以有哪些来源,不同的语料库侧的重点又分别是什么?
积累语料库侧重于特定领域发展积累的语料
公开语料库侧重于通用的语料
下载语料库侧重于根据具体任务需求自行抓取数据并构建的语料
NLP应用中常见的数据存储格式是什么?
结构化数据如MySQL、MongoDB
半结构化数据格式如JSON、XML
非结构化数据如.txt, .csv, .tsv
注: .tsv是以\t作为分隔符, csv是以, 作为分隔符
Python中数据读写的方法有哪些?
Python内置方法
如open(), read(), write()
第三方库
如Pandas, numpy, csv
eg.
np.genfromtxt()
pd.read_csv()
语料清洗过程包括哪些?
噪声移除: 去除无关字符,如去除无用的HTML标签
词汇规范化: 词干提取和词形还原,如去除ly后缀和获得词根
对象标准化: 通过查找数据字典和正则表达式来修正单词
re. mateh与re. search的用法与区别是什么(还有finall)?
re.match匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;
re.search匹配整个字符串,直到找到一个匹配。
match: 返回从字符串开头处匹配
search:返回所有字符串中匹配的
finall: 返回字符串中所有匹配的子串, 其返回值是列表形式
补充下面代码,使用中括号匹配“bat"、“cat”和“rat”
# 使用中括号匹配多个字符
text_list = ['The', 'cat', 'sit', 'chair', 'dog', 'rat', 'ground', 'next']
regex =
for word in text_list:
print('word = ', word)
if re.search(regex, word) is not None:
print('select word = ', word)
'[bcr]at'
补充下面代码,混合使用中括号匹配“bat"、“cat”和“rat”来匹配下面句子中 [紧要的]今年第七号台风23日登陆广东东部沿海地区,[重要的]8月19日南京市全域低风险 这两句内容
text_string = ['[紧要的]今年第七号台风23日登陆广东东部沿海地区', '上海发布车库销售监管通知:违规者暂停网签资格', '[重要的]8月19日南京市全域低风险', '[重点关注]中国奥委会回应奥运健儿姓名被抢注商标']
regex =
for line in text_string:
if re.search(regex, line) is not None:
print(line)
else:
print('not match')
'^[[重紧]..]'
匹配以 "文本" 起始和 "信息" 结尾任意长度的字符串
'^文本*信息$'
匹配含有爬后跟任意一个字符的句子
'爬.'
补充下面代码,要想匹配其中的 \ 的两种写法是什么?
if re.search('\\\\', 'I have one nee\dle") is not None:
print('match it')
else:
pritn('not match')
'\\' # \表示转义 \才表示\本身, 所以用两次\
r'\' # r''表示原始字符串(raw string),即字符串中的转义字符(如\n、\t等)不会被转义
针对字符串'"this is an example of NLP application' (1) 提取以t开始以n结尾的字符串 (2) 提取t之间的子串
import re
# 提取以t开始以n结尾的字符串
item = "this is an example of NLP application"
pattern = r"^t.*n$"
match = re.search(pattern, item)
if match:
print(match.group())
else:
print("没有匹配结果")
# 提取t到t之间的子串
s = "this is an example of NLP application"
pattern = r"t.*?t"
match = re.search(pattern, s)
if match:
print(match.group())
else:
print("没有匹配结果")
针对字符串“这是NLP学习课程这门课程涉及很多学科领域”
(3) 提取“课程"前面的文字针对字符串“xxx出生于1989年”
(4) 提取日期内容
(5)提取不同格式的出生日期
#针对字符串“这是NLP学习课程这门课程涉及很多学科领域”
#(3) 提取“课程"前面的文字
import re
s = "这是NLP学习课程这门课程涉及很多学科领域"
pattern = r".*?(?=课程)"
matches = re.findall(pattern, s)
for match in matches:
print(match)
#针对字符串“xxx出生于1989年”
#(4) 提取日期内容
s = "xxx出生于1989年"
pattern = r"\d{4}年"match = re.search(pattern, s)
if match:
print(match.group())
else:
print("没有匹配结果")
#(5)提取不同格式的出生日期
s = "xxx出生于1989年2月14日,yyy出生于1990/03/15,zzz出生于1991.04.16"
pattern = r"\d{4}[年/.]\d{1,2}[月/.]\d{1,2}日?"
matches = re.findall(pattern, s)
for match in matches:
print(match)
什么是形成最小完整意义的基本语言单位:
词
什么是分词?
将文本分隔为有意义的词语
为什么对于中文来说分词尤为重要?
有的句子分词方式不同会产生岐义, 比如
基于规则(词典)的分词方法有哪些?
以”南京市长江大桥"为例,词表包含:["南京市长", "长江大桥", "大桥"],则:
正向最大匹配:南京市长 | 江大桥
后向最大匹配:南京市 | 长江大桥
双向最大匹配:南京市长 | 江大桥
逐词遍历:南京市长江大桥
正向最大匹配:南京市长,长江江大桥
后向最大匹配: 南京,市,长江大桥
双向最大匹配: 南京,市,长, 江,大桥
逐词遍历:南京 / 市长 / 江 / 大桥
以”我爱北京天安门"为例,词表包含:["我", "爱", "爱北京", "北京", "北京天安门", "天安门”] 则:
正向最大匹配:我 | 爱北京 | 天安门
后向最大匹配:北京天安门 | 爱 | 我
双向最大匹配:我 | 爱北京 | 天安门
逐词遍历:我 | 爱 | 北京 | 天安门
给定句子:他从小学会了解题。(假设不考虑句号)。请完成下面的题目:
请分别给出利用正向最大分词算法和逆向最大分词算法对给定句子的分
词结果:
基于统计模型的分词方法有哪些?并举例说明他们的具体分词方法
N元语法分词
HMM(隐马尔可夫模型)分词法
CRF(条件随机场)分词
混合分词方法有哪些?
3.1.3 基于工具的应用
3.1.3.1 Jieba
Jieba的分词方法有哪些类型?
Jieba分词有哪三种基本工作模式? 给出对应函数实现例子的完整代码
全模式
精确模式
搜索引擎模式
给出Jieba自定义调整分词函数实现例子的完整代码实现, 代码实现需要包括调节词频(suggest_freq)、添加自定义词(add word)、自定义词典 (1oad userdict)。
分词、分句、自定义分词的函数用法是什么?给出对应函数实现例子的完整代码
NLTK的特点是什么?
NLTK主要利用空格对词语进行划分,更适于英文的分词;NLTK对中文分词效果不太理想;
NLTK如何实现词干提取、词型还原, 给出对应函数实现例子的完整代码
什么是去停用词?
去停用词的作用是什么?举例说明针对不同任务可选择不同的去停用词
编码实现自定义去停用词?
NLTR 中如何实现去停用词?
什么是词频统计?
词频统计的作用是什么?
3.3.2 应用
NLTR中实现词频统计的函数用法. 编码实现保罗统计词语出现频率、次数、频率分布表、频率分布图、频率累计分布图?
编码实现基于counter的词频统计?
编码自定义去高低频词?
什么是词性标注?
确定每个词语的类别和浅层的岐义消除(如名词、动词、形容词等)。
词性标注的作用是什么?
Jieba中的词性标注是什么? 通过完整代码举例说明?
NLTR中的词性标注方法? 通过完整代码举例说明?
LTP中的词性标注方法是什么?通过完整代码举例说明?
判断: 不同工具中词性标注结果的词性标识可能不同
正确
什么是命名实体识别(NER)?
命名实体识别一般针对哪些实体?
判断: 可借用词性标注的结果辅助进行命名实体识别
正确
常见的关键词提取方法有哪些?
TF-IDF算法的基本思想是什么,TF和IDF在里面分别体现哪些侧重方面?
给定一个文本,如果计算某个词的TF(词频)?
给定一个文本,如果计算某个词的IDF(逆文档频率)?
简述Textrank算法、主题模型(LSA/LSL/LDA算法)的基本思想
说明Jieba中基于TF-IDF算法的关键词提取方法:extract_ tags (sentence, topK=20, withHeight-False, allowP0S=())的参数含义和用法?
句法分析¶
什么是句法分析?
依存语法 (Dependeney Parsing, DP)、语文角色标注 (Semantie Role Labeling,SRL)、语义依存分析 (Semantic Dependency Parsing, SDP)的作用是什么?几者之间的区别又是什么?
为何要进行词的表示,而不是直接用文字进行处理?
什么是文本向量化,对于文本处理有什么好处?
常见的向量化模型有哪些?
词袋模型(BOW:Bag Of word)的基本思想是什么?
不考虑问法和词的顺序,即每个词语都是独立的:
One-Hot 表示法的规则是什么?
给定词汇集,能够计算一个指定词的 One-Hot 表示:
词袋模型的优缺点分别是什么?
词嵌入模型的基本思想是什么?
词嵌入相对One-lot表示方法有哪些改进?词嵌入和One-flot表示的特点和区别分别是什么?
词嵌入有哪些作用(或优点)?
词向量可以通过计算距离表示词语之间的近似度,计算距离的方法有哪些?
余弦距离、欧式距离等
判断: Hord2vee是Google公司研发的一个比较常用的词嵌入模型
正确
判断: Word2Vec 词向量可以较好地表达上下文不同词之间的相似和类比关系
正确
Word2Vec的两种形式是什么?
连续词袋模型(Continuous Bag of Words: CBOR)
和跳字模型 (Skip-Gram)
Doc2vec算法的思想是什么? 和Word2Vec的区别是什么?
深层神经网络用到的嵌入层作用是什么,说明下面参数含义:
keras. layers. Embedding (inputdim, output din, embeddings initializer='uniform'、
embeddings_regularizer=None,
activity regularizer=None,
embeddings constraint=None,
mask_zero=False, input_ length=None)
使用Word2Vec计算文本相似度的步骤是什么?
常见的机器学习模型有哪些?
常用于自然语言处理的深度学习模型有哪些?
机器学习模型和深度学习模型的区别是什么?
RMN有何特点,为何更适于处理自然语言?
RNN的网络结构,一般采用哪种激活函数?
RMN的基本类型有一对一、一对多、多对一、多对多,分别举例哪些自然语言处理任务属于这些类型?
LSTM相对RNN有何改进?
传统的RMN及其变种LSTM及GRU只能处理输出序列为定长的情况,而Seq2Seq可以处理输出不定长序列;
RMN变体模型:LSTM、GRU、Seg2Seq(序列到序列):
Seq2Seg模型的基本结构地是什么?
判断: Seg2Seg很灵活,而且编码器和解码器可以是不同模型:
正确
注意力机制的思想与作用是什么?
Seg2Seg模型经常采用什么进行优化?
注意力机制
6.1.6 预训练语言模型
预训练语言模型的作用是什么?
列举一些常见的预训练语言模型?
什么是文本分类,举例有哪些应用?
什么是情感分析,能举例说明?
什么是情感分析可具有不同的颗粒度?
什么是文本生成,能举例说明其应用?
按照输入数据的区别,可以将文本生成任务分为哪三类,并能举例说明:
什么是机器翻译?
什么是问答系统,问答系统与传统的信息检索系统的区别是什么?
什么是检索式问答,什么是生成式问答?
参考¶
考纲¶
现在你是一名正在准备计算机自然语言课程期末复习的研二研究生, 下面是老师给的复习资料, 需要下列问题符合考试标准的答案, 你的回答格式是这样的. 考查形式包括选择题, 填空题, 名词解释(一般只给一个名词让解释), 简答题, 编程题.我完整的具有所有问题输入输出的回答, 回答形式可以是这样:
参考资料: 自然语言和人工语言的区别
可能的考查形式: 简答题
参考答案: 自然语言是指人类在自然环境中自然形成和发展的语言,例如英语、中文、法语等。语法规则相对模糊,有大量的歧义和例外,以及丰富的隐含信息。人工语言是由人类有目的地、有计划地创造的语言,如计算机编程语言(如Python、Java、C++等)或者人造的交流语言(如Esperanto),语法规则通常严格明确,无歧义.
概述
1.1 基本概念
自然语言和人工语言的区别:
什么是自然语言处理(NLP):
自然语言处理可以分为两类任务:自然语言理解(NLU) 和自然语言生成(NLG),能够
区分并举例两类任务;
理解并能分辦出自然语言处理的典型应用领域。
1.2 自然语言处理研究内容与现状
自然语言处理主要研究内容由浅入深划分为几个层面:词法、句法、语义、语用:
NLP的发展历程大体可以分为三个阶段:基于规则的理性主义方法、基于统计学习的经验主义方法、基于深度神经网络的深度学习方法。了解各个阶段主要特点、代表方法与模型等。
2 数据预处理
2.1 常用 NLP工具
熟悉常用的NLP工具包并能介绍其所支持的常用NLP功能:
了解哪些工具适合于处理中文文本,哪些工具包适于处理英文文本。
2.2 常用语料
语料可以有哪些来源:
了解不同的语料库侧重点不同。
2.3数据采集与读写
NLP应用中常见的数据存储格式;
Python中数据读写的方法。
2.4 文本数据清洗
语料清洗过程包括对文本数据进行噪声移除、词汇规范化与标准化:
正则表达式的规则、应用:
正则表达式的代码实现,如:
\1) re. mateh与re. search的用法与区别
\2) 匹配字符串
a) 匹配特定关键字
b)匹配任意一个字符
c)匹配起始和结尾字符串
d)使用中括号匹配多个字符
3)使用转义符
\4) 抽取文本中的数字
3 词法分析
3.1 中文分词
3.1.1 掌握基本概念
词是形成最小完整意义的基本语言单位:
分词:将文本分隔为有意义的词语;
理解为什么对于中文来说分词尤为重要:
有的句子分词方式不同会产生岐义。
3.1.2 理解不同分词方法
理解基于规则(词典)的分词方法的基本思路:
包括正向最大匹配、后向最大匹配、双向最大匹配、逐词遍历等。
理解基于统计模型的分词方法的基本思想:包括N元语法分词、HMM(隐马尔可夫模型)分词法、CRF(条件随机场)分词等。
了解混合分词方法。
3.1.3 基于工具的应用
3.1.3.1 Jieba
Jieba的分词方法类型:
Jieba分词的三种基本工作模式及其函数用法:全模式、精确模式、搜索引擎模式:
自定义调整分词的方法及其函数用法:调节词频(suggest_freq)、添加自定义词(add word)、自定义词典 (1oad userdict)。
3.1.3.2 LTP
分词、分句、自定义分词的函数用法。
3.1.3.3 NLTK
NL.TK主要利用空格对词语进行划分,更适于英文的分词;
NLTK对中文分词效果不太理想;
NL.TK可实现词干提取、词型还原。
3.2 去停用词
3.2.1 基本概念
什么是去停用词:
理解去停用词的作用,了解针对不同任务可选择不同的去停用词,
3.2.2 应用
自定义去停用词的做法:
NLTR 中的去停用词,
3.3 词频统计
3.3.1 基本概念
什么是词频统计:
理解词频统计的作用。
3.3.2 应用
NLTR中实现词频统计的函数用法:
(统计词语出现频率、次数、频率分布表、频率分布图、频率累计分布图)
基于counter的词频统计:
自定义去高低频词。
3.4 词性标注
词性标注:确定每个词语的类别和浅层的岐义消除(如名词、动词、形容词等)。
3.4.1 基本概念
什么是词性标注:
理解词性标注的作用。
3.4.2 应用
Jieba中的词性标注方法:
NLTR中的词性标注方法:
LTP中的词性标注方法:
注意:不同工具中词性标注结果的词性标识不同。
3.5命名实体识别
3.5.1 基本概念
什么是命名实体识别(NER);
命名实体识别一般针对哪些实体。
3.5.2 应用
可借用词性标注的结果辅助进行命名实体识别
3.6 关键词提取
3.6.1 基本概念
常见的关键词提取方法有哪些:
TF-IDF算法的基本思想,TF和IDF在里面分别体现哪些侧重方面:
给定一个文本,如果计算某个词的TF(词频):
给定一个文本,如果计算某个词的IDF(逆文档频率)
Textrank算法、主题模型(LSA/LSL/LDA算法)。
3.6.2 应用
Jieba中基于TF-IDF算法的关键词提取方法:extract_ tags (sentence, topK=20, withHeight-False, allowP0S=())的参数含义和用法。
4 句法分析
什么是句法分析:
依存语法 (Dependeney Parsing, DP)、语文角色标注 (Semantie Role Labeling,SRL)、语义依存分析 (Semantic Dependency Parsing, SDP)的作用:
几者之间的区别,
5 语义分析
5.1 词的表示
为何要进行词的表示,而不是直接用文字进行处理:
什么是文本向量化,对于文本处理有什么好处。
5.2 词的向量化模型
常见的向量化模型有哪些?
5.2.1 词袋模型
理解词袋模型(BOW:Bag Of word)的思想,注意其特点:不考虑问法和词的顺序,
即每个词语都是独立的:
One-Hot 表示法的规则,给定词汇集,能够计算一个指定词的 One-Hot 表示:
理解词袋模型的优缺点。
5.2.2 词嵌入模型
5.2.2.1基本概念
理解词嵌入模型的思想:
理解词嵌入相对One-lot表示方法有哪些改进,理解词嵌入和One-flot表示的特点和
区别;
词嵌入有哪些作用(或优点):
词向量可以通过计算距离表示词语之间的近似度,计算距离的方法有余弦距离、欧
式距离等;
Hord2vee是Google公司研发的一个比较常用的词嵌入模型:
Word2Yec 词向量可以较好地表达上下文不同词之间的相似和类比关系:
Word2Vec一般包含两种形式:连续词袋模型(Continuous Bag of Words: CBOR)
和跳字模型 (Skip-Gram)
Doc2vec算法的思想,和Word2Vec的区别。
5.2.2.2应用
深层神经网络用到的嵌入层作用是什么,能够说明其参数含义:
keras. layers. Embedding (inputdim, output din,
embeddings initializer='uniform'、
embeddings_regularizer=None,
activity regularizer=None,
embeddings constraint=None,
mask_zero=False, input_ length=None)
使用Word2Vec计算文本相似度的步骤。
6模型与应用
6.1模型
6.1.1 机器学习模型和深度学习模型
常见的机器学习模型有哪些:
常用于自然语言处理的深度学习模型有哪些:
机器学习模型和深度学习模型的区别。
6.1.2 RNN
RMN有何特点,为何更适于处理自然语言:
RNN的网络结构,一般采用哪种激活函数;
RMN的基本类型有一对一、一对多、多对一、多对多,能分别举例哪些自然语言处理任务属于这些类型;
6.1.3 LSTM
LSTM相对RNN有何改进?
RMN变体模型:LSTM、GRU、Seg2Seq(序列到序列):
6.1.4 Seq2Seg
传统的RMN及其变种LSTM及GRU只能处理输出序列为定长的情况,而Seq2Seq可以处理输出不定长序列;
Seq2Seg模型的基本结构;
Seg2Seg很灵活,而且编码器和解码器可以是不同模型:
6.1.5 注意力 (attention〉机制
理解注意力机制的思想与作用:
Seg2Seg模型经常采用注意力机制进行优化。
6.1.6 预训练语言模型
预训练语言模型的作用:
能列举出一些常见的预训练语言模型。
6.2 应用
什么是文本分类,举例有哪些应用;
什么是情感分析,能举例说明:
理解情感分析可具有不同的颗粒度:
什么是文本生成,能举例说明其应用:
按照输入数据的区别,可以将文本生成任务分为哪三类,并能举例说明:
什么是机器翻译;
什么是问答系统,问答系统与传统的信息检索系统的区别:
理解什么是检索式问答,什么是生成式问答。