NLP知识和经验积累路径梳理

NLP学习路径知识梳理。

版本说明

版本号 版本内容 日期
v1.0.1 版本初始化 2023-04-15

1. NLP学习路径

1.1 知识清单

1.1.1 机器学习

ApacheCN. AiLearning: 机器学习

ML算法 概述
KNN k-近邻(kNN, k-NearestNeighbor)算法是一种基本分类与回归方法,我们这里只讨论分类问题中的 k-近邻算法。
Decision Tree 决策树(Decision Tree)算法是一种基本的分类与回归方法,是最经常使用的数据挖掘算法之一。我们这章节只讨论用于分类的决策树。 决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是 if-then 规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。 决策树学习通常包括 3 个步骤:特征选择、决策树的生成和决策树的修剪。
朴素贝叶斯 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本章首先介绍贝叶斯分类算法的基础——贝叶斯定理。
Logistic 回归 Logistic 回归 或者叫逻辑回归 虽然名字有回归,但是它是用来做分类的。其主要思想是: 根据现有数据对分类边界线(Decision Boundary)建立回归公式,以此进行分类。
SVM 支持向量机(Support Vector Machines, SVM):是一种监督学习算法。支持向量(Support Vector)就是离分隔超平面最近的那些点。机(Machine)就是表示一种算法,而不是表示机器。
集成方法 投票选举(bagging: 自举汇聚法 bootstrap aggregating): 是基于数据随机重抽样分类器构造的方法;再学习(boosting): 是基于所有分类器的加权求和的方法。目前 bagging 方法最流行的版本是: 随机森林(random forest);目前 boosting 方法最流行的版本是: AdaBoost。
回归 我们前边提到的分类的目标变量是标称型数据,而回归则是对连续型的数据做出处理,回归的目的是预测数值型数据的目标值。
K-Means K-Means 是发现给定数据集的 K 个簇的聚类算法, 之所以称之为 K-均值 是因为它可以发现 K 个不同的簇, 且每个簇的中心采用簇中所含值的均值计算而成.簇个数 K 是用户指定的, 每一个簇通过其质心(centroid), 即簇中所有点的中心来描述.聚类与分类算法的最大区别在于, 分类的目标类别已知, 而聚类的目标类别是未知的.
关联分析 关联分析是一种在大规模数据集中寻找有趣关系的任务。 这些关系可以有两种形式:频繁项集(frequent item sets): 经常出现在一块的物品的集合;关联规则(associational rules): 暗示两种物品之间可能存在很强的关系。
FP-growth 一种非常好的发现频繁项集算法。基于Apriori算法构建,但是数据结构不同,使用叫做 FP树 的数据结构结构来存储集合。下面我们会介绍这种数据结构。
PCA降维 主成分分析(Principal Component Analysis, PCA):通俗理解:就是找出一个最主要的特征,然后进行分析。
SVD简化数据 奇异值分解(SVD, Singular Value Decomposition):提取信息的一种方法,可以把 SVD 看成是从噪声数据中抽取相关特征。从生物信息学到金融学,SVD 是提取信息的强大工具。

1.1.2 深度学习

零基础入门深度学习(1) - 感知器
零基础入门深度学习(2) - 线性单元和梯度下降
零基础入门深度学习(3) - 神经网络和反向传播算法
零基础入门深度学习(4) - 卷积神经网络
零基础入门深度学习(5) - 循环神经网络
零基础入门深度学习(6) - 长短时记忆网络(LSTM)
零基础入门深度学习(7) - 递归神经网络

1.1.3 NLP算法

见下文。

1.2 学习思路

1.2.1 循序渐进式

通过学习底层原理,循序渐进,攻克一个又一个底层算法

  • 优点:掌握原理,可通过改进底层算法使之适用于更多场景(平台、需求等)
  • 缺点:学习慢,耗时多
  • 推荐对象:理论基础较好,走技术领域专家路线的分析师

1.2.2 案例积累式

