博舍

自然语言处理基本问题 不属于自然语言处理的应用技术是

自然语言处理基本问题

自然语言处理知识太庞大了,网上也都是一些零零散散的知识,比如单独讲某些模型,也没有来龙去脉,学习起来较为困难,于是我自己总结了一份知识体系结构,不足之处,欢迎指正。内容来源主要参考黄志洪老师的自然语言处理课程。主要参考书为宗成庆老师的《统计自然语言处理》,虽然很多内容写的不清楚,但好像中文NLP书籍就这一本全一些,如果想看好的英文资料,可以到我的GitHub上下载:

http://github.com/lovesoft5/ml下面直接开始正文:一、自然语言处理概述1)自然语言处理:利用计算机为工具,对书面实行或者口头形式进行各种各样的处理和加工的技术,是研究人与人交际中以及人与计算机交际中的演员问题的一门学科,是人工智能的主要内容。2)自然语言处理是研究语言能力和语言应用的模型,建立计算机(算法)框架来实现这样的语言模型,并完善、评测、最终用于设计各种实用系统。3)研究问题(主要):信息检索机器翻译文档分类问答系统信息过滤自动文摘信息抽取文本挖掘舆情分析机器写作语音识别研究模式:自然语言场景问题,数学算法,算法如何应用到解决这些问题,预料训练,相关实际应用自然语言的困难:场景的困难:语言的多样性、多变性、歧义性学习的困难:艰难的数学模型(hmm,crf,EM,深度学习等)语料的困难:什么的语料?语料的作用?如何获取语料?二、形式语言与自动机语言:按照一定规律构成的句子或者字符串的有限或者无限的集合。描述语言的三种途径:穷举法文法(产生式系统)描述自动机自然语言不是人为设计而是自然进化的,形式语言比如:运算符号、化学分子式、编程语言形式语言理论朱啊哟研究的是内部结构模式这类语言的纯粹的语法领域,从语言学而来,作为一种理解自然语言的句法规律,在计算机科学中,形式语言通常作为定义编程和语法结构的基础形式语言与自动机基础知识:集合论图论自动机的应用:1,单词自动查错纠正2,词性消歧(什么是词性?什么的词性标注?为什么需要标注?如何标注?)形式语言的缺陷:1、对于像汉语,英语这样的大型自然语言系统,难以构造精确的文法2、不符合人类学习语言的习惯3、有些句子语法正确,但在语义上却不可能,形式语言无法排出这些句子4、解决方向:基于大量语料,采用统计学手段建立模型三、语言模型1)语言模型(重要):通过语料计算某个句子出现的概率(概率表示),常用的有2-元模型,3-元模型2)语言模型应用:语音识别歧义消除例如,给定拼音串:tashiyanyanjiusaunfade可能的汉字串:踏实烟酒算法的他是研究酸法的他是研究算法的,显然,最后一句才符合。3)语言模型的启示:1、开启自然语言处理的统计方法2、统计方法的一般步骤:收集大量语料对语料进行统计分析,得出知识针对场景建立算法模型解释和应用结果4)语言模型性能评价,包括评价目标,评价的难点,常用指标(交叉熵,困惑度)5)数据平滑:数据平滑的概念,为什么需要平滑平滑的方法,加一法,加法平滑法,古德-图灵法,J-M法,Katz平滑法等6)语言模型的缺陷:语料来自不同的领域,而语言模型对文本类型、主题等十分敏感n与相邻的n-1个词相关,假设不是很成立。四、概率图模型,生成模型与判别模型,贝叶斯网络,马尔科夫链与隐马尔科夫模型(HMM)1)概率图模型概述(什么的概率图模型,参考清华大学教材《概率图模型》)2)马尔科夫过程(定义,理解)3)隐马尔科夫过程(定义,理解)HMM的三个基本问题(定义,解法,应用)注:第一个问题,涉及最大似然估计法,第二个问题涉及EM算法,第三个问题涉及维特比算法,内容很多,要重点理解,(参考书李航《统计学习方法》,网上博客,笔者github)五、马尔科夫网,最大熵模型,条件随机场(CRF)1)HMM的三个基本问题的参数估计与计算2)什么是熵3)EM算法(应用十分广泛,好好理解)4)HMM的应用5)层次化马尔科夫模型与马尔科夫网络提出原因,HMM存在两个问题6)最大熵马尔科夫模型优点:与HMM相比,允许使用特征刻画观察序列,训练高效缺点:存在标记偏置问题7)条件随机场及其应用(概念,模型过程,与HMM关系)参数估计方法(GIS算法,改进IIS算法)CRF基本问题:特征选取(特征模板)、概率计算、参数训练、解码(维特比)应用场景:词性标注类问题(现在一般用RNN+CRF)中文分词(发展过程,经典算法,了解开源工具jieba分词)中文人名,地名识别8)CRF++六、命名实体识别,词性标注,内容挖掘、语义分析与篇章分析(大量用到前面的算法)1)命名实体识别问题相关概率,定义相关任务类型方法(基于规程->基于大规模语料库)2)未登录词的解决方法(搜索引擎,基于语料)3)CRF解决命名实体识别(NER)流程总结:训练阶段:确定特征模板,不同场景(人名,地名等)所使用的特征模板不同,对现有语料进行分词,在分词结果基础上进行词性标注(可能手工),NER对应的标注问题是基于词的,然后训练CRF模型,得到对应权值参数值识别过程:将待识别文档分词,然后送入CRF模型进行识别计算(维特比算法),得到标注序列,然后根据标注划分出命名实体4)词性标注(理解含义,意义)及其一致性检查方法(位置属性向量,词性标注序列向量,聚类或者分类算法)七、句法分析1)句法分析理解以及意义1、句法结构分析完全句法分析浅层分析(这里有很多方法。。。)2、依存关系分析2)句法分析方法1、基于规则的句法结构分析2、基于统计的语法结构分析八、文本分类,情感分析1)文本分类,文本排重文本分类:在预定义的分类体系下,根据文本的特征,将给定的文本与一个或者多个类别相关联典型应用:垃圾邮件判定,网页自动分类2)文本表示,特征选取与权重计算,词向量文本特征选择常用方法:1、基于本文频率的特征提取法2、信息增量法3、X2(卡方)统计量4、互信息法3)分类器设计SVM,贝叶斯,决策树等4)分类器性能评测1、召回率2、正确率3、F1值5)主题模型(LDA)与PLSALDA模型十分强大,基于贝叶斯改进了PLSA,可以提取出本章的主题词和关键词,建模过程复杂,难以理解。6)情感分析借助计算机帮助用户快速获取,整理和分析相关评论信息,对带有感情色彩的主观文本进行分析,处理和归纳例如,评论自动分析,水军识别。某种意义上看,情感分析也是一种特殊的分类问题7)应用案例九、信息检索,搜索引擎及其原理1)信息检索起源于图书馆资料查询检索,引入计算机技术后,从单纯的文本查询扩展到包含图片,音视频等多媒体信息检索,检索对象由数据库扩展到互联网。1、点对点检索2、精确匹配模型与相关匹配模型3、检索系统关键技术:标引,相关度计算2)常见模型:布尔模型,向量空间模型,概率模型3)常用技术:倒排索引,隐语义分析(LDA等)4)评测指标十、自动文摘与信息抽取,机器翻译,问答系统1)统计机器翻译的的思路,过程,难点,以及解决2)问答系统基本组成:问题分析,信息检索,答案抽取类型:基于问题-答案,基于自由文本典型的解决思路3)自动文摘的意义,常用方法4)信息抽取模型(LDA等)十一、深度学习在自然语言中的应用1)单词表示,比如词向量的训练(wordvoc)2)自动写文本写新闻等3)机器翻译4)基于CNN、RNN的文本分类5)深度学习与CRF结合用于词性标注

