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