-
基础背景
-
为什么做短语挖掘?
- 从文本数据中挖掘隐藏的结构。 文本数据中隐藏着大量的结构,这步工作就是将这些数据挖掘出来。
- 将文本数据转化为有类型的 Network/Text Cube。 将文本数据变成有结构、有类型的数据(Network/Text Cube)
- 挖掘 Network/Text Cube 生成有用的知识。 最后一步才是挖掘。参考自www.leiphone.com/category/ai…
-
有哪些做法?
-
一种可能的做法
可以采用短语构词模板进行判定,将满足词性组合模式的短语过滤出来。
- 词性模板规则判定的方法,其思想在于短语通常满足n+v,或者n+n,或a+n的模式,通过文本分词和词性标注,进行组合匹配,就可以输出。
- 通过jieba等开源工具进行分词和词性标注,可以得到一些有实际意义的词,但这些词分的粒度太细,可以进一步组合,例如,将连续的名词组合成新的NP短语;也可以使用standfordparser/corenlp进行浅层句子成分分析,得到相应结果。
- 下面是“YAYA/鸭鸭羽绒服女中长款2022年冬季新款狐狸毛大毛领派克服外套”使用jieba的词性标注结果。
-
高质量短语特征
一个高质量的短语应该满足高频率、一致性、信息量以及完整性等几个特性。
-
高频性 - TF-IDF
-
定义:高频性是指短语出现的频次足够高。
-
应用实现:TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术,常用于挖掘文章中的关键词,而且算法简单高效,常被工业用于最开始的文本数据清洗。
- 词频(Term Frequency, TF)表示关键词𝑤在文档𝐷𝑖中出现的频率:
- 逆文档频率(Inverse Document Frequency, IDF)反映关键词的普遍程度——当一个词越普遍(即有大量文档包含这个词)时,其IDF值越低;反之,则IDF值越高。IDF定义如下:
- 其中,𝑁为所有的文档总数,𝐼(𝑤,𝐷𝑖)表示文档𝐷𝑖是否包含关键词,若包含则为1,若不包含则为0。若词𝑤在所有文档中均未出现,则IDF公式中的分母为0;因此需要对IDF做平滑。
- 关键词𝑤在文档𝐷𝑖的TF-IDF值:
-
分析:单纯以”词频”衡量一个词的重要性,不够全面,有时重要的词可能出现次数并不多;而且,这种算法无法体现词的位置信息,出现位置靠前的词与出现位置靠后的词,都被视为重要性相同,这是不正确的。(一种解决方法是,对全文的第一段和每一段的第一句话,给予较大的权重。)
-
一致性 - PMI
-
定义:一致性,用于评估候选短语n-gram中的单词的搭配是否合理,与此相对应的是凝固度,即一个字组合片段里面字与字之间的紧密程度,例如“琉璃”、“榴莲”这样的词的凝固度就非常高,电影院的凝固度和合理性要比“的电影”要高。
-
应用实现:在具体实现上,可以使用PMI(Pointwise Mutual Information)点间互信息值来衡量,一个ngran短语的PMI点间互信息值越大成词的可能性越大。这里的log来自于信息论的理论,而且 log 1 = 0 ,也恰恰表明P(x,y) = P(x)P(y),相关性为0,而且log是单调递增函数,所以 “P(x,y) 就相比于 P(x)P(y) 越大,x 和 y 相关性越大” 这一性质也得到保留。
- 针对一个ngram,需要对其进行切分组合,然后分别计算组合中的PMI值,然后排序取最小值。
- 根据条件概率公式,在y出现的情况下x出现的条件概率 p(x|y) 除以x本身出现的概率 p(x) ,自然就表示x跟y的相关程度。
- 但是从上式中你可能会发现一个问题,那就是你有可能会去计算 log 0 = -inf,即得到一个负无穷。为此人们通常会计算一个PPMI(Positive PMI)来避免出现 -inf,即
-
分析:该方法会倾向于找出“巧克”、“俄罗”、“颜六色”、“柴可夫”等实际上是“半个词”的片段。
-
完整性 - 左右 信息熵
-
定义:高质量的短语需要是一个完整的语义单元,如“巧克力“与“巧克”相比,完整性要更高。一般来说,一个短语如果完整,那么其能够被独立运用的概率就越高,其独立使用时出现的前后上下文就越丰富。
-
应用实现:与此相对应的概念叫做自由度,即一个字组合片段能独立自由运用的程度 。 比如“巧克力”里面的“巧克”的凝固度就很高,和“巧克力”一样高,但是它自由运用的程度几乎为零,所以“巧克”不能单独成词。
- 在具体实现上,我们可以使用左右信息熵来进行实现,描绘的是一个短语左右搭配的丰富度,一个好的短语左右搭配应该是非常丰富的,分别计算它的左邻居信息熵和右邻居信息熵,取其中较小的为该组合的自由度,自由度越大成词的可能性越大。
- 信息熵:
- 左右信息熵,以左熵为例,对一个串左边所有可能的词以及词频,计算信息熵,然后求和:
- 考虑这么一句话“吃葡萄不吐葡萄皮不吃葡萄倒吐葡萄皮”,“葡萄”一词出现了四次,其中左邻字分别为 {吃, 吐, 吃, 吐} ,右邻字分别为 {不, 皮, 倒, 皮} 。根据公式,“葡萄”一词的左邻字的信息熵为 – (1/2) · log(1/2) – (1/2) · log(1/2) ≈ 0.693 ,它的右邻字的信息熵则为 – (1/2) · log(1/2) – (1/4) · log(1/4) – (1/4) · log(1/4) ≈ 1.04 。可见,在这个句子中,“葡萄”一词的右邻字更加丰富一些。
-
分析:与一致性类似,如果只看完整性即自由程度的话,则会把 “吃了一顿”、“看了一遍”、“睡了一晚”、“去了一趟”中的“了一”提取出来,因为它的左右邻字都太丰富了。
-
基于有监督标注分类评分的短语判定
在基于有监督的短语挖掘工作上,韩家炜老师团队逐步产出了系列具有代表性的工作,包括TopMine,SegPhrase、AutoPhrase,很具有启发性.
-
TopMine:频率模式挖掘+统计分析
TopMine,发表于《Scalable Topical Phrase Mining from Text Corpora》一文。
-
高频短语挖掘两条性质
Downward closure lemma: If phrase P is not frequent, then any super-phrase of P is guaranteed to be not frequent.
Data-antimonotonicity: If a document contains no frequent phrases of length n, the document does not contain frequent phrases of length > n.
-
Downward closure lemma最早是在apriori算法中提出的。apriori算法:
-
几个概念:
- Apriori是一种常用的数据关联规则挖掘方法,它可以用来找出数据集中频繁出现的数据集合
- 关联规则:关联规则是形如 X→Y 的蕴涵表达式,其中X和Y是不相交的项集,即 X∩Y=∅。关联规则的强度可以用它的支持度(support)和置信度(confidence)来度量。
- 最小支持度:最小支持度就是人为规定的阈值,表示项集在统计意义上的最低重要性。 最小置信度:最小置信度也是人为规定的阈值,表示关联规则最低可靠性。 只有支持度与置信度同时达到了最小支持度与最小置信度,此关联规则才会被称为强规则。
- 频繁项集:满足最小支持度的所有项集,称作频繁项集。 频繁项集性质:1、频繁项集的所有非空子集也为频繁项集;2、若A项集不是频繁项集,则其他项集或事务与A项集的并集也不是频繁项集)
-
算法流程:输入:数据集合D,支持度阈值α;输出:最大的频繁k项集
-
扫描整个数据集,得到所有出现过的数据,作为候选频繁1项集。
-
挖掘频繁k项集
- 扫描数据计算候选频繁k项集的支持度
- 去除候选频繁k项集中支持度低于阈值的数据集,得到频繁k项集。如果得到的频繁k项集为空,则直接返回频繁k-1项集的集合作为算法结果,算法结束。如果得到的频繁k项集只有一项,则直接返回频繁k项集的集合作为算法结果,算法结束。
- 基于频繁k项集,连接生成候选频繁k+1项集。
-
令k=k+1,转入步骤2。
-
-
-
算法流程
它的方法不同于以往采用 Uni-gram 的方法,而是将 Topic 挖掘分成了两个步骤:通过 Phrase Mining 对文本进行分割;随后进行基于 Phrase 约束的 Topic 模型。 这种方法避免了长度统一的 gram 将一个 Phrase 中的 Word 分割开。
-
phrase挖掘:需要用到两部分信息,一类是phrase本身的统计量,一类是phrase上下文信息。
-
高频短语挖掘:这一部分直接使用频次作为过滤条件,生成所有的phrase候选。生成候选的过程中通过「剪枝策略」可以提升生成效率。
-
-
短语构造算法:论文构造了一个类似PMI的指标,用来衡量合并之后的得分,采用自下而上的凝聚合并,在每次迭代时贪心合并最好的候选短语对。基本流程如下图:
- 一个具体的例子
- 显著性得分及简单推导
-
为了对短语的出现进行统计推理,我们考虑一个零假设,即语料库是一系列独立的伯努利试验构成的。在这个假设下,一个短语在特定位置的存在或不存在在语料库中是伯努利随机变量的乘积,一个短语的预期出现次数f(P)可以被解释为二项分布。因为语料库中的标记数 L 可以假设为相当大,这个二项分布可以合理近似为均值为Lp、方差为Lp(1-p)的正态分布。
- 主题模型
原始的LDA根据p(topic t | document d) * p(word w | topic t),用这个概率给单词w迭代分配一个主题,直至收敛。论文中使用的是PhraseLDA,与LDA不同之处就在于为phrase中的token添加的属于同一个topic的约束。LDA算法大概流程:
-
按照先验概率p(di)选择一篇文档di
-
从Dirichlet分布α中取样生成文档di的主题分布θi,主题分布θi由超参数为α的Dirichlet分布生成
-
从主题的多项式分布θi中取样生成文档di第 j 个词的主题zi,j
-
从Dirichlet分布β中取样生成主题zi,j对应的词语分布ϕzi,j,词语分布ϕzi,j由参数为β的Dirichlet分布生成
-
从词语的多项式分布ϕzi,j中采样最终生成词语ωi,j
-
SegPhrase: 弱监督 、高质量的 Phrase Mining
SegPhrase,发表于《Mining Quality Phrases from Massive Text Corpora》一文。
主要贡献在于意识到基于原始频率的短语的局限性挖掘,提出了一个分段集成框架纠正原始频率。
-
高频短语检测
Downward Closure property: If a phrase is not frequent, then any its super-phrase is guaranteed to be not frequent. Therefore, those longer phrases will be filtered and never expanded.
Prefix property: If a phrase is frequent, any its prefix units should be frequent too. In this way, all the frequent phrases can be generated by expanding their prefixes.
整体类似4.1中的高频短语挖掘
-
短语质量评估
训练分类器来进行短语质量打分,需要人工标注一些正样本,通过比如树模型,PU-learning,主动学习等可以应用于自动检索负样本。
- 一致性特征:PMI和 pointwise Kullback-Leibler divergence
-
信息量特征:
- 停用词是否出现在phrase的开头或者结尾
- IDF
- 标点符号:短语出现在引号、括号中或大写的概率
-
短语分割
S = s1 . . . sm,句子C进行分割S的概率:
由于短语间的依赖关系,模型假设质量短语是一个一个生成的,w[bt, bt+1)是一个质量短语的概率用其质量打分来描述。在D个文本中,我们最终去求最大化后验概率。使用维特比算法求解归一化频次,并增加phrase长度惩罚项进行动态规划迭代。具体可以见参考文献[9]
-
AutoPhrase:自动的 Phrase Mining
AutoPhrase, 发表于《Automated Phrase Mining from Massive Text Corpora》一文。
该工作认为,一个理想的自动短语挖掘方法应该是独立于不同领域,并且只需要最少的人力或语言解析,因此提出了AutoPhrase框架,更深层次的避免了人工标注的问题。
-
算法流程
AutoPhrase框架选用了Robust Positive-Only Distant Training(强健正面的远程训练)以及POS-Guided Phrasal Segmentation(POS-Guided短语分割)两种策略。AutoPhrase会根据正负池对质量短语进行两次评估,分别是在短语分割的前和后,也就是说,POS-Guided短语分割需要一组初始的质量短语分数,预先根据原始频率估计分数,然后一旦特征值被纠正,就要重新估计分数。
AutoPhrase的第一部分(上图中的左部分)候选短语集合包含所有超过最小阈值的n-grams。这里的阈值指的是通过字符串匹配计算出的n-grams的原始频率。
-
Robust Positive-Only Distant Training
通用知识库中,如WikiPedia、Freebase,包含许多优质短语,很容易获得比人类专家生成的多很多的短语,对于远程训练方法,使用通用知识库中已有优质短语,可有效避免额外标注,本文独立地构建正负样本,并训练多个分类器,集成后对negative labels进行降噪;
首先,在Robust Positive-Only Distant Training环节, 利用已有的知识库(Wikipedia)做远程监督训练,以避免手工标注,具体的:
-
Label Pools
- Positive Pool: Public Knowledge Bases (如wikipedia)的titles、keywords、internal links of pages中包含大量高质量的phrase,形成positive pool。
- Noisy Negative Pool: 基于n-grams的phrase condidates很难满足我们的标准,大部分的phrase质量较差,实验统计,大概有10%的质量较好,因此,从给定corpus中提取phrase condidates很难与提取的高质量phrase相匹配,其可以作为Noisy Negative Pool。
-
Noise Reduction
- 如上Negative Pool是带有一定的噪声的,直接基于这样的数据进行训练,容易导致识别效果不好(一些实际是正样本的,可能会被误检),因此,本文集成多个独立训练的分类器进行概率平均,对于每个分类器,随机筛选K个正样本和负样本,由于一些优质短语由positive变为negative,这2K个候选短语称为Perturbed Training Set(扰动训练集)。理想的误差率为 σ/2K , 假定优质、劣质短语的特征是可区分的,经验误差应该也相对较小。
- 这种采样过程的有趣性质在于随机采样构建的扰动训练集,可以用于训练独立误差,因此,可以采用随机森林算法,某个短语的质量评分可以用所有决策树的评分来评估,假设随机森林有T个树,集成错误率可以按照超过半数分类器错误的概率,即:
-
POS-Guided Phrasal Segmentation
在短语挖掘算法中集成语言分析器,需要平衡效果和领域独立之间关系,从领域独立角度看,语言知识可以有效改善短语抽取准确率,但很难支持多种语言;从准确率角度看,依赖复杂训练的语言分析器并不利于领域独立的短语挖掘方法,因此,本文集成POS tagger来提升性能,POS-Guided Phrasal Segmentation方法利用浅层句法信息来指导phrasal segmentation模型,准确定位phrases的边界。(这里作者应该是强调复杂训练的语言分析器,并不利于短语挖掘方法的普适性,而POS tagger是一种相对简单的语言分析器,是准确率和领域独立平衡后的一种最佳选择)。
Example 5. Suppose the whole POS tag sequence is “NN NN NN VB DT NN”. A good POS sequence quality estimator might return T(NN NN NN) ≈ 1 and T(NN VB) ≈ 0, where NN refers to singular or mass noun (e.g., database), VB means verb in the base form (e.g., is), and DT is for determiner (e.g., the).
词性短语质量评估公式如下图所示,δ(tx, ty)是词性标签tx在给定的短语中相邻且位于词性标记 ty 之前是的概率:
POS tagged序列Ω和边界index序列B = {b1, b2, . . . , bm+1} 的联合分布如下:
其计算推理过程是基于Viterbi算法来迭代优化参数的,作者认为Viterbi算法是求解隐马尔可夫类任务的简单高效的算法
参考文献
[1] blog.csdn.net/xixiaoyaoww…
[2] www.jianshu.com/p/76197e116…
[3] blog.csdn.net/langsiming/…
[4] blog.csdn.net/u014748818/…
[5] www.matrix67.com/blog/archiv…
[6] www.jianshu.com/p/76197e116…
[7] www.jianshu.com/p/4a91dd590…
[8] Scalable Topical Phrase Mining from Text Corpora
[9] Mining Quality Phrases from Massive Text Corpora
[10] Automated Phrase Mining from Massive Text Corpora