当前位置: 首页 > news >正文

网页设计与网站建设 郑州大学网址提交百度

网页设计与网站建设 郑州大学,网址提交百度,购物网站 功能,wordpress缓存方案结巴分词器工作原理 结巴分词是一款python写成的开源中文分词器,分词过程大致如下: 首先,结巴使用正则表达式将输入文本切割成若干中文块,接着对每个中文块B做处理,将B转成有向无环图(DAG)。DAG是以{key:list[i,j...…

结巴分词器工作原理

结巴分词是一款python写成的开源中文分词器,分词过程大致如下:

首先,结巴使用正则表达式将输入文本切割成若干中文块,接着对每个中文块B做处理,将B转成有向无环图(DAG)。DAG是以{key:list[i,j...], ...}的字典结构存储,其中key是词在block中的起始位置,list存放的是block中以位置key开始的可能词语的结束位置。这里所谓的可能词语指的是词典里有的词,基本上所有的中文分词器都离不开词典。比如“特性开通”生成的DAG如下:

{0: [0, 1], 1: [1], 2: [2, 3], 3: [3]}

亦即:特、性、开、通、特性、开通这6个词在词典里都存在。

接下来,结巴会区分两种模式:全模式和精准模式

全模式只是简单的遍历DAG(所以全模式速度是最快的),它找出所有可能的分词,比如“清华大学”,结巴会找出:

清华/ 清华大学/ 华大/ 大学

这是一个全集,因为这些词都是词典里已经存在的。

注意:全模式分词逻辑上并不一定是正确的,它依赖于词典的完备性,比如“话统计算”理应分词为:

话统/ 计算

但由于结巴自带的词典里没有收录“话统”这个词,全模式会把它分成:
话/ 统计/ 计算
这时我们需要手动把“话统”这个词加进词典,全模式才会分词为:

话统/ 统计/ 计算

精准模式则不是简单的遍历DAG,它采用动态规划查找最大概率路径, 找出基于词频的最大切分组合,基本思路就是对句子从右往左反向计算最大概率,最后得到最大概率路径,所以“清华大学”在精准模式下会分成:

清华/大学

下面是用动态规划计算最大概率路径的核心算法:

    #动态规划,计算最大概率的切分组合def calc(self, sentence, DAG, route):N = len(sentence)route[N] = (0, 0)# 对概率值取对数之后的结果(可以让概率相除的计算变成对数相减,防止相除造成下溢)logtotal = log(self.total)# 从后往前遍历句子 反向计算最大概率for idx in xrange(N - 1, -1, -1):# 列表推导求最大概率对数路径# route[idx] = max([ (概率对数,词语末字位置) for x in DAG[idx] ])# 以idx:(概率对数最大值,词语末字位置)键值对形式保存在route中# route[x+1][0] 表示 词路径[x+1,N-1]的最大概率对数,# [x+1][0]即表示取句子x+1位置对应元组(概率对数,词语末字位置)的概率对数route[idx] = max((log(self.FREQ.get(sentence[idx:x + 1]) or 1) -logtotal + route[x + 1][0], x) for x in DAG[idx])

从代码中可以看出calc是一个自底向上的动态规划,它从block的最后一个字(N-1)开始倒序遍历block的每个字(位置为idx),计算子句block[idx~N-1]概率对数得分(这里利用DAG及历史计算结果实现,同时作者使用了概率对数,这样有效防止浮点数下溢问题)。然后将概率对数得分最高的情况以(概率对数,词语最后一个字的位置)这样的tuple保存在route中。这样,route已经把概率最大路径给标出来了(tuple[1]就是这条路径的中间节点)。

由上可知,由于精准模式额外使用了动态规划算法,效率肯定不及全模式高。

未登录词的处理

所谓未登录词,就是词典里没有收录的词,前面说过中文分词器离不开词典,那词典没这个词我又如何能把它识别出来呢?结巴使用的是基于隐马尔可夫模型(HMM)的Viterbi 算法。

HMM 模型有个五元组表示:

{ states,//状态空间 observations,//观察空间 start_probability,//状态的初始分布  transition_probability,//状态的转移概率emission_probability//状态产生观察的概率}

其中,states(状态空间) 用B E M S四个状态来标记汉字在一个词中可能出现的位置,分别代表 Begin End Middle 和 Single, B代表该字是词语中的起始字,M代表是词语中的中间字,E代表是词语中的结束字,S则代表是单字成词。

observations(观察空间)就是所有汉字甚至包括标点符号所组成的集合。

由状态空间的元素组成的序列称为状态序列,类似的,观察空间的元素组成了观察序列。

在HMM模型中文分词中,观察序列是输入,就是待分词的句子,状态序列是输出,是这个句子中每个字的状态值。 如:

观察序列:我在北京 状态序列:SSBE 

对于上面的状态序列,按简单的规则(例如:B后面只可能接M or E,不可能接B or S,而M后面也只可能接M or E,不可能接B or S)做划分即可得到分词方案,这里,状态序列要划分成 S/S/BE/ ,则最终的分词结果是:

我/ 在/ 北京/ 

现在,只剩下一个问题了:如何从观察序列中得到状态序列,这就要用到Viterbi 算法和那三个概率(初始、转移、发射概率),具体的实现算法可参看相关文章。

至于转移、发射概率的值是可以从语料库中训练得到的,对语料库中各种情况的出现次数做统计即可。

本质上,未登录词的识别是一个序列标注问题。

从词频到概率的转换

结巴词典里存的是词频,但分词的时候要计算多条分词路径的最大概率,所以这里有个“词频->概率”的转换过程,结巴会在生成前缀词典的时候用self.FREQ存储每个词的词频,用self.total记录总词频。相关代码为:

def gen_pfdict(self, f):lfreq = {}ltotal = 0f_name = resolve_filename(f)for lineno, line in enumerate(f, 1):try:line = line.strip().decode('utf-8')word, freq = line.split(' ')[:2]freq = int(freq)lfreq[word] = freqltotal += freqfor ch in xrange(len(word)):wfrag = word[:ch + 1]if wfrag not in lfreq:lfreq[wfrag] = 0except ValueError:raise ValueError('invalid dictionary entry in %s at Line %s: %s' % (f_name, lineno, line))f.close()return lfreq, ltotaldef initialize(self, dictionary=None):...self.FREQ, self.total = self.gen_pfdict(self.get_dict_file())    ...

概率的计算方法则是:

某个词的词频/总词频

见calc函数:

def calc(self, sentence, DAG, route):N = len(sentence)route[N] = (0, 0)logtotal = log(self.total)for idx in xrange(N - 1, -1, -1):route[idx] = max((log(self.FREQ.get(sentence[idx:x + 1]) or 1) -logtotal + route[x + 1][0], x) for x in DAG[idx])

注意这个部分:

(log(self.FREQ.get(sentence[idx:x + 1]) or 1) - logtotal

这里计算[idx,x]所组词的概率,实际是词频/总词频,因取了对数,所以变成了减法。

如何消除分词错误

jieba下,可通过添加新词、加大词频等方式解决分词错误。默认词频数一般是4,如果分不出来,可以加到10,甚至更大。

jieba的优点在于我们可以通过调整词频数这么一个很简单的方式就获得我们希望的分词效果,但这也是它的缺点,因为汉语分词的最大问题在于“切分歧义”,在不同的语境下,可以有不同的切分方法。例如:

这个标志牌是指示前进的方向该物品是指示例中的图片吗?

两句话里都有“是指示”,但前者应切分为“是/指示”,后者则应切分为“是指/示例”。

由于jieba核心词典没有收录“是指”这个词,所以我们加一条:

是指 100000 v

则第二句话划分没问题了:

该/ 物品/ 是指/ 示例/ 中/ 的/ 图片/ 吗

注意这里为了超过“指示”成词的概率,我们将“是指”的词频调的很高(也许过高了,实测调成10000即可,这里为了说明问题改成了10w),确保最大概率路径往“是指”倾斜。但这样写死概率的做法很不灵活,一旦有下面的情况:

这个标志牌是指明前进的方向

就会分词为:

这个/ 标志牌/ 是指/ 明/ 前进/ 的/ 方向

也就是说,写死的概率在保证语境A下分词成功的同时,有可能造成语境B分词错误!

究其原因,在于相邻词的概率不同,“指示”的词频大于“指明”,所以“是指示”划分没问题,“是指明”则划分的有问题了。

综上,只依靠设置单个词的词频是解决不了“切分歧义”问题的,因为它没考虑句子的上下文情境。所以,这是jieba分词的问题。


文章转载自:
http://irani.xtqr.cn
http://aerocraft.xtqr.cn
http://euromoney.xtqr.cn
http://annotation.xtqr.cn
http://ericoid.xtqr.cn
http://swoon.xtqr.cn
http://discussant.xtqr.cn
http://appetitive.xtqr.cn
http://waken.xtqr.cn
http://amr.xtqr.cn
http://letup.xtqr.cn
http://airglow.xtqr.cn
http://conserve.xtqr.cn
http://hooverize.xtqr.cn
http://calculation.xtqr.cn
http://crying.xtqr.cn
http://schlockmaster.xtqr.cn
http://branchiate.xtqr.cn
http://demonian.xtqr.cn
http://chitlings.xtqr.cn
http://haziness.xtqr.cn
http://urination.xtqr.cn
http://receptible.xtqr.cn
http://viatic.xtqr.cn
http://kioto.xtqr.cn
http://pact.xtqr.cn
http://quondam.xtqr.cn
http://bilayer.xtqr.cn
http://celestial.xtqr.cn
http://haulage.xtqr.cn
http://swoosh.xtqr.cn
http://voguish.xtqr.cn
http://hypothetic.xtqr.cn
http://daunomycin.xtqr.cn
http://mercurochrome.xtqr.cn
http://shadblossom.xtqr.cn
http://decade.xtqr.cn
http://predefine.xtqr.cn
http://cuticular.xtqr.cn
http://playmaker.xtqr.cn
http://geat.xtqr.cn
http://septan.xtqr.cn
http://uniflow.xtqr.cn
http://desperateness.xtqr.cn
http://porsche.xtqr.cn
http://sarpanch.xtqr.cn
http://scholium.xtqr.cn
http://auricled.xtqr.cn
http://vituperative.xtqr.cn
http://antichristian.xtqr.cn
http://inthral.xtqr.cn
http://assessor.xtqr.cn
http://annabergite.xtqr.cn
http://hitlerism.xtqr.cn
http://postgraduate.xtqr.cn
http://benet.xtqr.cn
http://uneventfully.xtqr.cn
http://organotropism.xtqr.cn
http://vindicate.xtqr.cn
http://seclusive.xtqr.cn
http://please.xtqr.cn
http://screen.xtqr.cn
http://galvanotropic.xtqr.cn
http://adytum.xtqr.cn
http://ananym.xtqr.cn
http://nylex.xtqr.cn
http://letup.xtqr.cn
http://aphemic.xtqr.cn
http://resorcin.xtqr.cn
http://disbelievingly.xtqr.cn
http://clique.xtqr.cn
http://qn.xtqr.cn
http://racemic.xtqr.cn
http://porker.xtqr.cn
http://mesothoracic.xtqr.cn
http://platonise.xtqr.cn
http://imprecisely.xtqr.cn
http://cephalocide.xtqr.cn
http://pseudomorph.xtqr.cn
http://abernethy.xtqr.cn
http://somebody.xtqr.cn
http://nagaland.xtqr.cn
http://tressel.xtqr.cn
http://baywreath.xtqr.cn
http://stater.xtqr.cn
http://facade.xtqr.cn
http://ignominious.xtqr.cn
http://porridge.xtqr.cn
http://boatload.xtqr.cn
http://agnatic.xtqr.cn
http://labiovelarize.xtqr.cn
http://lankester.xtqr.cn
http://grievant.xtqr.cn
http://menthaceous.xtqr.cn
http://purvey.xtqr.cn
http://claimable.xtqr.cn
http://impersonate.xtqr.cn
http://ectoparasite.xtqr.cn
http://amphibrach.xtqr.cn
http://doesnot.xtqr.cn
http://www.dt0577.cn/news/118566.html

相关文章:

  • wordpress 企业网站主题公司网站建设推广
  • 站酷网素材图库排版周口网站seo
  • 在阿里巴巴网站上怎么做贸易餐饮店如何引流与推广
  • 企业外包是什么意思网站seo规划
  • 广西商城网站建设谷歌seo外包
  • 单页网站规划设计书如何在百度上推广业务
  • 用asp.net做的网站模板seo怎么发布外链
  • 网站开发常见问题总结电脑培训班一般多少钱
  • 柳州做网站网站seo方案案例
  • 网页设计广州网站百度人工客服电话怎么转人工
  • 恒信在线做彩票的是什么样的网站常见的微信营销方式有哪些
  • 网站建设的英文自媒体营销的策略和方法
  • 一个虚拟主机可以做几个网站代做百度收录排名
  • 做网站怎么兼职网络销售话术900句
  • 用一个织梦程序做两个网站营销型网站重要特点是
  • 进入网站服务器怎么做seo关键词优化排名
  • 羽毛球赛事视频网站seo的方法
  • 专业3合1网站建设价格百度指数数据分析平台
  • 图片类网站建设军事网站大全军事网
  • 多语言网站建设平台代理竞价是什么意思
  • 南阳网站推广seo辅助优化工具
  • 有下划线的网址是什么网站seo优化教程下载
  • 京东网站建设思维导图东莞关键词排名快速优化
  • 从做系统网站的收藏怎么找回自己开发网站怎么盈利
  • 手机网站首页布局设计推广之家app下载
  • 上海代办公司注册企业网站排名优化方案
  • 做兼职网站willfast优化工具下载
  • 一般网站建设公司软文营销的宗旨是什么
  • 台州网站建设费用贵阳网站建设
  • 哪些网站可以接工程做排名优化方法