前 言
本刊旨在为广大技术爱好者分享一线的NLP 实战经验。
本刊以文本挖掘作为“前锋内容”, 从达观的工作实践出发,从原理到实践,
进一步阐述中文分词技术、半监督学习技术以及如何打造中文NER 系统,从而
引出其上游技术——推荐引擎和搜索引擎。
垂直搜索引擎实践篇以科普性质的倒排索引解读开启了搜索的实践之谈,
着重讲述了垂直搜索引擎应用中的搜索排序、搜索词自动纠错以及目前应用火
热的智能问答系统。
推荐系统实践篇作为压轴内容,究其原因是文本挖掘和搜索引擎都是其良
好应用的关键一环。该篇首先深度分析并讲述达观数据如何攻克推荐系统较难
的冷启动环节,详实有效。而后对基于用户历史行为的推荐应用进行深入浅出
的讲解,之后强调了推荐系统在应用过程中多模型融合的方法和价值,最终以
推荐系统的实践和优化来进行全部内容的收尾,内容环环相扣,缺一不可。
"Per Aspera ad Astra" —— 循此苦旅,以达天际。达观相信术业有专攻,
专注于文本技术,也乐于同各位依然奋斗在技术研究与实践道路上的同道者们,
分享经验,共同进步。达观数据在此与诸君共勉。
I 达观数据 NLP 特刊:从原理到实践 # 实战经验·深度分享 #
关于达观数据
Q1:我们是谁?
达观数据是领先的文本智能处理专家,是一家专注于企业知识管理和文字
语义理解的国家高新技术企业。达观数据为企业提供完善的文本挖掘、知识图谱、
搜索引擎和个性化推荐等文本智能处理技术服务,是一家将自动语义分析技术
应用于企业数据化运营的人工智能公司。
Q2:我们的实践团队如何?
达观数据核心团队在 AI 领域享有声望。前腾讯文学高级总监陈运文博士担
任 CEO,核心骨干来自盛大、腾讯等著名互联网公司,由拥有复旦、上交大、
中科大等名校文本挖掘相关专业博士及硕士研究生学历的顶尖人才组建,技术
团队历经十余年的科研深耕,在产品研发方面有丰富的经验和积累,多次斩获
国际数据挖掘最高级别竞赛 ACM KDD 和 CIKM 的世界冠亚军大奖,拥有 30
多项国家发明专利,并与复旦大学建有技术联合实验室,是中国知名的 AI 技术
团队。
Q3:我们的业务涉及哪些行业和客户?
现已积累华为、招商银行、中国平安、中兴、京东、顺丰、中国移动、和
讯财经等数百家企业客户的成功服务经验,覆盖金融、科技、制造、法律、电商、
视频、传媒等行业,通过提升企业文本的自动化处理能力,加快企业智能化转
型速度、有效提升企业运营效率和经营业绩。
希望更深入了解达观数据或自然语言处理相关问题咨询,请移步知乎(ID:
达观数据 / 陈运文),由专业的技术人员为您解答。更多公司详细信息,敬
请访问达观数据公司主页 www.datagrand.com 或关注达观数据微信公众号
(Datagrand_)。
II 达观数据 NLP 特刊:从原理到实践 # 实战经验·深度分享 #
目 录
【文本挖掘引擎实践篇】
达观数据基于 Deep Learning 的中文分词尝试…………………………………………1
基于半监督学习技术的达观数据文本过滤系统…………………………………………19
达观文本指纹算法和系统简述……………………………………………………………31
达观数据如何打造一个中文 NER 系统…………………………………………………41
【垂直搜索引擎实践篇】
搜索引擎之倒排索引解读…………………………………………………………………51
搜索引擎排序实践…………………………………………………………………………58
搜索引擎的 Query 自动纠错技术和架构……………………………………………… 73
达观数据智能问答技术研究………………………………………………………………85
【智能推荐引擎实践篇】
推荐系统中的冷启动和探索利用问题探讨…………………………………………… 94
如何基于用户历史行为进行精准个性化推荐…………………………………………103
多模型融合推荐算法在达观数据的运用………………………………………………113
个性化推荐系统的实践与优化…………………………………………………………123
声 明 ………………………………………………………………………………………134
III 达观数据 NLP 特刊:从原理到实践 # 实战经验·深度分享 #
达观数据基于 Deep Learning 的中文分词尝试
高翔 达观数据联合创始人
1. 现有分词方法介绍
自然语言处理(NLP,Natural Language Processing)是一个信息
时代最重要的技术之一,简单来讲,就是让计算机能够理解人类语言
的一种技术。在其中,分词技术是一种比较基础的模块。对于英文等拉丁语系
的语言而言,由于词之间有空格作为词边际表示,词语一般情况下都能简单且
准确地提取出来。而中文日文等文字,除了标点符号之外,字之间紧密相连,
没有明显的词边界,因此很难将词提取出来。
分词的意义非常大,在中文中,单字作为最基本的语义单位,虽然也有自
己的意义,但表意能力较差,意义较分散。而词的表意能力更强,能更加准确
地描述一个事物,因此在自然语言处理中,通常情况下词(包括单字成词)是
最基本的处理单位。
在具体的应用上,比如在常用的搜索引擎中,term 如果是词粒度的话,不
仅能够减少每个 term 的倒排列表长度,提升系统性能,并且召回的结果相关
性高更准确。比如搜索 query“的确”,如果是单字切分的话,则有可能召回“你
讲的确实在理”这样的 doc。
分词方法大致分为两种:基于词典的机械切分,基于统计模型的序列标注
切分两种方式。
1.1 基于词典的方法
基于词典的方法本质上就是字符串匹配的方法,将一串文本中的文字片段
和已有的词典进行匹配,如果匹配到,则此文字片段就作为一个分词结果。但
是基于词典的机械切分会遇到多种问题,最为常见的包括歧义切分问题和未登
录词问题。
1.1.1 歧义切分
歧义切分指的是通过词典匹配给出的切词结果和原来语句所要表达的意思
不相符或差别较大,在机械切分中比较常见。比如下面的例子:“结婚的和尚
未结婚的人”,通过机械切分的方式,会有两种切分结果:1.“结婚 / 的 / 和 /
尚未 / 结婚 / 的 / 人”;2.“结婚 / 的 / 和尚 / 未 / 结婚 / 的 / 人”。可以明显看出,
1 达观数据 NLP 特刊:从原理到实践 # 实战经验·深度分享 #
第二种切分是有歧义的,单纯的机械切分很难避免这样的问题。
1.1.2 未登录词识别
未登录词识别也称作新词发现,指的是词没有在词典中出现,比如一些新
的网络词汇,如“网红”,“走你”;一些未登录的人名,地名;一些外语音
译过来的词等等。基于词典的方式较难解决未登录词的问题,简单的 case 可
以通过加词典解决,但是随着字典的增大,可能会引入新的 bad case,并且
系统的运算复杂度也会增加。
1.1.3 基于词典的机械分词改进方法
为了解决歧义切分的问题,在中文分词上有很多优化的方法,常见的包括
正向最大匹配,逆向最大匹配,最少分词结果,全切分后选择路径等多种算法。
1.1.4 最大匹配方法
正向最大匹配指的是从左到右对一个字符串进行匹配,所匹配的词越长越
好,比如“中国科学院计算研究所”,按照词典中最长匹配原则的切分结果是:
“中国科学院 / 计算研究所”,而不是“中国 / 科学院 / 计算 / 研究所”。但是
正向最大匹配也会存在一些 bad case,常见的例子如:“他从东经过我家”,
使用正向最大匹配会得到错误的结果:“他 / 从 / 东经 / 过 / 我 / 家”。
逆向最大匹配的顺序是从右向左倒着匹配,如果能匹配到更长的词,则优
先选择,上面的例子“他从东经过我家”逆向最大匹配能够得到正确的结果“他
/ 从 / 东 / 经过 / 我 / 家”。但是逆向最大匹配同样存在 bad case:“他们昨日
本应该回来”,逆向匹配会得到错误的结果“他们 / 昨 / 日本 / 应该 / 回来”。
针对正向逆向匹配的问题,将双向切分的结果进行比较,选择切分词语数
量最少的结果。但是最少切分结果同样有 bad case,比如“他将来上海”,
正确的切分结果是“他 / 将 / 来 / 上海”,有 4 个词,而最少切分结果“他 / 将
来 / 中国”只有 3 个词。
全切分方法就是将所有可能的切分组合全部列出来,并从中选择最佳的一
1.1.5 全切分路径选择方法
条切分路径。关于路径的选择方式,一般有n 最短路径方法,基于词的n 元语
法模型方法等。
n 最短路径方法的基本思想就是将所有的切分结果组成有向无环图,每个
2 达观数据 NLP 特刊:从原理到实践 # 实战经验·深度分享 #
切词结果作为一个节点,词之间的边赋予一个权重,最终找到权重和最小的一
条路径作为分词结果。
基于词的n 元语法模型可以看作是n 最短路径方法的一种优化,不同的是,
根据n 元语法模型,路径构成时会考虑词的上下文关系,根据语料库的统计结果,
找出构成句子最大模型概率。一般情况下,使用unigram 和bigram 的n 元语
法模型的情况较多。
1.2 基于序列标注的分词方法
针对基于词典的机械切分所面对的问题,尤其是未登录词识别,使用基于
统计模型的分词方式能够取得更好的效果。基于统计模型的分词方法,简单来
讲就是一个序列标注问题。
在一段文字中,我们可以将每个字按照他们在词中的位置进行标注,常用
的标记有以下四个 label:B,Begin,表示这个字是一个词的首字;M,Mid-
dle,表示这是一个词中间的字;E,End,表示这是一个词的尾字;S,Sin-
gle,表示这是单字成词。分词的过程就是将一段字符输入模型,然后得到相应
的标记序列,再根据标记序列进行分词。举例来说:“达观数据是文本智能处
理专家”,经过模型后得到的理想标注序列是:“BMMESBEBEBEBE”,
最终还原的分词结果是“达观数据 / 是 / 文本 / 智能 / 处理 / 专家”。
在 NLP 领域中,解决序列标注问题的常见模型主要有 HMM 和 CRF。
1.2.1 HMM
HMM(Hidden Markov Model)隐马尔科夫模型应用非常广泛,基本的
思想就是根据观测值序列找到真正的隐藏状态值序列。在中文分词中,一段文
字的每个字符可以看作是一个观测值,而这个字符的词位置 label(BEMS)可
以看作是隐藏的状态。使用 HMM 的分词,通过对切分语料库进行统计,可以
得到模型中 5 大要要素:起始概率矩阵,转移概率矩阵,发射概率矩阵,观察
值集合,状态值集合。在概率矩阵中,起始概率矩阵表示序列第一个状态值的
概率,在中文分词中,理论上 M 和 E 的概率为 0。转移概率表示状态间的概率,
比如 B->M 的概率,E->S 的概率等。而发射概率是一个条件概率,表示当前
这个状态下,出现某个字的概率,比如 p( 人 |B) 表示在状态为 B 的情况下人字
的概率。
有了三个矩阵和两个集合后,HMM 问题最终转化成求解隐藏状态序列最
大值的问题,求解这个问题最长使用的是 Viterbi 算法,这是一种动态规划算法,
3 达观数据 NLP 特刊:从原理到实践 # 实战经验·深度分享 #