医疗知识图谱项目笔记(四)

for _ in range(9, 15)

    _你可以当它是一个变量,但一般习惯不用这个变量。这个循环的作用是循环6次(9,10,11,12,13,14)

语言模型:是计算一个字符串是句子的概率的模型。

1.基于专家系统的语言模型

    缺点:没有一种固定的规则可以归纳所有语言。如“真笑skr人”“雨女无瓜”就不能期待用专家系统来解决。

2.统计语言模型

    P(s) = P(w1,w2,......,wn) = P(w1)P(w2|w1)P(w3|w1,w2).........P(wn|w1,w2,.......,wn-1)

    求解方法:用词语在语料中的频率来作为概率的估算值。

    P(wi)= count(wi)/N      P(wi|wi-1) = P(wi, wi-1)/P(wi-1)= count(wi|wi-1)/count(wi-1)

缺点:

    P(张三很帅) = P(张三)*P(很|张三)*P(帅|张三,很)

    P(张很帅很帅) = P(张很帅)*P(很|张很帅)*P(帅|张很帅,很)

    若语料中只出现了“张三很帅”而没有出现“张很帅很帅”,那么   P(张很帅)*P(很|张很帅)*P(帅|张很帅,很)=0,但是,这只是语料库没有无限大,这句话是有可能出现的,概率不应该为零。

发现问题:

    句子越长,语料中出现这句话的概率就越低,按照公式计算就为0(这与现实相违背),所以我们应该找到一种方式,给与它合理的一个概率。

解决方法:

    平滑处理,就是给那些从来没有在语料中出现过的词或词组一个比较小的概率。

    如Laplace smoothing(拉普拉斯平滑):每个词在原来出现次数的基础上加1

    会导致有的概率变大(从零变到非零),有的概率变小(概率被稀释)

    如:

        A:0    P(A) = 0/1000 = 0      ----->   P(A) = 1/ 1003 = 0.001
        B: 990  P(B) = 990/1000 = 0.99 ----->    P(B)  = 991/1003 = 0.988
        C:10    P(C) = 10/1000 = 0.01  ----->   P(C)   = 11/1003 = 0.011


拉普拉斯平滑后仍存在的问题:
    解决了有些词频过低的问题,但是没有解决有些句子出现频率低的问题。
    
    P(张三很帅) = P(张三)*P(很|张三)*P(帅|张三,很)
    P(张三很桌子) = P(张三) * P(很|张三) * P(桌子|张三,很)

    若语句中只有“张三很美”而没有以上两句话,那么“张三很帅”和“张三很桌子”的概率就是相等的(这不合理,明显“很帅”比“很桌子”出现的频率高)

    问题:
        1.参数空间过大
            我们的最终目的就是训练得到模型,本质上就是的到模型参数。P(wi)    P(wi|w1,w2,.....wi-1) 
                设有句子中有V个词,则:
                    P(w)        ---->V个参数
                    P(wi|wi-1)  ---->V^2个参数
                    P(wi|wi-1,wi-2)----->V^3个参数
                若设句子长度为L,则参数空间为:V+V^2+.....+V^L      (L为句子长度) 
                举个例子:1000个词,最大句子长度20,1000^20这个数太大太大了,不能忍受
        2.数据稀疏严重
            很多参数值为0(其实和参数空间过大是一个问题


解决这些问题:马尔科夫假设
    下一个词的出现仅依赖于前面一个词或n个词
    unigram(1-gram):不依赖   (V)
    bigram(2-gram):依赖之前一个词  (V+V^2)
    trigram(3-gram):依赖前面两个词   (V+V^2+V^3)
    k-gram    :依赖前面k-1个词   (V+V^2+V^3+....+V^k)

--------------------------------------------------------------------------------------------------------------------------------------
如何对比模型的好坏?
    语言模型评价指标:困惑度(Perlexity)
    (语言模型本质上是一个多分类问题,每一个词预测下一个词都有很多种结果)

    
        P(S) = P(w1,w2,......,wn) = P(w1)P(w2|w1).....P(wn|w1,w2,...,wn-1)
困惑度: PP(S) =(P(w1,w2,......,wn))^(-1/n)    
    困惑度越小越好,P(S)越大,对S就越“不困惑”,困惑度就越小
        医疗知识图谱项目笔记(四)

医疗知识图谱项目笔记(四)

医疗知识图谱项目笔记(四)

医疗知识图谱项目笔记(四)

 

医疗知识图谱项目笔记(四)

医疗知识图谱项目笔记(四)

 

爬虫---->数据处理:拿到数据----->分析数据结构------->总结模板--------->生成结果