《Text Mining and Analytics》学习笔记——第二周

第一周笔记 : 《Text Mining and Analytics》学习笔记——第一周

目录

组合关系

1.熵

首先看一下我们遇到的问题:我们需要知道什么单词会有跟eats一起出现的趋势呢?
《Text Mining and Analytics》学习笔记——第二周

先设可能会一起出现的词为W
《Text Mining and Analytics》学习笔记——第二周
假设现在W有3个可选选项,分别为W=“meat”;W=“the”;W=“unicorn”。

我们可以发现有一些词是比较容易预测的:
the好像放哪都可以,所以容易预测很可能出现
而“unicorn”很不常见,也容易预测基本不会出现

而“meat”出现的频率介于两者之间,所以更难预测一些,可能出现也可能不出现

那我们到底要怎么衡量一个单词出现在某个短语中可能性呢?这里引入熵的概念来度量X的随机性。

熵的公式:
《Text Mining and Analytics》学习笔记——第二周

在一次事件中:
极端情况:当一旦此出现的概率为1或0的时候,它的熵为0

当单词的概率为1/2的时候,熵最大(当某件事情发生的概率为1/2时,足以说明这个事情很随机,比如抛硬币)。

《Text Mining and Analytics》学习笔记——第二周

对应到我们之前的问题中,其中“the”随处都可以看见,“unicorn”很不常见,所以他们的熵接近于0,而此时“meat”的对应的熵会明显高于其它两个单词。

现在我们可以得到熵越高词越难预测。

2.条件熵

上面是每一个单词单独出现的预测,那么当我们已知了eats已经存在于这个上下文中,那么其它单词的出现应该怎么预测呢?这里我们就引入了条件熵的概念。
《Text Mining and Analytics》学习笔记——第二周

那么条件熵就变为了:
《Text Mining and Analytics》学习笔记——第二周

  • 一般的H(Xmeat)H(Xmeat|Xeats),因为当我们增加了信息后,信息的不确定性就会降低,就会变得相对容易预测。

  • 条件熵的最小值:
    H(Xmeat|Xmeat)=0,因为我们已经知道了meat的存在,它就没有不确定性了。

  • H(Xmeat|Xthe)H(Xmeat|Xeats)哪个更小?
    H(Xmeat|Xeats)更小,因为the本身对我们消除不确定性没有什么帮助,而eats的存在与否关系到meat的不确定性,所以有了eats之后,不确定性会减小

  • 条件熵的最大值,以H(Xmeat|XW)为例。
    最大值为H(Xmeat),相当于条件没有起作用。比如条件为the

3.条件熵挖掘组合关系

通过条件熵来挖掘最有可能的组合关系

对每一个单词W1:

  • 对每一个单词W2,计算条件熵 H(Xw1|Xw2)
  • 对每一个单词为条件的情况下计算一遍,升序排序所有条件熵结果。
  • 选择条件熵最小的单词,认为此单词与W1具有组合关系
  • 需要对每个W1设置阈值

注:
H(Xw1|Xw2)H(Xw1|Xw3)是可比的(都是W1的条件熵),H(Xw1|Xw2)H(Xw3|Xw2)并不可比的。 那是因为他们有不同的界限(H(Xw1|Xw2)的界限是H(Xw1)H(Xw3|Xw2)的界限是H(Xw3))。

如何解决上面的不可比较问题呢,下面会讲到使用交互信息( mutual information)来解决这个问题。

4.交互信息

使用交互信息可以帮助我们标准化条件熵,以便条件熵可以和其他不同的配对来进行对比

交互信息:I(X;Y)=H(X)H(X|Y)=H(Y)H(Y|X)

交互信息特点:

  • 非负,I(X;Y)0
    熵永远不会比条件熵更低,因为条件熵的最大值也是当条件取像the这种词时的时候才能取到的。
  • 对称,I(X;Y)=I(Y;X)
  • 如果X,Y独立,则I(X;Y)=0

交互信息的数学表达式:

《Text Mining and Analytics》学习笔记——第二周
也称为KL发散,度量了两个分布之间的发散情况。
KL发散越大,说明交互信息越大(交互信息越大说明两个单词越相关)

交互信息的计算:

《Text Mining and Analytics》学习笔记——第二周

我们只需要知道图上标注出来的三个概率就可以计算两个单词之间的交互信息大小。

问题:如何计算图中的三个概率?

一般的,我们用一个时间在可观测的数据里发生的次数来计算概率,最常见的方法是最大似然估计,也就是简单的对事件发生的次数做归一化