自然语言处理技术

你当前正在访问MicrosoftAzureGlobalEdition技术文档网站。如果需要访问由世纪互联运营的MicrosoftAzure中国技术文档网站,请访问https://docs.azure.cn。

自然语言处理技术认知服务DatabricksHDInsightSynapseAnalytics

自然语言处理(NLP)有很多用途:情绪分析、主题检测、语言检测、关键短语提取和文档归类。

具体而言,NLP可用于:

对文档进行分类。例如,可以将文档标记为敏感文档或垃圾文档。进行后续处理或搜索。可以将NLP输出用于这些目的。通过识别文档中存在的实体对文本进行总结。使用关键字标记文档。对于关键字,NLP可以使用已标识的实体。执行基于内容的搜索和检索。标记使此功能成为可能。总结文档的重要主题。NLP可以将已标识的实体合并成主题。对文档进行分类以便导航。为此,NLP使用检测到的主题。根据选定的主题枚举相关文档。为此,NLP使用检测到的主题。对文本进行情绪评分。通过使用此功能,你可以评估文档的正面或负面语气。

Apache®、ApacheSpark和火焰徽标是ApacheSoftwareFoundation在美国和/或其他国家/地区的商标或注册商标。使用这些标记并不暗示获得ApacheSoftwareFoundation的认可。

