直播弹幕审核系统和文本分析技术

NorWheat 7年前
   <p><strong>编者按:</strong> 作为深受二次元人士欢迎的互动方式,弹幕已经从原来的动漫网站 Acfun 和 bilibili 向各类视频和直播网站蔓延,但是弹幕存在大量低俗、色情、垃圾广告、谩骂的内容,数量极为庞大,变形变换极为复杂,通过计算机算法来自动进行识别和过滤有非常重要的意义。 8 月 14 日,在七牛云主办的架构师实践日上,达观数据 CEO 陈运文博士带来了他的视角。以下是对他演讲内容的整理。</p>    <h2><strong>自然语言处理是文本挖掘的基础</strong></h2>    <p>自然语言处理简称 NLP ,是计算机科学领域与人工智能领域中的一个重要方向,它能实现人与计算机之间用自然语言进行有效通信,能够利用计算机对人类特有的书面形式和口头形式的语言进行各种类型处理和加工。</p>    <p>达观数据在运用自然语言处理技术时,包含的 3 个基础概念是:</p>    <p>1.信息熵( self-information ):在语言中,无论是汉语、英语还是标点符号都有信息含量,这个信息含量叫做「信息熵」,又称为自信息,用来描述一个随机变量的不确定性的数量(图 1 为信息熵运算公式)。一个随机变量的熵越大,它的不确定性越大,正确估计其值的可能性越小,越不确定的随机变量越需要更大的信息量用以确定其值。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/460a95551f2c60e9d1853bfdaf75e261.png"></p>    <p style="text-align: center;">图 1</p>    <p>2.语言模型(language mode):一个语言模型构建字符串的概率分布  P(w)  ,假设  P(w)  是字符串作为句子的概率。在基于统计模型的语音识别、机器翻译、汉语自动分词和句法分析中有着广泛的应用。</p>    <p>3.n 元语法模型:根据马尔科夫假设,n 元语法模型中文本中一个词和他前面  n-1 个词相关性最高,概率由图 2 的公式计算: </p>    <p><img src="https://simg.open-open.com/show/126e7137cdd487c29d5e2ca86ea0f449.png"></p>    <p style="text-align: center;">图 2</p>    <p>汉语中每句话都由一个个汉字构成,每个汉字之间存在一定的逻辑关系。即每一个字组成一句话,一句话由每一个字与前面所有的字形成的条件概率计算得到。比如:七牛架构师,往往认为牛根据七生成,架根据七牛生成,师根据七牛架生成,整个句子由 n 个字叠加组成。</p>    <h2><strong>弹幕中文分词的主要问题</strong></h2>    <p>中文分词是所有自然语言处理的基础,但在分词过程中存在 2 个常见问题:</p>    <p>1.歧义切分:在弹幕中,句子通常都没有标点,而且用语非常随意,很容易造成分词结果脱离原来语句所要表达的意思,尤其在机械切分中比较常见。</p>    <p>2.未登录词:弹幕中存在大量不在传统词典中的词汇,例如「抖 S」,「走召弓虽」等,但这些词汇均有明确含义,需要进行理解和识别。</p>    <p>基于 n 元语法模型的切分分词方法</p>    <p>原理:本质是字符串匹配的方法,将一串文本中的文字片段和已有的词典进行匹配,如果能够匹配,则此文字片段就作为一个分词结果。</p>    <p>常见方法:机械切分(正向最大匹配方法,逆向最大匹配法,双向最少切分法);路径选择法(n 最短路径方法,n 元语法模型法)。</p>    <ul>     <li>n 最短路径方法:将所有的切分结果组成有向无环图,每个切词结果作为一个节点,词之间的边赋予一个权重,最终找到权重和最小的一条路径作为分词结果;</li>    </ul>    <ul>     <li>n 元语法模型法:根据 n 元语法模型,路径构成时会考虑词的上下文关系,根据语料库的统计结果,找出构成句子最大模型概率。</li>    </ul>    <p>一般情况下,unigram  和  bigram  的  n  元语法模型运用较多。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/848599f54444dafc39ebc54b72ddd9f5.png"> <a href="/misc/goto?guid=4959714837747023243" rel="nofollow,noindex"> </a></p>    <p style="text-align: center;">图 3</p>    <p>以图 3 为例,演示基于 n 元语法模型的分词方法。比如「结合成分子」这句话,从 S 开始计算,把「结合」和「分子」分别切分成一个词。</p>    <h3><strong>序列标注问题的常见模型 HMM 和 CRF</strong></h3>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/d1432de6656c59102c294d4f568e750b.png"></p>    <p style="text-align: center;">图 4</p>    <p>对于一些复杂的句子,需要通过序列标注的方法来区分。以图 4 为例演示序列标注常见模型 HMM 和 CRF 。</p>    <p>HMM( Hidden Markov Model ) 即隐马尔科夫模型,基本思想是根据观测值序列找到真正的隐藏状态值序列。在中文分词中,一段文字的每个字符可以看作一个观测值,而这个字符的词位置( BEMS )可以看作隐藏的状态。</p>    <ul>     <li> B——Begin ,表示这是一个词的首字;</li>    </ul>    <ul>     <li> M——Middle,表示这是一个词中间的字;</li>    </ul>    <ul>     <li> E——End ,表示这是一个词的尾字;</li>    </ul>    <ul>     <li> S——Single ,表示这是单字成词。</li>    </ul>    <p>分词的过程是将一段字符输入模型,然后得到相应的标记序列,再根据标记序列进行分词。</p>    <h2><strong>词汇级其他相关工作</strong></h2>    <p>在完成中文分词的基础之上,还需要进行词性标注和命名实体识别等工作:</p>    <ul>     <li>词性标注是指对于句子中的每个词都指派一个合适的词性,例如确定句子中哪些是名词、动词、形容词或其他词性的过程,词性标注的难点是标注歧义问题,比如「 book 」,有时是名词有时是动词。</li>    </ul>    <ul>     <li>命名实体识别( Named Entity Recognition,简称 NER )又称作「 专名识别 」,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等,通常包括实体边界识别和确定实体类别,难点在于网络用语变化很多,例如「Papi酱」是中英文混杂的形式,NER 是人名。 </li>    </ul>    <h2><strong>文本审核方法</strong></h2>    <p>文本审核是指在预定义的审核体系下,根据文本的特征(内容或属性),判断给定文本是否属于特定的违规类型。不同于简单的「词典+规则」的方法,达观数据是根据机器学习自动分类的技术来完成文本审核的过程。</p>    <p>根据分类知识获取方法的不同,文本自动分类系统大致可分为基于知识工程和基于机器学习的分类系统,机器学习分类方法一般包括两个过程,即训练阶段和预测阶段。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/6827e5a39801fc2d26e83a6150ab5493.png"></p>    <p style="text-align: center;">图 5</p>    <p>以图 5 为例,演示异形文本变换。现在,弹幕的形式有无穷多的变化,比如:中英文变化结合、同音变换、形近变换、简繁转换、偏旁拆分等等,给文本审核带来很多困难。在这种复杂情况下,光靠违规辞典无法准确完成文本审核,必须借助机器学习的方法。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/9be46c96d56ecb69bbecc9a59b399984.png"></p>    <p style="text-align: center;">图 6</p>    <p>以图 6 为例演示自动化生成变形词词库。机器学习的基础是「特征抽取」,是把所有的种子词汇都通过各种各样的变形变化衍生出更多的衍生词汇,再把所有的衍生词汇输送计算机算盘,供计算机学习。</p>    <h2><strong>特征抽取</strong></h2>    <p>在文本分类问题中,词语作为主要的特征。但是对于一个分类器来说,并不是特征越多越好。特征越多不仅会导致计算复杂度增加,训练和预测时间加长,还会代入一些噪音,导致模型效果差。因此,特征选择是必须也是有效的。文本特征提取有很多方法,常见的有基于文档频率(Document  Frequency,DF)、信息增益(Information Gain,IG)、卡方统计、互信息等。</p>    <p>特征权重计算方法主要有 3 种:</p>    <p>1.布尔权重:出现为 1 ,否则为 0 ;绝对词频,即 TF,特征项在文本中出现的频度;倒排文档频度,即 IDF ,稀有特征项比常用特征项含有更多的信息。 </p>    <p>2.TF-IDF :TF*IDF ,特征与在文档中出现的频度成正比,与整个语料中出现的该特征项的文档数成反比;</p>    <ul>     <li>TFC :对文本长度进行归一化处理后的 TF-IDF ; </li>     <li>ITC  :在 TFC 基础上,对 tf 的对数值取代 TF ;  </li>     <li>熵权重:建立在信息论基础上。 </li>    </ul>    <p>3.TF-IWF :在 TF-IDF 基础上,用特征项频率倒数的对数值 IWF 代替 IDF ,并用 IWF 的平方平衡权重值对于特征项频度的倚重。</p>    <h3><strong>常用的文本分类模型</strong></h3>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/8851865dd2d33eaf8923968405f358ff.png"></p>    <p style="text-align: center;">图 7</p>    <p>如图 7 ,目前一些非常基础性的网站或者程序员写出的程序都接近最简单的决策树,但是通过 ID3、C4.5、C5.0 和 CART 等方法,构造的决策树更加具有统计学理论基础,也比简单规则的效果更好。朴素贝叶斯也非常简单,逻辑斯特回归对处理海量数据有很好的性能表现。如图 8 右下,红色菱形代表违规文本,蓝色圆形代表正常文本,在低维空间难以形成很好的分类面,但是通过核函数映射到高维空间后,支持向量形成的超平面能很好的完成分类功能。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/bb479c765af564c7c9b537d568e613b1.png"></p>    <p style="text-align: center;">图 8</p>    <p>如图 9 ,一些常见的机器学习分类模型(Classification Model)还包括: SVM 、神经网络、随机森林、AdaBoost 、遗传算法等。这些方法在实际运用中,单独处理文本,其准确率和召回率都各有千秋,因此在进行文本审核时,我们通常组合运用几种算法来获得更优的效果。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/16a3e80b12235ba01502bcf6bce1300b.png"></p>    <p style="text-align: center;">图 9</p>    <h2><strong>深度学习对 NLP 领域的影响</strong></h2>    <p>深度学习是时下一个热点,达观数据在这个方面做了许多尝试,将一个候选词汇通过 Word2Vec 映射为向量,方便找到和当前词汇语义相关联的词汇集合,扩展词汇特征,对分析弹幕或评论有很大帮助。这是因为弹幕通常是短文本,携带的信息量低,通过 Word2Vec 进行语义扩展后,能增加语义识别和过滤的效果。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/a4acb9969355ac65c407cd8d2814f91a.png"></p>    <p style="text-align: center;">图 10 </p>    <p>以图 10 为例演示 RNN 神经网络。在深度学习模型中,我们认为处理文本类数据,使用 RNN 网络(循环神经网络)效果较好。在隐藏层内部的节点计算时,增加网络前一时刻的输出对当前输出的影响,让神经网络有「记忆」效应,计算结果的精度有明显提升。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/a75b792f449859d3a02482c2c5d8657e.png"></p>    <p style="text-align: center;">图 11</p>    <p>如图 11 所示,LSTM(长短时记忆)是我们在 RNN 基础上进一步改进深度神经网络的结构,把上下文依赖关系,增加到网络连接中,因为语义关联会明显受上下文影响,能够存储较远距离上下文对当前时间节点的影响。</p>    <p>调用达观 API 和过滤效果统计分析</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/3870306d3bdb0905ee6035fdbc8f830b.png"></p>    <p style="text-align: center;">图 12</p>    <p>如图 12,达观数据提供使用非常便捷的文本审核接口(API),客户网站使用时,只需要将待审核的文本和相关的信息(比如发弹幕人的昵称、 IP 、UID 、IMEI 等信息)作为 POST 内容,进行 HTTP 调用后,达观的系统可以在几十毫秒内能够准确识别文本是否包含违规内容、违规类型(垃圾广告、色情、粗口等),通知使用方是否需要予以拦截。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/6c28dddef3aceb36872720db0cb2b1f8.png"></p>    <p style="text-align: center;">图 13</p>    <p>如图 13 ,达观后台系统还会提供完善的数据统计系统,让使用方了解系统运转的情况,了解识别的总次数和成功拦截的次数。除了文本审核,达观的语义分析系统还有一些有意思的功能,例如自动判断文本的情感是正面(好评)或负面(差评),帮助运营方更好的了解语义含义。</p>    <p>中文自然语言处理是个非常有意义的研究领域,让计算机自动来理解我们的每一句话背后所想表达的意思,不仅对于视频媒体和直播网站,也对全社会有广阔的应用空间,希望和朋友们一起努力。</p>    <h3> </h3>    <p>来自:http://blog.qiniu.com/archives/6889</p>    <p> </p>