《Text Mining and Analytics》学习笔记——第二周

上面是最大似然法,其中count(w1,w2)是w1和w2同时出现的次数。

为了防止存在概率为0的情况(因为我们相信每一个单词都可能出现在任何地方),需要进行一点平滑的操作。

《Text Mining and Analytics》学习笔记——第二周

这样我们就可以利用熵,条件熵和交互信息完整的量化并计算组合关系了。

主题挖掘(Topic Mining)

《Text Mining and Analytics》学习笔记——第二周

1.动机和任务

主题:是一段文本数据所讨论的主要思想,我们可以说一句话的主题,一篇文章的主题,一段文字的主题 ,或者,数字图书馆里所有研究文章的主题。

一般而言我们可以将主题视为关于这个世界的某些知识

基于主题挖掘的应用:

  • 今天Twitter上人们都在谈论什么?
  • 现在数据挖掘的研究主题有哪些?,这些主题跟五年前又有什么不同?
  • 我们也可能好奇人们喜欢某些产品 ,比如iPhone 6的哪些地方 ,以及不喜欢哪些地方 ,这包括找出对iPhone 6的正面观点,还有负面评论。

在进行主题分析的时候,我们也可以加入一些非文本的数据,让我们有更多的背景来分析主题,比如说我们也许知道与这段文本数据相关的时间, 或者这段文本数据是在哪里产生的 ,或者这段文本的作者,或者这段文本的来源 ,所有这些元数据 或者说环境变量都能与我们找到的主题联系起来 ,然后我们就能用这些环境变量来帮助分析主题的模式 ,比如说通过对主题的长时间观察,我们能发现 是否有新的主题出现,或者有什么主题逐渐消失 。

《Text Mining and Analytics》学习笔记——第二周

得到k个主题

文本集合用C来表示,用i来表示一篇文本, 通常我们也需要输入主题的数量k,现在输出就会是我们想要找出的k个主题了 ,按顺序记为θ1到θk 。

每篇文章的主题覆盖率

通俗来讲,就是这个文章属于每个主题的概率。
我们也想生成文章di对主题的覆盖度 ,用πij来表示 ,πij表示文档di覆盖主题θj 的概率 ,所以对于每一篇文章来说,概率之和为1。

总而言之主题的挖掘就是要得到上面的结果。

那我们如何定义一个主题θi呢?

2.将术语作为主题

将一个主题简单地定义为一个术语。一个术语可以是一个词或一个短语,一般来说,我们可以用这些术语来描述话题。

例如,我们可能有体育,旅游或科学等术语

现在,如果我们以这种方式定义一个主题, 然后我们可以分析每个文档中这些主题的覆盖范围。 在这里例如, 我们可能想要发现文件覆盖体育的程度。 我们发现文件1的内容中有30%是关于运动的。 12%是关于旅行等 我们也可能会发现文件二完全不包括运动。 所以覆盖率是零等

《Text Mining and Analytics》学习笔记——第二周

那我们应该如何选择术语?

  • 将每一个单词看做一个术语
  • 设计评分函数来评价那个术语作为主题比较好
    • 术语应该有代表性
    • 避免将the,a等很频繁的单词作为术语
    • TF-IDF比较有效
    • 我们也可能能够利用一些特定领域的启发式。(如使用新闻的标题)
  • 选择最高分的k个作为主题
    • 但是需要删除同义词等冗余项(贪婪算法等)

有了主题(术语)之后怎么计算主题覆盖率呢?

一种方法可以简单地计算这些术语的出现。 例如,在这个文件中,体育运动可能会发生四次 ,旅行发生了两次, 然后我们可以将这些计数标准化为我们对覆盖率的估计每个主题的概率。

但是,例如我们有一个关于NBA篮球比赛的文本文件,就内容而言,显然是关于运动的,如果我们只是简单地把这些代表我们话题 ,我们会发现文章中实际上并没有出现体育这个词, 即使内容是关于运动。 所以这个估计有问题。

首先,当我们计算话题属于哪个词时, 我们也需要考虑相关的词汇。 我们不能简单地只把主题词计算在内。

第二个问题是像star这样的词实际上可能是模棱两可的。 所以这里可能意味着一个篮球star,但是 我们可以想象它也可能意味着天上的star。 所以在这种情况下,这颗star实际上可能会提出一个科学的话题。

存在的问题

将术语作为主题的这种方法存在的问题:
1. 一些非常专业的项目或文章很难用一个词或短语来表达
2. 词汇覆盖不全面, 这意味着这个话题本身只是一个术语。 它没有提出与该主题相关的其他术语。