可能的用例

可从自定义NLP中受益的业务方案包括:

为金融、医疗保健、零售、政府和其他部门的手写或机器创建的文档提供文档智能。用于文本处理的与行业无关的NLP任务,例如命名实体识别(NER)、分类、摘要和关系提取。这些任务使检索、标识和分析文档信息(如文本和非结构化数据)的过程自动化。这些任务的示例包括风险分层模型、本体分类和零售摘要。用于语义搜索的信息检索和知识图创建。借助此功能,可以创建支持药物发现和临床试验的医学知识图。在零售、金融、旅游和其他行业面向客户的应用程序中,为对话式AI系统提供文本翻译。作为自定义NLP框架的ApacheSpark

ApacheSpark是并行处理框架,支持使用内存中处理来提升大数据分析应用程序的性能。AzureSynapseAnalytics、AzureHDInsight和AzureDatabricks提供对Spark的访问权限,并利用其处理能力。

对于自定义NLP工作负载,SparkNLP充当处理大量文本的有效框架。此开放源代码NLP库提供Python、Java和Scala库,这些库提供传统NLP库(例如spaCy、NLTK、StanfordCoreNLP和OpenNLP)的全部功能。SparkNLP还提供拼写检查、情绪分析和文档分类等功能。SparkNLP通过提供最先进的准确性、速度和可伸缩性,改进了以前的工作。

最近的公开基准表明,SparkNLP比spaCy快38倍和80倍,在训练自定义模型方面准确度相当。SparkNLP是唯一可以使用分布式Spark群集的开放源代码库。SparkNLP是SparkML的本机扩展,可直接对数据帧进行操作。因此,在群集上加速会导致另一个数量级的性能增益。由于每个SparkNLP管道都是SparkML管道,因此SparkNLP非常适合生成统一的NLP和机器学习管道,例如文档分类、风险预测和推荐管道。

除了出色的性能外,SparkNLP还为越来越多的NLP任务提供最先进的准确性。SparkNLP团队定期阅读最新的相关学术论文,并实现最先进的模型。在过去两到三年中,性能最佳的模型都使用了深度学习。库带有预生成的深度学习模型,可用于命名实体识别、文档分类、情绪和情感检测以及句子检测。库还包括几十种预训练的语言模型,其中包括对字、区块、句子和文档嵌入的支持。

库针对CPU、GPU和最新的IntelXeon芯片进行了优化生成。你可以缩放训练和推理进程以利用Spark群集。这些进程可以在所有常用分析平台的生产环境中运行。