通过学习案例,收集案例中的算法、软件包,模仿学习,快速入门

  • 优点:现成代码,可快速套用场景,学习快
  • 缺点:场景少,切换场景(平台、需求)后,不能使用或者使用效果不佳
  • 推荐对象:以解决项目需求为准,走全栈路线的分析师

2. 常用python包

2.1 python包简介

python算法包 简介
jieba jieba分词:常用轻量级的分词方法工具(可以实现分词、词性标注、关键词提取等)
Gensim Gensim(generate similarity)是一个简单高效的自然语言处理Python库,用于抽取文档的语义主题(semantic topics)。Gensim的输入是原始的、无结构的数字文本(纯文本),内置的算法包括Word2Vec,FastText,潜在语义分析(Latent Semantic Analysis,LSA),潜在狄利克雷分布(Latent Dirichlet Allocation,LDA)等,通过计算训练语料中的统计共现模式自动发现文档的语义结构。这些算法都是非监督的,这意味着不需要人工输入——仅仅需要一组纯文本语料。一旦发现这些统计模式后,任何纯文本(句子、短语、单词)就能采用语义表示简洁地表达。由于其惊人的速度而流行。GenSim可以在大数据集上轻松运行。它附带了像随机投影(RP)、潜在语义分析(LSA)、层次Dirichlet过程(HDP)等有用的NLP算法。GenSim使用SciPy和NumPy进行计算,并用于聊天机器人和语义搜索等应用程序。
NLTK 自然语言工具包(NLTK)是目前最流行的构建NLP相关项目的平台。它为超过50种语料库和词汇资源,并且提供了一个易于使用的界面和一系列的文本处理库,如分类、词干化、分词、解析、词性标注等。这个库也是一个开源库,几乎适用于所有类型的操作系统。
polyglot Polyglot是一个用于NLP的python库,它特别有用,因为它支持广泛的多语言应用程序。根据多语种文献,它支持165种语言的分词,196种语言的语言检测,16种语言的词性标注和130多种语言的情感分析。
SpaCy SpaCy是一个Python NLP库,对于包含大量文本数据的行业级实际项目非常有用。使用这个库的主要优点是它的速度快。SpaCy比其他库要快得多,因为它是用Cython编写的,这也使得它能够有效地处理大量数据。支持超过64种语言,60 + 19种语言的训练管道,多任务学习与预训练transformers,如BERT和现代ML/DL框架,如Pytorch和Tensorflow,使SpaCy是一个很好的选择。
Textblob Textblob是一个由NLTK支持的Python库。它几乎提供了NLTK的所有功能,但以一种更简单和对初学者友好的方式,它的API可以用于一些常见的任务,如分类、翻译、词形变化等。许多数据科学家也使用textblob作为原型,因为它使用起来更轻。
PyNLPI PyNLPI也发音为pineapple,是一个Python NLP库,主要用于构建基本语言处理模型。它被划分为不同的模型和包,可以用于不同种类的自然语言处理任务。PyNLPI最突出的特性之一是它提供了一个用于处理FoLiA XML(语言注释格式)的完整库。
Pattern Pattern是一个多用途的Python库,可以用于不同的任务,如自然语言处理(分词、情感分析、POS词形标注等),数据挖掘和内置模型(如k近邻、支持向量机等)的机器学习。这个库很容易理解和实现,因为它的语法简单易懂,对需要处理文本数据的web开发人员也很有帮助。
HaNLP HanLP 是由一系列模型与算法组成的工具包,目标是普及自然语言处理在生产环境中的应用。HanLP 具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。HanLP 主要功能包括分词、词性标注、关键词提取、自动摘要、依存句法分析、命名实体识别、短语提取、拼音转换、简繁转换等等。

2.2 python包链接

3. 常用算法

3.1 算法简介

3.1.1 TextRank

TextRank是一种基于图概率模型的无监督、抽取式的文本摘要算法,其可以基于单篇文档进行关键词提取,算法思想源于Google的PageRank算法(网页排名算法)。区别在于:PageRank算法计算网页和链接网页之间的转移概率矩阵,TextRank算法计算句子与句子之间的相似度矩阵。