下面将使用概率主题模型来解决上述问题。

3.概率主题模型

为了解决第一个问题,我们需要更多的词汇来描述主题
解决第二个问题我们需要量化词语 ,用来区别主题间的细微差别和模糊地介绍语义相连的词 ,最终为了解决语义模糊的问题。

所有这些都可以用一个概率主题模型表达。

如下图所示,我们表达一个主题并不只是用一个单词,而是使用一个概率模型来表达,即单词的分布。

《Text Mining and Analytics》学习笔记——第二周

这并不意味着体育术语在自然科学中概率是0 ,只不过某个特别主题中的某些单词有非常 ,非常小的概率

可以看到一个词出现在很多主题中 ,这些词用了黑色来标识 所以你能看到比如旅行这个词 ,在三个主题红都出现了 ,但是概率不同 ,在旅游主题中概率最高 有0.05, 但是在体育和科学主题中概率稍小 。

那现在重新定义一下主题挖掘的问题?

《Text Mining and Analytics》学习笔记——第二周

在对主题更加精雕细琢 ,现在每个主题都是词语分布, 而且我们所知的每个词语分布中所有的单词概率和应为1。

V是词汇表 ,它有一组词来决定哪个单位可以作为基本单位来分析 ,大多数情况下可以用词汇作分析的基础意味着每个词都是不同的 。
《Text Mining and Analytics》学习笔记——第二周
上面是概率模型的输入和输出。

根据输入我们想看到每个主题的概率分布和每个文档的主题覆盖率。

计算主题覆盖率

可以用生成模型 Generative Model来解决上述问题

计算步骤

1.得到初步的主题和文档覆盖率(以术语为主题)

2.将初步的数据作为λ,装进概率模型来生成大量数据

3.调整参数λ来适应生成的数据,适应最好的(概率最大)的λ为λ*,即我们想得到的参数

《Text Mining and Analytics》学习笔记——第二周

在生成的数据中建立一个模型 ,简单的假设它们就是这么生成的 ,模型中嵌入一些一直关注的参数用λ表示 ,之后推出参数像是λ*(已知数据上生成数据是最合适的点的λ) 。

统计语言模型

统计语言模型从根本上来说是指单词序列的概率分布

相同的单词序列在不同的上下文中可能会有不同的概率,意味着这样的分布可以实际用于主题归类

最简单的语言模型为 一元语法模型, 我们简单的假设 :这种模型独立地生成构成文本的每一个单词。

《Text Mining and Analytics》学习笔记——第二周

图中“today is Wed”是一个文本,那么这个文本的分布概率就是P("today is Wed")=0.0020.0010.000015

两个基本问题

1)已知概率来求主题:

《Text Mining and Analytics》学习笔记——第二周

当food的概率很低,当text的概率很高的时候我们预测为Text mining Paper

2)已知文本来参数估计:

《Text Mining and Analytics》学习笔记——第二周
一般的假设为单词出现的次数除以总词数为概率,但这是最优的吗?我们应该如何衡最优呢?

经常用的是最大似然法(Maximum Likelihood)和贝叶斯算法(Bayesian)

1)将最优定义为数据似然值达到最大(是函数达到最大的参数值)当数据太小时会产生问题,会导致偏差

当100的文本中不包含另一个文本的单词时,那么此单词的参数为0,显然不对,但如果不为0则使得其他单词的参数值降低,从而不是最佳的答案。

2)贝叶斯估计(兼顾数据与参数的先验知识)我们假设对单词的前置信念先验用P(theta)定义为先验信念

《Text Mining and Analytics》学习笔记——第二周

总结

1)使用了统计语言模型(即文本中的概率分布,又被称为文本数据的生成模型),最简单的模型是一元语法模型是单词分布

2)似然函数(即给定模型下的数据的概率)给定X的样本,我们能确定那些参数值能使观察数据概率最大化(极大似然估计)。

3)贝叶斯估计/贝叶斯推断:定义P(theta)的参数先验,关注参数的后验计算,其结果与先验和似然值呈正比。这样的分布能推导任意从theta导出的值。

《Text Mining and Analytics》学习笔记——第二周

挖掘一个主题

现在我们感兴趣的是从一个文档中挖掘一个主题

使用最大似然法:

《Text Mining and Analytics》学习笔记——第二周

但这其中有一个问题,因为the,a一类单词的出现频率太大对结果会造成影响
《Text Mining and Analytics》学习笔记——第二周

这种情况应该如何处理呢?下周见!