Azure市场提供NLP服务器。若要探索Azure中的大规模自定义NLP,请参阅NLP服务器。

挑战处理自由格式文本文档的集合需要大量的计算资源。处理也非常耗时。此类进程通常涉及GPU计算部署。如果没有标准化的文档格式,使用自由格式文本处理从文档中提取特定事实可能很难获得一致准确的结果。例如,构想发票的文本表示形式,这难以生成一个进程来准确地从不同供应商那里提取发票编号和发票日期。关键选择条件

在Azure中,在将AzureDatabricks、AzureSynapseAnalytics和AzureHDInsight等Spark服务与SparkNLP配合使用时它们会提供NLP功能。Azure认知服务是NLP功能的另一种选择。若要确定要使用的服务,请考虑以下问题:

是否要使用预生成或预训练的模型?如果是,请考虑使用Azure认知服务提供的API。或者通过SparkNLP下载所选模型。

是否需要针对大型文本数据语料库训练自定义模型?如果是,请考虑将AzureDatabricks、AzureSynapseAnalytics或AzureHDInsight与SparkNLP配合使用。

是否需要低级别NLP功能,如词汇切分、词干分解、词形还原和词频/逆文档频率(TF/IDF)?如果是,请考虑将AzureDatabricks、AzureSynapseAnalytics或AzureHDInsight与SparkNLP配合使用。或在所选的处理工具中使用开源软件库。

是否需要简单的高级别NLP功能,如实体和意图识别、主题检测、拼写检查或情绪分析?如果是,请考虑使用认知服务提供的API。或者通过SparkNLP下载所选模型。

功能矩阵

以下各表汇总了NLP服务功能上的关键差异。

常规功能功能使用SparkNLP的Spark服务(AzureDatabricks、AzureSynapseAnalytics、AzureHDInsight)Azure认知服务提供预先训练的模型作为服务是是RESTAPI是是可编程性Python、Scala有关支持的语言,请参阅其他资源支持处理大型数据集和大型文档是否低级NLP功能批注器功能使用SparkNLP的Spark服务(AzureDatabricks、AzureSynapseAnalytics、AzureHDInsight)Azure认知服务句子检测程序是否深度句子检测程序是是分词器是是N-gram生成器是否字分段是是词干分析器是否词形还原工具是否词性标记是否依赖项分析程序是否翻译是否非索引字清理器是否拼写更正是否标准化程序是是文本匹配程序是否TF/IDF是否正则表达式匹配程序是嵌入在语言理解服务(LUIS)中。在替换LUIS的对话语言理解(CLU)中不受支持。日期匹配程序是可以通过DateTime识别器在LUIS和CLU中使用Chunker是否高级NLP功能功能使用SparkNLP的Spark服务(AzureDatabricks、AzureSynapseAnalytics、AzureHDInsight)Azure认知服务拼写检查是否汇总是是问答是是情绪检测是是情感检测是支持观点挖掘标记分类是是,通过自定义模型文本分类是是,通过自定义模型文本表示形式是否NER是是-文本分析提供一组NER,自定义模型用于实体识别实体识别是是,通过自定义模型语言检测是是支持除英语以外的语言是,支持200多种语言是,支持的语言超过97种在Azure中设置SparkNLP

若要安装SparkNLP,请使用以下代码,但将替换为最新版本号。有关详细信息,请参阅SparkNLP文档。

#InstallSparkNLPfromPyPI.pipinstallspark-nlp==#InstallSparkNLPfromAnacodnaorConda.condainstall-cjohnsnowlabsspark-nlp#LoadSparkNLPwithSparkShell.spark-shell--packagescom.johnsnowlabs.nlp:spark-nlp_#LoadSparkNLPwithPySpark.pyspark--packagescom.johnsnowlabs.nlp:spark-nlp_#LoadSparkNLPwithSparkSubmit.spark-submit--packagescom.johnsnowlabs.nlp:spark-nlp_#LoadSparkNLPasanexternalJARaftercompilingandbuildingSparkNLPbyusingsbtassembly.spark-shell--jarsspark-nlp-assembly-3.jar开发NLP管道

