研究生期间修读过自己专业的老师讲NLP,也去听过cs的老师讲的NLP课程,也曾经在本科期间上过外语系的语言学概论。最近看书的时候,感觉可以整理一下笔记,也看看能不能用NLP在实验室项目中做出一点成果。

序一

确定的答案?
NLP中文本摘要哪个好?标准?
=>定义新问题,以较小的代价搜集新的数据集,开发新的evaluation method

前言

第一部分:python包、正则表达式、solr检索
第二部分:词法分析、句法分析、向量化算法、情感分析、分类算法和聚类算法、深度学习算法。
书本的源码:https://github.com/nlpinaction/learning-nlp

第一章

自然语言的角度,NLP——自然语言处理+自然语言生成,理解和生成文本的任务。
语言理解:语言、语境和各种语言形式的学科
自然语言生成NLG:文本规划、语句规划、实现。

发展过程:

香农:离散马尔可夫的概率模型用于语言的自动机、手工统计字母频率
乔姆斯基:用有限状态机FSM刻画语法,自然语言的有限状态模型。基于规则的理性主义方法。
话语分析discourse analysis发展、语料库补充基于规则的方法、经验主义空前繁荣。
基于统计、基于实例、基于规则的语料库技术。

1.3.1 基本术语

  1. 分词Segment
    词,最小的能够独立活动的有意义的语言成分。在语言学里还有一个概念:词素(词素是构成词的要素。是语言中最小单位的音义结合体)
    中文分词难度在于不像英文有空格这样的分隔符。分词常用:基于字典的最长串匹配。但是歧义分词很难。

  2. 词性标注part-of-speech tagging
    目的:表征词的一种隐藏状态。

  3. 命名实体识别NER,Named Entity Recognition
    从文本中识别具有特定类别的实体,通常是名词。例如人名、地名、机构名、专有名词。

  4. 句法分析Syntax parsing
    基于规则的专家系统。句法分析树解决词袋模型bow不考虑上下文的问题。

  5. 指代消解Anaphora resolution
    代词

  6. 情感识别Emotion recognition
    分类问题。正面、负面(、中性)
    词袋模型+分类器,词向量模型+RNN(准确率略高)

  7. 纠错Correction
    搜索技术和输入法中用的多。
    N-GRAM进行纠错。通过字典树、有限状态机。

  8. 问答系统
    语音识别、合成、自然语言理解、知识图谱等

1.4 语料库

中文维基、搜狗新闻语料库、IMDB情感分析语料库、爬虫获取豆瓣读书等。

1.5 探讨NLP的几个层面

词法分析:分词+词性标注
句法分析:短语结构句法体系、依存结构句法体系、深层文法句法分析(词汇化树邻接文法、组合范畴文法)
语义分析:表示方法?语义角色标注semantic role labeling

1.6 NLP与AI

支持向量机SVM/条件随机场CRF
CNN/RNN深度模型

one-hot
word2vec
端到端方式,避免误差传递,提升了性能。

第二章

python环境
anaconda
正则表达式——字符串的模式匹配
re.search(regex,string)
re.findall(regex,string)
numpy
ndarray多维数组对象
nfl=np.genfromtxt("./price.csv",delimiter=",")对于nan的出错,用genfromtext()可以转化数据类型。参数还可以加上skip_header=1跳过文件开头的行数。

第三章 中文分词技术

3.2 规则分词

3.2.1 正向最大匹配MM

从左向右取待切分汉语句子的m个字符作为匹配字段,m为机器词典中最长词条的字符数。
查找机器词典并进行匹配。若匹配成功,则将这个匹配字段作为一个词切分出来。若匹配不成功,去掉这个匹配字段的最后一个字,再次匹配,知道分出所有词为止。
错误例子:南京市长江大桥

3.2.2 逆向最大匹配RMM

倒排成逆序文档,根据逆序词典,使用MM法。
汉语中偏正结构较多。这样从后往前,精确度会提高。

3.2.3 双向最大匹配法Bi-direction Matching

前两种结果比较,取词数切分较少的作为结果。

3.3 统计分词

3.3.1 语言模型

n-gram简化模型,条件概率忽略距离大于等于n的上文词的影响。
平滑算法:拉普拉斯平滑算法,来解决分子分母为零的问题。

3.3.2 隐马尔科夫模型HMM

将分词作为字在子串中的序列标注任务来实现的。
观测独立性假设,没有考虑上下文。
齐次马尔科夫假设,每个输出仅仅与上一个输入有关。
实际分词用二元模型多一些,计算复杂度较小。
Veterbi算法:动态规划法。求最大概率的路径。

3.3.3 其他统计分词算法

条件随机场(考虑了这个状态后面的状态)
神经网络分词法,但很依赖训练语料的质量。

3.4 混合分词

3.5 中文分词工具——jieba

基于规则和基于统计两类方法。
先基于前缀词典进行词图扫描,构建包含全部可能分词结果的有向无环图。
基于标注语料,使用动态规划的方法可以找到最大概率路径,并将其作为最终的分词结果。
对于未登录词,jieba使用了基于汉字成词的hmm模型,采用了veterbi算法进行推导。
三种分词模式:全模式、精确模式、搜索引擎模式。

第四章 词性标注与命名实体识别

第五章 关键词提取算法

无监督:TF-IDF、TextRank和主题模型算法。
TextRank可以脱离语料库,仅对单篇文档进行分析。