NLP 自然语言,nlp自然语言处理开发语言
目录
自然语言处理概述
自然语言处理导论
自然语言处理的主要技术类别
自然语言处理的基本要点
特征处理
型号选择
常见的NLP工具
NLP语言模型
快速启动NLP方法
自然语言处理学习材料
1.自然语言处理是计算机科学和人工智能领域的一个重要方向。它研究用自然语言实现人机有效交流的理论和方法。一门融合了语言学、计算机科学和数学的科学。旨在从文本数据中提取信息。目的是让计算机处理或“理解”自然语言来执行自动翻译、文本分类和情感分析。自然语言处理是人工智能中最困难的问题之一。
2.自然语言处理导论2.1基础数学
(1)线性代数
向量、矩阵、距离计算(余弦距离、欧几里德距离、曼哈顿距离、闵可夫斯基距离、勤劳长颈鹿距离、雅克德距离、汉明距离、标准欧几里德距离、皮尔逊相关系数)
(2)概率论
实验,条件概率,全概率,贝叶斯定理,信息论
(3)统计学
图形可视化(饼图、条形图、热图、折线图、箱线图、散点图、雷达图、仪表板)
数据指标(平均值、中值、众数、期望值、方差、标准差)
概率分布(几何分布、二项式分布、正态分布、泊松分布)
统计假设检验
2.2语言学的基本语音、词汇和语法
2.3 Python基础廖雪峰教程,Python从初学者到实践者
2.4机器学习的基本统计学习方法,机器学习的周志华和机器学习的实战
2.5深度学习基金会CNN,LSTM RNN
2.6自然语言处理的理论基础统计学自然语言处理(免费星月第二版)、Python自然语言处理、数学之美(第二版)
3.自然语言处理的主要技术类别3.1语义文本相似性分析语义文本相似性分析是分析两个文本的意义和本质的相似性的过程。
3.2信息检索(Information retrieval,IR)信息检索(Information Retrieval)是指将信息以一定的方式组织起来,找到满足用户信息需求的信息的过程和技术。
3.3信息抽取信息抽取是指抽取指定类型信息(如实体、属性、关系、事件、商品记录等)的综合性技术。)来自非结构化/半结构化文本(如网页、新闻、论文和文档、微博等。)并通过信息合并、冗余消除和冲突解决等手段将非结构化文本转化为结构化信息。
3.4文本分类文本分类的任务是根据给定文档的内容或主题自动分配预定义的类别标签。
3.5文本挖掘文本挖掘是信息挖掘的一个研究分支,用于基于文本信息的知识发现。文本挖掘的准备工作包括三个步骤:文本收集、文本分析和特征剪枝。目前,研究和应用最多的几种文本挖掘技术是:文档聚类、文档分类和摘要抽取。
3.6语篇情感分析情感分析是一种广泛的主观分析。它利用自然语言处理技术识别客户评论的语义情绪,句子表达的积极情绪和消极情绪,通过语音分析或书面文字判断其表达的情绪。
3.7问答,QA)自动问答是指由计算机自动回答用户提出的问题,以满足其知识需求的任务。与现有的搜索引擎不同,问答系统是一种高级的信息服务形式。系统返回给用户的不再是基于关键词匹配的文档列表,而是准确的自然语言答案。
3.8机器翻译(MT)机器翻译是指用计算机将一种自然语言自动翻译成另一种自然语言。翻译的语言称为源语言,翻译的语言称为目标语言。
机器翻译研究的目标是建立有效的自动翻译方法、模型和系统,打破语言障碍,最终实现任何时间、任何地点、任何语言的自动翻译,实现人们无障碍自由交流的梦想。
3.9自动摘要自动摘要(也称自动文档摘要)是指对给定的一个或多个文档进行自动分析,提炼和概括其中的关键信息,最终输出一个简短易读的摘要(通常包含几个字或几百个字)。总结中的句子可以直接来自原文,也可以改写。
根据输入文本的数量,文本摘要技术可以分为单文档摘要和多文档摘要。
在单文档摘要系统中,通常采用基于抽取的方法。对于多文档,同一主题的不同文档中不可避免地存在信息重叠和信息差异,因此如何避免信息冗余并反映不同文档的信息差异是多文档摘要的首要目标。要达到这个目的,我们通常要做句子层面以下的工作,比如压缩、合并、切分句子。此外,单个文档的输出句子一般按照句子在原文中出现的顺序排列,而在多文档摘要中,句子大多按照时间顺序排列。如何准确地得到每一句的时间信息,也是多文档摘要中需要解决的问题。
3.10语音识别语言识别是指区分不同语言的文本。利用其语言的统计和语法特性来完成这项任务。语言识别也可以看作是文本分类的一个特例。
4.自然语言处理的基本要点4.1语料库语料库存储了语言实际使用中实际出现过的语言材料;语料库是以电子计算机为载体承载语言知识的基础资源;真正的语料库需要经过加工(分析处理),才能成为有用的资源。
4.2中文分词(1)中文分词是指将一个汉字序列切割成单个的单词。分词是将连续的词序列按照一定的规范重新组合成词序列的过程。
(2)现有的分词方法可以分为三类:基于字符串匹配的分词、基于理解的分词、基于统计的分词和基于深度学习的中文分词。推荐
(3)流行的中文分词工具:jieba、StanfordNLP、HanLP、SnowNLP、THULAC、NLPIR
4.3词性标注(1)词性标注是指给给定句子中的每个单词赋予正确的词汇标记。给定一个切分好的句子,词性标注的目的是给每个词一个类别,这就是所谓的词性标注,比如名词(名词)、动词(动词)
(2)词性标注是一个非常典型的序列标注问题。最初的方法是隐马尔可夫产生模型,其次是判别最大熵模型和支持向量机模型。目前学术界常用的结构有感知器模型和条件随机场模型。近年来,随着深度学习技术的发展,研究人员也提出了许多基于深度神经网络的有效词性标注方法。
4.4句法分析(1)基于规则的句法结构分析
(2)基于统计的语法结构分析。
4.5词干提取(Stemming)词干提取是将单词的变体或派生词形式去掉,转换成词干或原型形式的过程。词干提取的目标是将相关单词恢复到同一个词干。
4.6词汇归约(Lemmatization)词汇归约是将一组词归约为词源或词典词条形式的过程。
4.7停用词过滤停用词过滤是指频繁出现在文本中,对文本信息的内容或分类贡献很小或没有贡献的词,如常见的介词、冠词、助词、情态动词、代词、连词等。
4.8词向量词向量是用一组实数组成的向量来表示自然语言的名称。这项技术非常实用,因为计算机无法处理自然语言。单词矢量化可以捕捉自然语言和实数之间的本质关系。通过单词矢量化,一个单词或短语可以用一个固定维数的向量来表示。(word2vec)
来自gensim。模型导入word 2 vec 4.9命名实体消歧命名实体消歧是识别句子中提到的实体的过程。
例如,对于句子“苹果2016年收入2000亿美元”,命名实体消歧会推断句子中的苹果是苹果公司而不是水果。一般来说,命名实体需要一个实体知识库,可以将句子中提到的实体与知识库联系起来。
4.10命名实体识别(named entity recognition)命名实体识别(Named Entity Recognition)是识别句子中具有特定含义的实体,并将其区分为人名、机构名、日期、地名、时间等类别的任务。
三种主流算法:CRF、字典法和混合法
5.特征处理5.1特征提取特征提取是指将机器学习算法无法识别的原始数据转化为算法可以识别的特征的过程。
例如(文本分类特征提取步骤):
(1)对于训练数据集中的每一篇文章,我们进行单词统计,形成字典向量。字典包含训练数据中的所有单词(假设停用词已被删除),每个单词表示字典向量中的一个元素。
(2)经过第一步处理后,每篇文章可以用一个字典向量来表示。这样,每篇文章都可以看作一个元素相同、长度相同的向量,不同的文章有不同的向量值。即代表文本的单词包模型。
(3)对于一篇具体的文章,如何给代表它的向量的每个元素赋值?最简单直接的方法就是0-1法。简单来说,对于每一篇文章,我们扫描它的词库。如果一个单词出现在字典中,则该单词在字典向量中的对应元素被设置为1,否则被设置为0。
5.2特征选择当数据预处理完成后,我们需要选择有意义的特征输入到机器学习的算法和模型中进行训练。特征选择是指去除无关特征,保留相关特征的过程。也可以认为是从所有特征中选择最佳特征子集。特征选择本质上可以看作是降维的过程。
从sk learn . feature _ extraction . text导入tfidf矢量器
5.3降维)6。模型选择6.1马尔可夫模型、隐马尔可夫模型、层次隐马尔可夫模型、马尔可夫网络(1)应用:词性标注、语音识别、部分句法分析、组块分析、命名实体识别、信息抽取等。它应用于自然科学、工程技术、生物技术、公共事业和信道编码等许多领域。
(2)zjdxy:在随机过程中,每个语言符号的出现概率并不是相互独立的,每个随机实验的当前状态依赖于前一个状态。这个链条是zjdxy。
(3)多元马尔可夫链:考虑到前一个语言符号对后一个语言符号出现概率的影响,这样得到的语言成分链称为一折zjdxy,也是一个二元文法。双zjdxy也是三元语法,三zjdxy也是四元语法。
6.2条件随机场(CRF) (1)条件随机场用于自然语言处理,如序列标注、中文分词、中文姓名识别和歧义消解等,显示出良好的效果。原理是对给定的观测序列和标注序列建立条件概率模型。条件随机场可以用于不同的预测问题,其学习方法通常是最大似然估计。
(2)条件随机场模型还需要解决三个基本问题:特征选择、参数训练和解码。
6.3贝叶斯网络贝叶斯网络又称信念网络,是一种基于概率推理的数学模型,其理论基础是贝叶斯公式。
6.4最大熵模型7。NLP常用工具
(1)Anaconda
Anaconda是一个面向科学计算的Python开发平台,支持Linux、Mac和Windows系统,提供包管理和环境管理的功能,可以轻松解决多个版本Python的共存和切换以及各种第三方包的安装问题。Anaconda使用conda命令来管理包和环境,并且已经包含了Python和相关的支持工具。Anaconda集成了大量的机器学习库和数据处理所必需的第三方库,如NumPy、SciPy、Scikit-Learn和TensorFlow。
(2)Scikit-learn
Scikit-learn是一个流行的入门级机器学习库,其中包含大量的机器学习算法和特征提取实现。它非常容易使用。Scikit-learn实现了浅层学习算法,而神经网络只实现了多层感知器。
(3)TensorFlow
TensorFlow是Google基于dist faith开发的第二代人工智能学习系统,可用于语音识别或图像识别等许多机器学习和深度学习领域。
(4)Keras
Keras是一个高级Python神经网络框架,可以运行在TensorFlow或者Theano上。《Keras》的作者、Google AI的研究员Francois Chollet宣布了一个令人兴奋的消息,Keras将成为第一个加入Tensorflow核心的高级框架,这将使Keras成为TensorFlow的默认API。
(5)Gensim
Gensim是一个开源的第三方Python工具包,用于从原始的非结构化文本中无监督地学习文本隐藏层的主题向量表达。它支持多种主题模型算法,包括TF-IDF、LSA、LDA和word2vec,支持流训练,并为一些常见任务(如相似度计算和信息检索)提供API接口。
(6)NLTK
在NLP领域,NLTK是最常用的Python库。
(7)Jieba
结巴,口吃分词是最流行的中文分词工具。
8.NLP语言模型
(1)词的独热表示(one-hot representation)
(2)Bag of Words
(3)Bi-gram 和 N-gram
(4)词的分布式表示(distributed representation)
(5)共现矩阵(Cocurrence martrix)
(6)神经网络语言模型(Neural Networ Language model,NNLM)
(7)word2vec
连续单词袋(CBOW)跳格模型9。快速入门NLP方法(1)认真阅读一本NLP相关的书,坚持看一段视频。
(2)看看近两年相关方向的复习论文,再看看一些经典论文和最新论文。
(3)独立实现一个小型的自然语言处理项目。
(4)可以在Github上找到很多相关的开源代码,选择一个自己感兴趣的方向进行研究。
10、自然语言处理学习资料(1)我热爱自然语言处理
(2)理解文本中的NLP。
(3)中文分词的原理和工具
(4)自然语言处理项目资源库综述
叔叔,帮我一个忙?