对于NLP管道的执行顺序,SparkNLP遵循与传统SparkML机器学习模型相同的开发概念。但SparkNLP会应用NLP技术。

SparkNLP管道的核心组件是:

DocumentAssembler:一种转换器,通过将数据更改为可供SparkNLP处理的格式来准备数据。此阶段是每个SparkNLP管道的入口点。DocumentAssembler可以读取String列或Array[String]。setCleanupMode可用于预处理文本。默认情况下,此模式处于关闭状态。

SentenceDetector:一种批注器,通过使用给定的方法来检测句子边界。此批注器可以返回Array中每个提取的句子。如果将explodeSentences设置为true,它还可以返回不同行中的每个句子。

Tokenizer:一种批注器,将原始文本分隔为标记或单词、数字和符号等单元,并以TokenizedSentence结构返回标记。此类不适合。如果tokenizer适合,则内部RuleFactory会使用输入配置来设置标记化规则。Tokenizer使用开放标准来识别标记。如果默认设置无法满足需求,可以添加可用于自定义Tokenizer的规则。

Normalizer:清理标记的批注器。Normalizer需要词干。Normalizer使用正则表达式和字典来转换文本并删除脏字符。

WordEmbedding:查找将标记映射到矢量的批注器。setStoragePath可用于为嵌入内容指定自定义标记查找字典。字典的每一行都需要包含一个标记及其向量表示形式,用空格分隔。如果在字典中找不到标记,结果会是相同维度的零向量。

SparkNLP使用MLflow本机支持的SparkMLlib管道。MLflow是机器学习生命周期的开源平台。其组件包括:

MlflowTracking:记录试验并提供查询结果的方法。MLflowProject:使在任何平台上运行数据科学代码成为可能。MLflowModel:将模型部署到不同的环境。ModelRegistry:管理存储在中心存储库中的模型。

MLflow已集成到AzureDatabricks。可以在任何其他基于Spark的环境中安装MLflow来跟踪和管理试验。还可以使用MLflowModelRegistry将模型用于生产。

作者

本文由Microsoft维护,它最初是由以下贡献者撰写的。

主要作者:

MoritzSteller|高级云解决方案架构师ZoinerTejada|CEO兼架构师后续步骤

SparkNLP文档:

SparkNLPSparkNLP常规文档SparkNLPGitHubSparkNLP演示SparkNLP管道SparkNLP批注器SparkNLP转换器

Azure组件:

AzureSynapseAnalyticsAzureHDInsightAzureDatabricks认知服务

学习资源:

MicrosoftAzureAI基础知识:了解自然语言处理创建语言理解解决方案相关资源Azure中的大规模自定义自然语言处理选择Microsoft认知服务技术比较Microsoft的机器学习产品和技术Azure机器学习最佳工具选择决策指南MLflow和Azure机器学习使用Azure认知搜索中的图像和自然语言处理实现AI扩充使用图像和自然语言处理通过准实时分析服务分析新闻源使用深度学习通过NLP建议内容标记

什么是自然语言处理(NLP)定义+应用一次性看个明白

不懂什么是自然语言处理?它在商业智能中又有哪些应用?带着这样的疑问,慧都网将从定义和应用两个方向,通过3分钟的时间快速了解自然语言处理(NLP)。

语言是一项基本的沟通工具。人类使用语言来传递信息和意义,人类善于用语言来描述现实世界。我们通常会通过语义线索来实现这一点,语义线索可以是文字,符号或者图像,它能提供与现实世界中所代表的事物更紧密的联系。

