NLP是人工智慧的两个子应用领域,作为AI产品副经理,他们最少要知道NLP是甚么,它能做甚么事,这样他们就能获得一种化解痛点的观念,将碰到的痛点和方式相连接。接下去我从“NLP是甚么、能做甚么、现阶段碰到的痛点”四个方面来单纯如是说下NLP。
一.甚么是NLP
NLP,英语叫语义处置,单纯来说,是两门让计算机系统认知、分析以及聚合语义的学科专业,约莫的研究过程是:研制出能则表示词汇潜能的数学模型——提出各式各样方式来急速提高词汇数学模型的潜能——根据词汇数学模型来结构设计各式各样应用应用领域系统——急速地健全词汇数学模型。
NLP认知语义现阶段有三种处置方式:
1.如前所述准则来认知语义,即透过制订一些系列的准则来结构设计两个流程,接着透过那个程序来化解语义痛点。输入是准则,输入是流程;
2.如前所述统计统计数据机器学习来认知语义,狸尾豆大量的统计数据透过机器学习演算法来体能训练两个数学模型,接着透过那个数学模型来化解语义痛点。输入是统计数据和想的结果,输入是数学模型。
接下去单纯如是说NLP常用的各项任务或应用应用领域。
二.NLP能做甚么:
1.不定式
英语能分为字、词、词组、语句、章节、文件格式这几个微观,如果要抒发两个原意,很多时候透过两个字是难以抒发的两个涵义的,最少两个词就可以更快抒发两个涵义,因此一般情况是以“词”为基本基层单位,用“词”女团来则表示“词组、、语句、章节、文件格式”,再者计算机系统的输入是词组或语句或章节还是文件格式要是看具体内容的情景。由于英语Deoria英语那般词与词之间用字符分隔,计算机难以用界定两个文档有什么样词,因此要进行不定式。现阶段不定式常用的方式有三种:
(1)如前所述准则:Heuristic(分析方法)、URL表
(2)如前所述机器学习/统计统计数据方式:HMM(隐普鲁德数学模型)、CRF(条件随机场)
(注:在这里就不具体内容如是说方式的原理和实现过程了,大家感兴趣,能自行百度了解)
现状不定式这项技术非常成熟了,不定式的准确率已经达到了可用的程度,也有很多第三方的库供他们使用,比如jieba,因此一般在实际运用中他们会采用“jieba+自定义词典”的方式进行不定式。
2.词编码
现在把“我喜欢你”那个文档透过不定式分成“我”、“喜欢”、“你”四个词,此时把这三词作为计算机系统的输入,计算机系统是难以认知的,因此他们把这些词转换成计算机系统能认知的方式,即词编码,现在普遍是将词则表示为词向量,来作为机器学习的输入和则表示空间。现阶段有三种则表示空间:
(1)离散则表示:
A.One-hot则表示
假设他们的语料库是:
我喜欢你你对我有感觉吗
词典{“我”:1,“喜欢”:2,“你”:3,“对“:4,“有”:5,“感觉”:6,“吗”:7} 。一共有七个维度。
因此用One-hot则表示:
“我” :[1, 0, 0, 0, 0, 0, 0]
“喜欢”:[0, 1, 0, 0, 0, 0, 0]
········
“吗” :[0, 0, 0, 0, 0, 0, 1]
即两个词用两个维度则表示
B.bag of word:即将所有词的向量直接加和作为两个文档的向量。
因此“我 喜欢 你”就则表示为:“[1, 1, 1, 0, 0, 0, 0]”。
C. Bi-gram和N-gram(词汇数学模型):考虑了词的顺序,用语女团则表示两个词向量。
这三种方式背后的思想是:不同的词都代表着不同的维度,即两个“基层单位”(词或词女团等)为两个维度。
(2)分布式则表示:word2vec,则表示两个共现矩阵向量。其背后的思想是“两个词能用其附近的词来则表示”。
离散式或分布式的则表示空间都有它们各自的优缺点,感兴趣的读者能自行查资料了解,在这里不阐述了。这里有两个痛点,当语料库越大时,包含的词就越多,那词向量的维度就越大,这样在空间储存和计算量都会指数增大,因此工程师在处置词向量时,一般都会进行降维,降维就意味着部分信息会丢失,从而影响最终的效果,因此作为产品副经理,跟进项目开发时,也需要了解工程师降维的合理性。
3.自动文摘
自动文摘是指在原始文档中自动摘要出关键的文档或知识。为什么需要自动文摘?有两个主要的原因:(1)信息过载,他们需要在大量的文档中抽出最有用、最有价值的文档;(2)人工摘要的成本非常高。现阶段自动文摘有三种化解思路:第一种是extractive(抽取式),从原始文档中找到一些关键的语句,组成一篇摘要;另一种方式是abstractive(摘要式),计算机系统先认知原始文档的内容,再用自己的原意将其抒发出来。自动文摘技术现阶段在新闻应用领域运用的最广,在信息过载的时代,用该技术帮助用户用最短的时间了解最多、最有价值的新闻。此外,如何在非结构的统计数据中提取结构化的知识也将是问答机器人的一大方向。
4.实体识别
实体识别是指在两个文档中,识别出具体内容特定类别的实体,例如人名、地名、数值、专有名词等。它在信息检索、自动问答、知识图谱等应用领域运用的比较多。实体识别的目的就是告诉计算机系统那个词是属于某类实体,有助于识别出用户意图。比如百度的知识图谱:
“周星驰多大了”识别出的实体是“周星驰”(明星实体),关系是“年龄”,搜索系统能知道用户提问的是某个明星的年龄,接着结合统计数据“周星驰 出生时间 1962年6月22日”以及当前日期来推算出周星驰的年龄,并把结果直接把那个结果显示给用户,而不是显示候选答案的链接。
此外,NLP常用的各项任务还有:主题识别、机器翻译、文档分类、文档聚合、情感分析、URL提取、文档相似度等,以后有时间再为大家做单纯如是说。
三.NLP现阶段存在的症结
1.词汇不规范,灵活性高
语义并不规范,虽然能找一些基本准则,但是语义太灵活了,同两个原意能用多种方式来抒发,不管是如前所述准则来认知语义还是透过机器学习来学习统计数据内在的特征都显得比较困难。
2.错别字
在处理文档时,他们会发现有大量的错别字,怎么样让计算机系统认知这些错别字想抒发的真正涵义,也是NLP的一大症结
3.新词
他们处在互联网高速发展的时代,网上每天都会产生大量的新词,他们如何快速地发现这些新词,并让计算机系统认知也是NLP的症结
4.用语向量来则表示词依然存在不足
上述,他们讲到,他们是透过词向量来让计算机系统认知词,但是词向量所则表示的空间,它是离散,而不是连续,比如则表示一些正面的词:好,很好,棒,厉害等,在“好”到“很好”的词向量空间中,你是不能找到一些词,从“好”连续到“很好”,因此它是离散、不连续的,不连续最大的痛点就是不可导.计算机系统是处置可导的函数非常容易,不可导的话,计算量就上来了。当然现在也有一些演算法是计算词向量做了连续近似化,但这肯定伴随着信息的损失。总之,词向量并不是最好的则表示词的方式,需要一种更快的数学词汇来则表示词,当然可能他们人类的语义本身就是不连续的,或者人类难以创建出“连续”的语义。