您的位置:网站首页 > 夫妻笑话 > 正文

笑话段子 数据处理之搜索如何命中?

类别:夫妻笑话 日期:2020-11-2 23:06:11 人气: 来源:

  用户搜索的过程:用户输入关键词,系统根据用户输入的内容筛选出系统认为用户感兴趣的信息,然后按照系统所设定的规则进行排序。整个过程可拆解为三步:分词、筛选、排序。

  在了解分词前先看下搜索的存储原理:在系统词库和索引库之间建立关联,通过用户输入的关键词去匹配词库,然后拉取索引库内容展示给用户。

  以在美食网站搜索“最大的火锅店”为例,索引库中内容为系统内所有店铺,每个店铺包含的字段有店名、、月销量、评论量、评分等等;词库中内容为系统内的词条,只要用户输入的内容能够匹配到词条,就可以快速找到词条对应的索引内容,无法匹配到词条时就没有返回结果。每个系统都有自己的词库,搜索的很多优化都是集中在词库的优化上。

  分词是对用户输入的信息进行解读,是自然语言处理的重要步骤。同机器学习原理一样,分词将非结构化的数据为结构化数据,结构化的数据就可以为数学问题了,解决数学问题正是计算机之所长。

  搜索系统的词库无论如何优化、完善都是有限的,但用户的输入是没有的。那么如何把用户无的输入对应到有限的词库并返回结果呢?

  这就需要引入一个新的概念——分词。简单说就是:系统在对用户输入的内容无法精确匹配时,会将内容进行切分,使切分后的词能够匹配到系统的词库。仍以上图为例,如果用户输入“最大的火锅店”,系统中并没有这个词,精确匹配的情况下没有任何结果,此时会将输入内容进行切分,于是

  拆解后每个词就匹配到了相应的内容,排序后就会返回结果。并不是所有的词都会返回有价值的结果,比如案例中的“的”,几乎所有的信息里面都会含有这个字,因此在系统分词时会被直接忽略掉。

  英文有天然的空格作为分隔符,但中文没有,如何将一段中文进行拆分是一个难点,切分时断点不同,造成的结果也不同(即歧义识别),如“我们三人一组”就可以有两种分词方式:“我们三人/一组”和“我们/三人一组”。还有一个难点是新词识别,即识别未在词典中收录的词。

  英文单词存在着丰富的变形和变换,如复数形式,过去式、正在进行式等,为了应对这些复杂的变换,在处理英文时会进行词形还原和词干提取。

  分词粒度不同,返回的结果也不同,如“科学技术研究院”就有多种分法:“科学技术研究院”、“/科学技术/研究院”、“/科学/技术/研究院”。粒度越大,表达的意思就越准确,但是返回的结果也就越少,因此在分词是要根据不同的场景和要求选择不同的分词粒度。

  基于词典匹配是最早的分词方法,比较典型的有:正向最大匹配法、逆向最大匹配法、双向最大匹配法。

  step2:若这m个词扫描有结果,则匹配成功,将m个词切分出来,语句中剩下的词继续进行切分;

  step3:若这m个词扫描无结果,则取前m-1个字继续扫描,每次减一个字,直到词典命中或剩下1个字;

  由于正向最大匹配法和逆向最大匹配法都有其局限性,因此产生了双向最大匹配法。即按照正向和逆向分别进行切分,然后进行对比,选取其中一种分词结果输出。

  对比原则:①如果正反向分词结果词数不同,则取分词数量少的那个;② 如果词数相同且结果也相同,返回任意一个,如果词数相同但结果不同,取单字数量较少的那个(单字越少越准确)。

  提到的几种切分方法是从不同的角度来处理歧义问题,每种方法只能解决有限类别的歧义问题。随着词典的增大,词与词之间的交叉更加严重,歧义带来的负面影响也更加严重。同时,提到的切分方法对于新词的切分是完全为力的。

  基于统计分词有两类,第一类是统计取词法(或无词典分词法),把每个词看做是由字组成的,如果相连的字在不同文本中出现的次数越多,就证明这段相连的字很有可能就是一个词。

  举例:比如词a出现的概率为P(a),词b出现的概率为P(b),a+b这个词组出现的概率为P(a+b),如果P(a+b)P(a)*P(b),则能证明a+b不是一个随机出现的组合,要么是一个新词,要么是个词组或者短语。

  但这种方法也有一定的局限性,会经常抽出一些共现频度高、姐妹互换一家亲但并不是词的常用字组,例如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,成本大。在实际应用中通常结合词典分词的方法使用,既发挥了词典分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。

  另一类是基于统计机器学习的方法,在给定大量已经分词的文本的前提下,利用统计机器学习、模型学习词语切分的规律(称为训练),从而实现对未知文本的切分。这种方法的缺点就是需要有大量预先分好词的语料作支撑,而且训练的成本也很高。比较经典的是N元文法模型(N-gram)。

  基于N元模型的切词策略是:一段文本存在多种可能的切分结果(切分径),将训练好的N-gram模型进计算得到最优切分径并返回结果。

  在N-gram模型的算法中,每个径上的边都是一个N-gram的概率,于是得到如下概率径有向图:

  可能的切分径有:他说/的确/实在/理 、他说的/确实/在理、 他说的/确/实在/理、 他/说/的确/实在/理、 他/说的/确/实在/理……

  假设随机变量S为一个汉字序列,W是S上所有可能的切分径(如上图所有从头至尾的不同径)。对于分词,实际上就是求解使条件概率P(W∣S)最大的切分径W*,P(W∣S)即为每条径的衡量标准。

  基于序列标注分词是把分词过程视为字在字串中的标注问题(例如将字标注为“首字中间字尾字”或者其他标注方式),当这些标注完成的时候切词也就自然完成了。这种策略能够平衡地看待字典词和新词(未收录到词典的词)的识别问题,大大简化了使用门槛,并得到一个相当不错的切词结果。如条件随机场(CRF)、隐马尔科夫模型(HMM)、最大熵算法、神经网络分词模型等。

  将用户输入的信息进行切分后,对引库中的内容进行匹配筛选。判定用户想要的结果是否被筛选出来,一般会从精确率(Precision)、召回率(Recall)和F1(F1-Measure)值三个维度进行衡量,这也是搜索优化中是关键性指标,涉及到人工打分和更高级的优化。

  举例:假设此时有7个桔子和3个苹果放在一起,我想筛选出所有的桔子,系统最终筛选出了6个,其中有4个桔子。那么精确率P=4/6,召回率R=4/7。

  除此之外,还有一个比较容易混淆的概念:准确率(Accuracy),即判断正确的数目与总数目的比值,其中判断正确的数目包含筛选出的符合要求的和未筛选出的不符合要求的。

  准确率一般不用于搜索召回的衡量,原因是若上例中苹果数量为100万个,桔子7个时,那么不管怎么筛选,准确率都是99.99%+,显然这是不符合要求的。

  排序影响着搜索的结果质量,越往前的结果越容易获得用户的点击。好的搜索不仅仅是把应该搜索的内容尽可能的搜索出来,同时还要考虑把最容易吸引用户的内容展示在前面,因此这里就涉及到两个因素:文本数据和业务数据。

  文本数据即文本的相关性分数乘以权重。关于如何计算文本的相关性,市面上已经有成熟的开源解决方案,如Lucene算法。然后根据文本类型给出相应的权重,比如系统中有标题、描述和正文三种文本,根据重要性分别赋予不同权重:标题权重为10,导语权重为5,正文权重为1。

  业务数据即数据的分数乘以权重。关于数据的分数是数据具体的值。然后根据业务类型给出相应的权重,比如系统中有评论量、分享数、阅读量三种数据,根据重要性分别赋予不同权重:评论数权重为10,分享数权重为20,阅读量权重为1。

  由此可以看出,对文本数据和业务数据赋予的权重直接影响最终的排序结果,如何赋值、赋予何值需要基于对业务的理解和认知,这也是一个搜索系统设计最核心的部分。

  

关键词:笑话段子
0
0
0
0
0
0
0
0
上一篇:爆笑校园24
下一篇:没有资料

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

声明:网站数据来源于网络转载,不代表站长立场,如果侵犯了你的权益,请联系站长删除。

CopyRight 2010-2016 风趣幽默网- All Rights Reserved