当人们看到文本时,他们通常能理解其中的含义。而当计算机看到文本时,它们只能看到字符串,无法将其对应到现实世界的事物或者理解其中包含的想法。随着人类越来越依赖于计算系统,计算机理解文本和语言也变得越来越重要。这就是自然语言处理(NLP)的作用。现在,机器学习和人工智能正在不断发展,自然语言处理正是计算机与人类交流之间的桥梁。

什么是自然语言处理?

自然语言处理是计算机科学和计算语言学中的一个领域,用于研究人类(自然)语言和计算机之间的相互作用。语义是指单词之间的关系和意义。自然语言处理的重点是帮助计算机利用信息的语义结构(数据的上下文)来理解含义。

例如,统计图表可能非常抽象。下图是一个对数图表,展示了各种动物的大脑和体重之间的关系。

现在,如果我们应用语义来更好地表达此图的含义,它将如下所示:

第二张图表使用了与每个动物相关的图像。然后图表立即变得更有意义了,因为我们的视觉系统不必识别前一图像中杂乱的文本标签。

同样地,计算机使用语义来为单词和文本分配含义和意图。这能允许计算机和最终用户之间的对话。

自然语言处理的例子

自然语言已经渗透到日常生活中。最常见的自然语言技术有Alexa,Siri和GoogleAssistant等,这些技术能够通过识别语音模式来推断意义并提供适当的响应。NLP也是一些Gmail功能的基础。例如Gmail使用NLP来自动解析并理解电子邮件的内容,它能够检测到像会议邀请,包裹发货通知和提醒等的内容。

NLP使用强大的解析,语法规则和算法来从人们的话语中获得意图。话语是通用语言中的语句或问题片段,由一系列的关键字组成。

NLP另一个常见的例子是网络搜索引擎。当您在搜索引擎中输入短语时,它将根据其他类似的搜索行为提供建议。您还可以在社交媒体网站上的搜索功能中看到它。例如,搜索“我认识的居住在奥斯汀的人”,这将显示在该地区的朋友列表。

自然语言如何影响商业智能

如今,商业智能(BI)供应商正在为可视化提供自然语言界面,以便用户可以自然地与他们的数据进行交互,在他们想到问题时提出问题。在BI市场中,自然语言通常被归类在“智能分析”中,与机器学习和人工智能的应用有关。

自然语言处理能够为所有层次的用户(从初级到高级)开放数据分析,因为使用该技术来获得见解并不需要深入了解BI工具。

“每个人都渴望获得有关数据的见解。自然语言是解决这一问题的一种重要方式。它能够让您询问有关数据的问题,而不需要考虑这样做的原理。”

——Tableau自然语言团队的开发经理VidyaSetlur

在询问有关数据的问题时,人们通常不会从空白状态开始。我们经常会依赖上下文来激发我们的好奇心。同样地,在BI工具中,NLP系统利用对话中的上下文来理解用户查询背后的意图并进行进一步对话,从而创建更自然的对话体验。

例如,如果某人对他的数据有后续问题时,他不必复述问题以深入挖掘或澄清歧义。您可以使用BI工具“查找加利福尼亚附近的大地震”,然后提出一个后续问题,例如“德克萨斯附近怎么样?”而不需要在第二个问题中也提到地震。

上图是某人在Tableau自然语言功能中询问数据问题的例子,AskData。

BI工具中的自然语言功能能够让人们通过简单地与数据的交谈来获得洞察力。随着BI行业自然语言的日趋成熟,它将打破组织采用分析的障碍,并改变人们与数据交互的方式。

慧都BI提供Tableau的产品和技术服务,更有企业级BI业务分析解决方案,我们拥有包括Qlik、Tableau、PowerBI和IBMCognos全球领先的BI产品,并提供相关解决方案,让数据创造无限价值。

与此同时可以拨打慧都热线023-68661681或咨询慧都在线客服,我们将帮您转接BI专业团队,并发送相关资料给您!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