你指尖跳跃的代码,是我此生不变的信念,唯有自然语言处理(NLP)才能让技术永续发展。
从自然语言处理(NLP)和知识图谱谈起
我个人主要研究领域是知识图谱,但自然语言处理(NLP)是知识图谱不可或缺的一部分。普遍认为,知识图谱是自然语言处理(NLP)的重要基础,而知识图谱的应用离不开自然语言处理(NLP)的支持。
为什么两者如此紧密相连?可以从它们的定义入手理解:
什么是知识图谱?
知识图谱源自语义网络,主要目的是描绘现实世界中的各类实体和概念及其相互关系。
什么是NLP?
NLP是指机器接收用户自然语言输入,并通过一系列算法处理,模拟人类对自然语言的理解,并返回用户期望的结果。
从上述描述可以看出,“语义网络”、“自然语言”、“自然客观世界”等关键词揭示了NLP和知识图谱的目标:使机器和人类拥有相同的理解能力,并实现拟人化的交互。
在实际应用中,知识图谱和NLP的目标一致,例如智能问答、翻译和推荐系统等。知识图谱的构建依赖于NLP技术对自然语言的处理,而NLP的应用也离不开知识图谱的关联分析和推理能力。
因此,在研究知识图谱时,自然语言处理(NLP)是不可忽视的领域。
理解自然语言前的分词
如果你在搜索引擎中输入“苹果和锤子”,你可能会发现搜索结果几乎都是关于“苹果手机”和“锤子手机”。但如果你单独搜索“苹果”或“锤子”,搜索结果可能会包含其他含义的“苹果”和“锤子”。
这种现象是因为搜索引擎的知识图谱中存在“手机”、“苹果”和“锤子”之间的关联关系,使得机器能够识别并返回相关结果。
如果搜索的是完整的一句话呢?
“苹果和锤子哪个更好。”
这时,机器需要正确地从这句话中提取出“苹果”和“锤子”,而不是提取出“萍、果和、锤、子”。
因此,当搜索“苹果和锤子哪个更好”时,搜索引擎会执行许多任务,其中包括理解输入和遍历知识图谱。理解输入的过程涉及词法分析、句法分析和语义分析。
搜索引擎首先将输入的句子拆分成词语,然后标注词性,接着进行命名实体识别,最后搜索实体间可能的关系。在进行命名实体识别之前,必须先进行分词和词性标注。
词法分析是自然语言处理的第一步,其具体步骤包括:分词、词性标注、命名实体识别和词义消歧。
其中,命名实体识别和词义消歧是构建知识图谱的关键步骤,而分词是最基本的任务。目前,分词算法已经相当成熟,准确率可达90%以上,但仍有一些难题需要解决。例如:
分词算法综述
分词是自然语言处理中最经典也是最基本的任务之一。不同语言的分词重点有所不同。
对于英语等语言,句子中的词语通常是自然分隔的,因此更多工作集中在实体识别和词性标注等方面。
而对于中文等语言,句子由词语组成,词语由字组成,因此切分句子提取词语是理解文本的基础步骤。
接下来主要讨论中文分词的算法。中文定义一个句子中的词语非常困难。据测试,即使是母语为汉语的人,对于句子中词语的认同率也只有约70%。对于机器而言,这更是巨大的挑战。
分词算法按规则可分为两类:基于字典的分词和基于字的分词。
按技术发展可分为:基于规则的分词、基于统计的分词和基于神经网络的分词。
以下是三种基础的分词算法:
最大匹配分词算法
最大匹配算法是一种基于词典的算法,首先需要一个词典作为语料库。算法的基本原理是从左到右匹配词典中最长的词语,如果无法匹配则单独划分。
算法需要两个输入:分词词典(已知词语集合)和待分词句子。以下是一个简单的例子来说明匹配过程:
分词词典:{“明天”, “好吃的”, “吃”, “什么”} 待分词句子:明天吃什么?
匹配过程: - 明天吃什么 => - 明天吃什 => - 明天吃 => - 明天 => 得到词语:明天
该算法可以正向或逆向匹配,并结合最小切分和限定最大词语长度来提高准确率。然而,该算法在实际应用中的准确率较低,因为它容易产生反例,如“南京市长江大桥”可能会被错误地拆分为“南京市长”。此外,该算法依赖于词典,如果出现新词不在词典中,则无法正确分词。
n-gram分词算法
n-gram是一种基于统计的语言模型算法,通过概率来判断词语的组成情况。该算法基于一个假设:句子中包含常见词语的概率高于包含生僻词的概率,因此算法的目标是寻找最有可能的分词结果。
求概率最直接的方法是统计,例如对于“南京市长江大桥”,有多种分词方式: - 南京/市/长江/大桥 - 南京/市/长江大桥 - 南京市/长江大桥 - 南京/市长/江/大桥 - 南京/市长/江大桥
每种分词在语料库中出现的次数为m,语料库的总数为n,则每种分词的概率为m/n。
虽然这种方法在理论上可行,但在实际应用中,语料库不可能包含所有句子,因此如何高效统计成为关键问题。
该算法的思想并不复杂,但详细介绍较为繁琐。N-gram算法在搜索引擎和输入法的词语联想补全中有广泛应用,输入几个字时,会自动联想出最有可能的后续词语。
BiLSTM+CRF分词算法
该算法实际上是BiLSTM和CRF算法的结合。这两个算法的具体介绍会涉及许多基础知识,包括马尔可夫链和神经网络等。这里简要概述一下。
CRF相比传统统计方法的优势在于考虑了上下文场景,对多义词和未录入词库的词有更好的效果,但效率较低,需要大量训练和计算时间。
LSTM是RNN的一种变体,解决了RNN训练过程中梯度消失和梯度爆炸的问题。双向(Bidirectional)循环神经网络从句子开头和结尾同时处理输入,将上下文信息编码,提升预测效果。
基本步骤如下: 1. 标注序列; 2. 双向LSTM网络预测标签; 3. 使用Viterbi算法求解最优路径。
BiLSTM-CRF结合了两种算法模型,可以保证最终预测结果有效。算法输入是词嵌入向量,输出是每个单词对应的预测标签。
NLP技术的工程化
“语言理解是人工智能领域的明珠。” ——比尔·盖茨
通常认为,人工智能是机器从感知到认知的过程。在感知阶段,最著名的是计算机视觉技术。计算机视觉在实际应用中已经相当成熟,不仅能识别物体图像,还能预测物体的下一个动作。在应用上,视觉技术在大多数场景中对准确度的要求相对宽松,相比之下,自然语言处理(NLP)则要求更高。
在技术层面,NLP面临的四大难点是:问答、翻译、复述和文摘。
以上应用场景需要一整套自然语言处理方法流程,包括词法分析、句法分析、文档分析、语义分析、分类和相似度匹配等。
将这些基础任务转化为具体的业务场景,常见的应用包括:自动问答、纠错消歧、词典翻译、自动摘要、标签分类、情感分析和推荐系统等。
如何将NLP技术应用于具体场景?
我认为,当前NLP技术应用的关键在于“两端问题”,即顶层产品和底层数据。底层是否拥有面向垂直领域的足够大的语料库,顶层是否有良好的交互系统。
在底层,无论是自然语言处理(NLP)还是知识图谱,多数努力方向是建立通用的知识库和词典等。但在面向垂直领域时,存在较高的市场壁垒,一方面是因为数据安全和数据资产的原因,大部分数据是非公开的,无法直接使用。另一方面是因为垂直领域建模需要深入的业务理解,这也是需要在特定行业深耕的经验基础。
通过针对具体业务特点定制化构建面向垂直领域的知识图谱及基于此图谱的NLP应用,才能真正提升相关业务的生产力。
在顶层,需要通过产品将技术落地。除了产品本身符合正确的业务流程,还需要良好的交互提升用户体验。例如智能客服应用,多轮交互难以做到100%,但可以通过友好的交互让用户接受结果。如果交互做得不好,即使技术上准确率很高也可能遭到抱怨。
再如语音实时翻译,会面临噪声、远场和口音等问题。因此,将NLP技术落地涉及许多定制化场景,除了技术,对产品经理也提出了很高的要求。
有趣的是,知识图谱被视为人工智能的基石,而自然语言处理(NLP)被称为人工智能的明珠。这句话充分体现了两者间的相互依赖:知识图谱需要借助自然语言处理技术构建,而自然语言处理需要借助知识图谱完成推理。
技术算法是通用的,但业务场景却是定制化的。产品经理需要深入思考如何将技术工程化、产品化,最后实现商业化变现。
用技术讲述故事的同时,需要更多的实际应用来提升业务目标。
作者:Eric,数据产品经理,金融大数据方向,知识图谱工程化。
本文由 @Eric_Xie 原创发布于人人都是产品经理。未经允许,禁止转载。