toppledown是什么意思pledown在线翻译读音-smart意思


2023年4月5日发(作者:奥斯卡2015)

⾃然语⾔僵卧孤村不自哀全诗解析 处理-2-分词(WordSegmentation)

⾃然语⾔处理-2-分词(WordSegmentation)

⼀、引⼊问题

 对于输⼊的⼀句话:“我们经常有意见分歧”

 我们⾸先想在电脑中如何表达:⽤单字表达、⽤词汇表达、还是直接将⼀整个句⼦看作是⼀个整体。

 可以很容易的想到,单字的意思不完整,句⼦同样意思下的表达⽅式多种多样近乎⽆限;词汇有固定的⼀种或⼏种语义,⾮常适合⽤来表

达句⼦内在的意思。

⼆、分词的⼏种⽅法

 现在我们知道了使⽤词汇来进⾏分词,假设现在有词典如下(⼀些词典是开源的):

  [“我们”,“经常宿新市徐公店教案 ”,“有”,“有意⻅”,“意⻅”,“分歧”]

 那么我们就可以开始分词了

(⼀)前向最⼤匹配(forward-maxmatching)

  ⾸先我们设定最⼤长度的⼤⼩为4,春晓古诗朗诵视频 然后我们⽤词典对上⾯那句话进⾏分词。(【】括号中为关注的字符串)

  第⼀轮:

  【我们经常】有意见分歧(取前4个字(最⼤长度),发现“我们经常”不在词典中)

  【我们经】常有意见分歧(取前3个字,发现“我们经”不在词典中)

  【我们】经常有意见分歧(取前2个字,发现“我们”在词典中,结束)

  此时分词为:我们|经常有意见分歧

  第⼆轮:

  【经常有意】见分歧(取前4个字(最⼤长度),发现“经常有意”不在词典中)

  【经常有】意见分歧(取前3个字,发现“经常有”不在词典中)

  【经常】有意见分歧(取前2个字,发现“经常”在词典中,结束)

  此时分词为:我们|经常|有意见分歧

  第三轮:

  【有意见分】歧(取前4个字(最⼤长度),发现“有意见分”不在词典中)

  【有意见】分歧(取前3个字,发现“有意见”在词典中,结束)

  此时分词为:我们|经常|有意见|分歧

  第四论:

  【分歧】(不满⾜4的最⼤长度就选择剩下的全部,发现“分歧”在词典中,结束)

  此时分词为:我们|经常|有意见|分歧

(⼆)后向最⼤匹配(backward-maxmatching)

  假定此时最⼤长度仍为4,后向最⼤匹配类似前向最⼤匹配,只是⼀个向句尾(前向),⼀个向句⾸(后向)。下⾯⼤家可以根据前向

最⼤匹配来理解。

  第⼀轮:

  我们经常有【意见分歧】

  我们经常有意【见分歧】

  我们经常有意见【分歧】

  此时分词为:我们经常有意见|分歧

  第⼆轮:

  我们经【常有意见】

  我们经常【有意见】

  此时分词为:我们经常|有意见|分歧

  第三轮:

  【我们经常】

  我【们经常】

  我们【经常】

  李白的十首古诗 此时分词为:我们|经常|有意见|分歧

  第四论:

  【我们】

  此时分词为:我们|经常|有意见|分歧

(三)考虑语义(IncorporateSemantic)

  考虑语义顾名思义,就是判断语义,具体为⽣成句⼦可能的所有分割,在这些分割中返回最好的。

  判断好坏的⽅法可以使⽤语⾔模型(LanguageModel)。

  语⾔模型是什么:

  对于⼀个分好词的句⼦:“我们|经常|有意见|分歧”,假设我们已知词汇在词库中出现的概率(这种概率可以通过统计⽹页、书

籍提前计算出)

UnigramLanguageModel为:P(S)=P(“我们”)*P(“经常”)*P(“有意见”)*P(“分歧”)

BigramLanguageModel为:P(S)=P(“我们”)*P(“经常”|“我们”)*P(“有意见”|“经常”)*P(“分歧”|“有意

见”)

TrigramLanguageModel为:P(S)=P(“我们”)*P(“经常”|“我们”)*P(“有意见”|“我们”,“经常”)*P(“分歧”|

“经常”,“有意见”)

  很容易看出其实就是n-gramLanguageModel,n为⼏,则概率考虑前n个词。

 注意,由于每个词在所有的⽂本中出现的次数可能⾮常少,所以概率值可能⾮常⾮常⾮常⼩,导致负溢出,所以会将概率套⼀层

log()。因为log(0.00000001)=-8,可见值是下降的很缓慢的,⽽且log是单调递增的函数,与原概率的⼤⼩⽐较结果相同。

  现在我们知道了考虑语义的⽤法,但是不妨思考⼀下,假设⼀个句⼦的长度有最⼤值n个词汇,那么在Unigram的情况下语⾔模型对⼀

种分词情况下计算的时间是O(n),产⽣所有的分割⼜需要O((n-1)!)。那么总体的时间复杂度为O(n*(n-1)!)=O(n!),⽽且这个复杂度只是

对于⼀个句⼦,如果是⼀系列⼤量句⼦的话时间就难以承受,所以我们需要优化⼀下这种⽅法才能实际使⽤。

(四)考虑语义的优化⽅法(维特⽐算法)

0

0

0

1010

  从上⾯我们知道了“考虑语义”分为两步,⼀是产⽣所有分割,⼆是判断产⽣的分割的分词好不好。两个⽅⾯都不容易进⾏优化,那不

妨把两个⽅⾯放在⼀起思考。

假设现在有⼀个句⼦P的长度为n,⽬标是求得这个句⼦最好的分割。那么⼦问题就是P这个句⼦有最好的分割(即减去P的最后⼀个俯仰生姿

字)。

  这种带有最优⼦结构的问题我们很快就能想到使⽤动态规划进⾏求解。公式为:

 解释:

 P是指句⼦S前n个字的最好分割的语⾔模型概率P(这⾥的P是log后的),D[x]枫叶千枝复万枝 [n]是指从x到n的独⽴的词的概率,D[x][n]为-1的

话就代表x到n的独⽴的词汇不在词库中。概率为什么变为加法是因为log(P*P)=logP+logP。(这个算法有点像最⼤

上升⼦序列算法,根据习惯⼀般会求最⼩值,此时P就要进⾏-log)。

 怎么找到最好的分词:

 更新最好分词的时候单独使⽤⼀个数组进⾏记录。

三、分词总结

⽅法具体

基于匹配规则⽅法前向最⼤匹配、后向最⼤匹配等

基于概率统计的⽅法语⾔模型LM、隐马尔可夫模型HMM、条件随机场CRF等

  分词可以认为是已经解决的问题,因为已经有了成熟的分词⼯具,如:jieba分词、SnowNLP、LTP、HanNLP。

n七夕快乐图片大全 n-1n

P=nmax{P+x:1→n−1

xD[x][n]}

n

1012101102

更多推荐

segmentation是什么意思mentation在线翻译读音