『IR 信息检索入门必看』#2 统计语言模型(简明)

访问博客查看 本文 最新内容,排版更美观ヾ(•ω•`)o 如有错误欢迎指出~

IR 信息检索系列笔记:

基于对布尔模型的改进,提出一种新的最佳匹配模型。

统计语言模型 | Statistical Language Models

首先探讨的是 Doc (文档) 的呈现形式,引入 Topic (主题) 来表述一个文档的隐含语义,起到索引作用。基于以下两个假设:

  • Words common in document are common in topic.
  • Words not in document much less likely.

可以得出,Topic 是由 Doc 中的一些关键词勾勒出来的。于是引入 P(w|Doc) 概率分布表:统计每个词在文档中出现频度(频率)——基于大数定律。

但 Topic 的难确定性(语义理解不同、可能有多个主题)导致其难以直接计算,因此可以用近似估算。

P\left( w|Topic_D \right) \approx P\left( w|D \right) =tf\left( w,D \right) /len\left( D \right)

事实上,我们可以认为 Topic 是一种「语言模型」,P\left( w|Topic_D \right) 可以认为是在 Topic 下生成该 word 的概率,即该 word 在这个「语言模型」中被生成的概率,故 word 可以不在 Topic 中出现,但也有概率生成。

语言模型化 | Language Modeling

定义 M 为我们试图描述的 language (语言),s 为该语言下观测到的文本串(由许多词条构成)。

  • M can be thought of as a “source” or a generator - a mechanism that can spit out strings that are legal in the language.

  • P(s|M) is the probability of getting “s” during random sampling from M.

语言的规模可大可小,把每种语言的规模缩小为一个 Topic(对应着语料库中的一个文档);这个 Topic 就决定了任意一个字符串在这个 Topic 所对应的「语言模型」中出现的概率:比如,在一个描述信息检索发展历史的文档中,“Washington” 出现的概率就会远远小于 “Robertson”。

那么,一旦我们确定了这个 Doc 所对应的「语言模型」M_D ,而 Q 是用户的 Query,我们是不是可以求出这个「语言模型」下生成 Q 的概率?概率最大者就是与查询最相关的文档。那么,我们就可以根据 P(Q|M_D) 给所有的 Doc 排序,得到我们的查询结果。

多元语言模型 | N-gram Language Models

对于一个较长的 Query,我们采用分词的方法来计算它的生成概率。为此,首先通过几个例子明确语言模型中 N-gram 的概念:

  • Unigram 一元分词,把句子分成一个一个的汉字,如:哈/工/大/深/圳
  • Bigram 二元分词,每两个字组成一个词语,如:哈工/工大/大深/深圳
  • Trigram 三元分词,每三个字组成一个词语,如:哈工大/工大深/大深圳

在以上例子中,我们可以知道一个文本串在一元语言中生成的概率将这样计算:
P\left( w_1w_2w_3 \right) =P\left( w_1 \right) \cdot P\left( w_2 \right) \cdot P\left( w_3 \right)
在二元语言中将这样计算:
P\left( w_1w_2w_3 \right) =P\left( w_1 \right) \cdot P\left( w_2|w_1 \right) \cdot P\left( w_3|w_2 \right)
可以发现,在 Unigram 中我们假设了单词之间的独立性,这就意味着它的本质是词的多项分布,而一个文本串可以看作是这个分布的一个实例。

对于更多元的分词 N-gram,我们是假设每个单词出现的概率只与它之前的 n-1 个单词相关,因此采用了条件概率。事实上,这是一种基于马尔可夫假设的模型,此时的文本串应是有序相关的,这就不属于 BoW 的范畴。

一般情况下,N 的取值都很小,实际自然语言处理应用中最多的是将 N = 3 的三元分词模型。原因如下:

  • N 元模型的空间复杂度,是 N 的指数函数,即 O\left( \left| V \right|^N \right)V 是一种语言的词汇量,一般在几万到几十万个。时间复杂度也是一个指数函数O\left( \left| V \right|^{N-1} \right)
  • 即使使用 N = 4 、N = 5 也不可能覆盖所有词与词之间的相关性。某两个词可能是一段话和一段话之间才会出现的。

多元语言模型的参数估计

针对一元模型,只需要统计该「语言模型」生成的文档中,出现该 term 的频率,用频率近似概率即可——大数定律

这里对二元模型展开探讨:估计 P\left( w_i|w_{i-1} \right),利用条件概率:
P\left(w_{i} \mid w_{i-1}\right)=\frac{P\left(w_{i-1}, w_{i}\right)}{P\left(w_{i-1}\right)}
于是,我们只需要统计 \left(w_{i-1}, w_{i}\right) 的有序词对在文档中的出现次数,再统计 w_{i-1} 的出现次数,即可估计其概率。

然而,存在这样一个问题:在文本中,两个词没有连续出现过,即频度为 0,那么它的概率就是 0 吗?如果词对 \left(w_{i-1}, w_{i}\right)w_{i-1} 的出现次数相同,其概率就是 1 吗?这就涉及到了统计的可靠性问题,也称「不平滑问题」。

解决这些问题的主要方法是古德-图灵估计(Good-Turing Estimate)和卡茨退避法(Katz backoff)。

  • 对出现次数大于某个阈值的词,频率不下调,即用频率代替概率;

  • 对出现次数小于这个阈值的词,频率才下调,利用古德-图灵估计的相对频度来调整;

  • 对出现次数等于 0 的词,利用卡茨退避法给予一个比较小的概率值。

这部分的内容属于语料库的自然语言处理,本文中不赘述,仅在后文针对零频问题介绍几种方法。

查询排序问题 | Ranking

当给定查询 Q 时,怎么根据统计语言模型进行排序呢?有三种排序方法,分别是:

  1. 查询似然排序 | Query-likelihood

为每个 Doc 确定其所对应的 M_D,而用户的 Query 记为 q=(q_1,q_2,\cdots,q_k) 。则该查询在每个文档的「语言模型」下生成的概率可如下计算:
P\left(q_{1} \ldots q_{k} \mid M_{D}\right)=\prod_{i=1}^{k} P\left(q_{i} \mid M_{D}\right)
将所有计算结果排序,即可得到检索结果。要注意,这种方法对每个 Doc 计算出的概率都独立于其他 Doc,相关文档没有被利用到。

  1. 文档似然排序 | Document-likelihood

查询似然的翻转版本,为每个 Query 确定其所对应的 M_Q,计算任意一个文档在该查询的「语言模型」下生成的概率:
P\left(D \mid M_{Q}\right)=\prod_{w \in D} P\left(w \mid M_{Q}\right)
但是,这种方法存在如下问题:

  • 文档的长度相差很大,很难比较。
  • 由于文档中出现的词很多没有出现在查询中,将会出现零频问题。
  • 将会出现无意义的作弊网页,如将 Query 中的关键词无限重复。

要解决这些问题,需要引入 Likelihood Ratio (似然比),对文档长度加以归一。

P\left(M_{Q} \mid D\right)=\frac{P\left(M_{Q}\right) P\left(D \mid M_{Q}\right)}{P(D)} \approx \frac{c \prod_{w \in D} P\left(w \mid M_{Q}\right)}{\prod_{w \in D} P(w \mid G E)}
其中,对每个文档计算其可能 「生成 M_Q」的概率,在用贝叶斯公式展开,其中的 P\left(M_{Q}\right) 对于每个文档可视作常数,再由分母的约束,对文档加以限制。

  1. Ranking by Model Comparison

结合前两种方法,提出了交叉熵(cross-entropy)的概念:
H\left(M_{Q} \| M_{D}\right)=-\sum_{w} P\left(w \mid M_{Q}\right) \log P\left(w \mid M_{D}\right)
这种方法同时考虑了查询 M_Q 和文档 M_D,直接比较两种模型的相似度。要注意,M_QM_D 在公式中的顺序不能调换。

零频问题 | Zero frequency problem

有了上述排序模型,现在我们只需要从查询和文档中估算出 M_QM_D

在本文的「语言模型」中,我们只需采用一元分词模型,独立性和独立分布可以简化许多问题。然而,在极大似然估计下,还是有个问题急需解决——零频问题,即有的 term 根本不出现在观测集中,我们该如何估算其概率?

这里介绍三种 Discounting Methods (折扣法) 来 Smoothing (平滑) :

  1. Laplace correction:把每个词的词频都加 1,分母的总频数加上词项数 N。但是这种方法不适合较大的词典表。

  2. Lindstone correction:把每个词都加一个很小的值 ε,分母的总频数加上 Nε。

  3. Absolute Discounting:把词频不等于 0 的词减去一个很小的值 ε,再把减去的总值平均分配到词频为 0 的词上去,不改变分母。

除了折扣法,还有诸如插值法、退避法等方法也可以用于平滑。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容