3.1.2 Single-Pass

Single-Pass算法又称单通道法或单遍法,是流式数据聚类的经典方法。对于依次到达的数据流,该方法按输入顺序每次处理一个数据,依据当前数据与已有类的匹配度大小,将该数据判为已有类或者创建一个新的数据类,实现流式数据的增量和动态聚类,适合对流数据进行挖掘,而且算法的时间效率高;不足之处主要表现在该方法具有输入次序依赖特性,即对于同一聚类对象按不同的次序输入,会出现不同的聚类结果。

  1. Single-Pass算法基本流程

假设我们有一个N篇文档的语料,single-pass聚类的基本流程如下:

(1) 随机选取一篇文章,其文本向量记为d;

(2) d逐一与已有的话题中各报道进行相似度计算,并取最大者作为与该话题的相似度(single-link策略);如果是第一篇文章,则创建一个新话题(或者说新标签)。

(3) 在所有话题间选出与d相似度最大的一个,以及此时的相似度值;

(4) 如果相似度大于阈值TC,d所对应的互联网文本被分配给这个话题模型文本类,跳至(6);

(5) 如果相似度值小于阈值TC,d所对应的文本不属于已有的话题,创建新话题,同时把这篇文本归属创建的新话题模型文本类;

(6) 本次聚类结束,等待接收新的文本到来。

阈值在[0,1]之间,阈值设置的越高,得到的簇粒度越小(簇内文本数量少),簇的个数越多;相反,阈值设置的越低,得到的簇粒度越大(簇内文本数量多),簇的个数越少。

3.1.3 Yake

Yake算法是一种无监督的关键词提取算法,采用的是局部统计算法,提取文本的关键特征信息,不需要依赖任务的语料库和预训练模型,不受文本领域的影响。该算法的内部包含多国语言的停用词,提升了在不同语言环境下提取的效果。

Yake算法的处理流程:先进行预处理,特征提取、关键词的生成和关键词去重排序这几个步骤。

3.1.4 HaNLP

HanLP 是由一系列模型与算法组成的工具包,目标是普及自然语言处理在生产环境中的应用。HanLP 具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。

HanLP 主要功能包括分词、词性标注、关键词提取、自动摘要、依存句法分析、命名实体识别、短语提取、拼音转换、简繁转换等等。

3.1.5 BI-LSTM+CRF

3.1.6 word2vec

Word2vec,是用来产生词向量的相关模型。

3.1.7 TF-IDF

TF-IDF(Term Frequency–Inverse Document Frequency)是一种用于资讯检索与文本挖掘的常用加权技术。TF-IDF是一种统计方法,用以评估一个字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。

TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TF-IDF实际上是:TF * IDF

3.1.7 LDA

LDA算法的思想是将数据投影到低维空间之后,使得同一类数据尽可能的紧凑,不同类的数据尽可能分散。因此,LDA算法是一种有监督的机器学习算法。同时,LDA有如下两个假设:

(1) 原始数据根据样本均值进行分类。

(2) 不同类的数据拥有相同的协方差矩阵。

当然,在实际情况中,不可能满足以上两个假设。但是当数据主要是由均值来区分的时候,LDA一般都可以取得很好的效果。

3.2 算法学习链接

3.2.1 NLP算法表

算法名称 学习链接
TextRank TextRank算法详细讲解与代码实现(完整)
Single-Pass 一种简单的文本聚类算法:single-pass
Yake YAKE!无监督关键字抽取算法解读
HanLP 自然语言处理基础技术工具篇之HanLP
BI-LSTM+CRF Bi-LSTM+CRF用于序列标注
word2vec word2vec 中的数学原理详解
TF-IDF 机器学习——TF-IDF
LDA 机器学习-LDA(线性判别降维算法)

3.2.3 补充链接

posted @ 2023-05-20 16:12  三斤2016  阅读(139)  评论(0)    收藏  举报