52
1 文文文文Text Mining 文文文文 出出出出 , 出出出出 http://www.yeeach.com 2010 出 10 出

文本挖掘(Text mining)基础

Embed Size (px)

DESCRIPTION

以搜索引擎中相关的文本挖掘技术为基础,讲解了Text Mining相关技术

Citation preview

Page 1: 文本挖掘(Text mining)基础

1

文本挖掘( Text Mining )技术基础

出家如初 , 成佛有余 http://www.yeeach.com

2010 年 10月

Page 2: 文本挖掘(Text mining)基础

议题

搜索引擎文本挖掘基础

文本挖掘基础

2

Page 3: 文本挖掘(Text mining)基础

搜索引擎技术不单纯只是搜索搜索引擎技术除了实现 Web 搜索、图片搜索外,还能够

干什么?

搜索引擎核心技术有哪些?—网络爬虫—中英文分词—排序算法—Text Mining 相关—海量数据存储—分布式计算—等等

3

Page 4: 文本挖掘(Text mining)基础

Google 的十大核心技术Google 的十大核心技术:

—分布式基础设施:GFS、 Chubby、 Protocol Buffer

—分布式大规模数据处理MapReduce、 Sawzall

—分布式数据库技术:BigTable、 Sharding

—数据中心优化技术数据中心高温化、 12V 电池、服务器整合

参考:探索Google App Engine 背后的奥秘

4

Page 5: 文本挖掘(Text mining)基础

搜索引擎技术使用场景:内容相似度新闻站点的“您可能也喜欢”

—本质为:两篇文档 / 图书 / 商品内容的相似度

5

Page 6: 文本挖掘(Text mining)基础

搜索引擎技术使用场景:内容分类、聚类

6

Page 7: 文本挖掘(Text mining)基础

7

通用搜索引擎系统流程

Page 8: 文本挖掘(Text mining)基础

Lucene 系统架构

8

Page 9: 文本挖掘(Text mining)基础

Lucene 系统架构

9

Page 10: 文本挖掘(Text mining)基础

搜索引擎中文本挖掘典型问题

在搜索引擎中关于文本挖掘的典型问题—怎样得到一篇文章的关键词、主题?—怎样用计算机可识别的数学公式来表征一篇文档—怎样处理查询关键词与文档的相似度—怎样度量两篇文档的相似度?

10

Page 11: 文本挖掘(Text mining)基础

信息检索模型

信息检索模型( Information Retrieval Model )是指如何对查询和文档进行表示,然后对它们进行相似度计算的框架和方法。

信息检索模型本质上是对相关度建模。

11

Page 12: 文本挖掘(Text mining)基础

信息检索模型信息检索模型 信息检索模型可以表示为一个四元组的模型框架

IR = <D, Q, R(q,d)>

D 是文档表示, Q 是查询表示, R(q ,d ) 是一个排序函数索引词 (Index Term)

索引词是能代表文档内容的特征,可以是字、词、短语或者某种语义单元,关键词 (key words) 可以看成索引词的一种。文档表示成多个索引词的集合

索引词的权重 (Weight)

不同索引词作用是不同的,通过权重加以区分

12

Page 13: 文本挖掘(Text mining)基础

信息检索模型的分类 从所使用的数学方法上分:

基于集合论的 IR 模型 (Set Theoretic models)

布尔模型基于模糊集的模型、扩展布尔模型

基于代数论的 IR 模型 (Algebraic models)

向量空间模型LSI (隐性语义检索)模型

神经网络模型

基于概率统计的 IR 模型 (Probabilistic models)

概率模型回归模型、语言模型建模 IR 模型、推理网络模型、信任度网络模

型 13

Page 14: 文本挖掘(Text mining)基础

布尔模型( Boolean Model )布尔模型建立在经典的集合论和布尔代数的基础上

在布尔模型中查询和文档均表示为索引词 (“ 是否存在” ) 的布尔表达式,通常表示成 D(t 1, t 2 ,⋯ , t i) 的形式。

布尔操作 ( 关系 ) :与 (AND) 或 (OR) 非 (NOT)

相似度计算:查询布尔表达式和所有文档的布尔表达式进行匹配,匹配成功的文档的得分为 1 ,否则为 0 。

14

Page 15: 文本挖掘(Text mining)基础

布尔模型的优缺点优点:

—简单、易理解、易实现—现代很多搜索引擎中仍然包含布尔模型的思想,如 Google 的高级

检索缺点

—只能严格匹配,文献要么相关、要么不相关,并没有一个相关级别的概念,因此很难有好的检索效果

—构造布尔逻辑式不容易,对于一般用户而言,很难用AND、OR、NOT运算符的结合来准确地表达一个检索语句,标引词的简单组配不能完全反映用户的实际需要;

—检索输出完全依赖于布尔提问与文献的匹配情况,很难控制输出量的大小

—结果不能按用户定义的重要性排序输出,用户只能从头到尾浏览输出结果才能知道哪些文献更适合自己的需要

15

Page 16: 文本挖掘(Text mining)基础

概率模型

16

Page 17: 文本挖掘(Text mining)基础

概率模型优缺点优点

—采用严格的数学理论为依据,为人们提供了一种数学理论基础来进行检索决策; PubMed的 related articles 。

—采用相关反馈原理—在其中没有使用用户难以运用的布尔逻辑方法;—在操作过程中使用了词的依赖性和相互关系。

缺点:—计算复杂度大 ,不适合大型网络—参数估计难度较大—条件概率值难估计—系统的检索性能提高不明显,需与其他检索模型结合

17

Page 18: 文本挖掘(Text mining)基础

词频( TF )、文件频率( DF )假如要搜索一个词语 ti 在文件集合{d1 ,d2 ,...,dn } 出现的频率,则有两部分的重要信息:

ti 在某篇文档 dj 中出现的次数,称为此词语在此篇文档的频率(词频): TF(Term Frequency)

文档集合 {d1 ,d2 ,...,dn } 中包含 ti 的文档个数,称为此词语在文档集合 {d1 ,d2 ,...,dn } 的文件频率: DF(Document Frequency )

18

Page 19: 文本挖掘(Text mining)基础

TF(Term Frequency):

19

Page 20: 文本挖掘(Text mining)基础

IDF(inverse document frequency)

20

Page 21: 文本挖掘(Text mining)基础

TF-IDF

把 TF(Term Frequency)、 IDF(inverse document frequency)这两项结合起来,对单词 t和文档 d ,定义

TF-IDF(t,d) = TF(t,d) * IDF(t)

TF-IDF 的作用:—某一特定文件内的高词语频率,以及该词语在整个文件

集合中的低文件频率,可以产生出高权重的 TF-IDF 。—因此, TF-IDF倾向於过滤掉常见的词语,保留重要的

词语。

21

Page 22: 文本挖掘(Text mining)基础

TF-IDF 的例子

摘自: http://bit.ly/cbDyIK22

Page 23: 文本挖掘(Text mining)基础

向量空间模型 VSM( Vector Space Model )VSM 的基本思路:用向量模型来标识一篇文档或一个查询?

把文档看作一系列索引词 (Inex Term) 组成,每一个词都有一个权重 (Term weight) ,不同的索引词根据自己在文档中的权重来影响文档相关性的打分计算。

在向量空间模型中可以把所有此文档中词 (term) 的权重(term weight) 看作一个向量,并以此权重向量来表征文档。查询和文档都可转化成索引词及其权重组成的向量

23

Page 24: 文本挖掘(Text mining)基础

文档 -索引词词矩阵 (Doc-Term Matrix)

n 篇文档,m 个索引词词构成的矩阵 Am*n ,每列可以看成每篇文档的向量表示,同时,

每行也可以可以看成标引词的向量表示

24

Page 25: 文本挖掘(Text mining)基础

向量表示

25

Page 26: 文本挖掘(Text mining)基础

相似度计算文档和查询条件之间的相关程度 ( 即相似度 ) 可由它

们各自向量在向量空问中的相对位置来决定。相似度计算函数有很多种,较常用的是两个向量夹角的余弦函数。

文档和查询条件的相似度值由以下公式获得:

dj

q

26

Page 27: 文本挖掘(Text mining)基础

向量相似度算法余弦相似性( cosine-based similarity )

相关相似性( Pearson 相关系数 )

修正的余弦相似性( adjusted-cosine similarity )

2 2

( )( )( , )

( ) ( )

uv

uv uv

ui i ui ii I

ui i vi ii I i I

R R R Rsim u v

R R R R

2 2

( )( )( , )

( ) ( )

uv

uv uv

ui u ui vi I

ui u vi vi I i I

R R R Rsim u v

R R R R

1

2 2

1 1

( , ) cos( , )

n

ui vii

n n

ui vii i

R Ru v

sim u v u vu v

R R

����������������������������

27

Page 28: 文本挖掘(Text mining)基础

文档相似性

其中:—Di 为文档 i

—Wij 是第 i个特征项在第 j个文档向量中的权值

28

Page 29: 文本挖掘(Text mining)基础

Vector Space Model

29

Page 30: 文本挖掘(Text mining)基础

向量空间模型例子

30摘自: http://bit.ly/cbDyIK

Page 31: 文本挖掘(Text mining)基础

Inverted Files

Page 32: 文本挖掘(Text mining)基础

Inverted Files

Page 33: 文本挖掘(Text mining)基础

Word-Level Inverted File

Page 34: 文本挖掘(Text mining)基础

In Lucene, a TermFreqVector is a representation of all of the terms and term counts in a specific Field of a Document instance

As a tuple:

termFreq = <term, term countD>

<fieldName, <…,termFreqi, termFreqi+1,…>>

As Java:

public String getField();

public String[] getTerms();

public int[] getTermFrequencies();

Lucene Term Vectors (TV)

Parallel Arrays

Page 35: 文本挖掘(Text mining)基础

Lucene Term Vectors (TV)

Field.TermVector.NO: 不保存 term vectors

Field.TermVector.YES:保存 term vectors

Field.TermVector.WITH_POSITIONS:保存 term vectors.(保存值和 token位置信息 )

Field.TermVector.WITH_OFFSETS:保存 term vectors.(保存值和 Token的 offset)

Field.TermVector.WITH_POSITIONS_OFFSETS:保存 term vectors.(保存值和 token位置信息和 Token的offset)

35

Page 36: 文本挖掘(Text mining)基础

Lucene Scoring 评分机制

36

Page 37: 文本挖掘(Text mining)基础

Lucene Scoring 评分机制

参考 org.apache.lucene.search.Similarity

http://lucene.apache.org/java/3_0_2/scoring.html

http://bit.ly/bq7xNh

37

Page 38: 文本挖掘(Text mining)基础

Lucene Scoring 核心类图

38

Page 39: 文本挖掘(Text mining)基础

Lucene MoreLikeThisLucene 的 contrib 包中提供了 MoreLikeThis 、

MoreLikeThisQuery 包,很容易实现“您可能也喜欢”的功能—org.apache.lucene.search.similar.MoreLikeThis

—org.apache.lucene.search.similar.MoreLikeThisQuery

参考: http://bit.ly/dpUQAP

String indexDir = "d:/index";

FSDirectory directory = FSDirectory.open(new File(indexDir));

IndexReader reader = IndexReader.open(directory);

IndexSearcher searcher = new IndexSearcher(reader);

int numDocs = reader.maxDoc();

MoreLikeThis mlt = new MoreLikeThis(reader); // #A

mlt.setFieldNames(new String[] {"title", "author"});

mlt.setMinTermFreq(1); // #B

mlt.setMinDocFreq(1)

..

39

Page 40: 文本挖掘(Text mining)基础

Lucene 作为 Linkedin 的推荐引擎 参考: LinkedIn Signal - a look under the hood

40

Page 41: 文本挖掘(Text mining)基础

23/4/13 41

分词:中文特征词 (Term) 的粒度Character ,字:中

Word ,词:中国

Phrase ,短语:中国人民银行

Concept ,概念—同义词:开心 高兴 兴奋—相关词 cluster,word cluster :葛非 /顾俊

N-gram,N 元组:中国 国人 人民 民银 银行

某种规律性模式:比如某个 window 中出现的固定模式

Page 42: 文本挖掘(Text mining)基础

分词:主要的分词方法最大匹配法( Maximum Matching method, MM 法):选取包含 6-8 个汉字的符号串作为最大符号串,把最大符号串与词典中的单词条目相匹配,如果不能匹配,就削掉一个汉字继续匹配,直到在词典中找到相应的单词为止。匹配的方向是从右向左。

逆向最大匹配法( Reverse Maximum method, RMM 法):匹配方向与MM 法相反,是从左向右。实验表明:对于汉语来说,逆向最大匹配法比最大匹配法更有效。

双向匹配法( Bi-direction Matching method, BM 法):比较MM 法与RMM 法的分词结果,从而决定正确的分词。

最佳匹配法( Optimum Matching method, OM 法):将词典中的单词按它们在文本中的出现频度的大小排列,高频度的单词排在前,频度低的单词排在后,从而提高匹配的速度。

联想 -回溯法( Association-Backtracking method, AB 法):采用联想和回溯的机制来进行匹配。

42

Page 43: 文本挖掘(Text mining)基础

43

分词:英文分词 一般采用 keyword,无需分词 , 单词之间有空格分开。 stop words :指文档中出现的连词,介词,冠词等并无太大意义的词。例如

在英文中常用的停用词有 the, a, it 等;在中文中常见的有“是”,“的”,“地”等。

索引词(标引词,关键祠) : 可以用于指代文档内容的预选词语 ,一般为名词或名词词组。

词根提取

—Stemming :将单词“缩减”为词根形式。在算法上 Stemming 主要是采取某种固定的算法来做这种缩减,如去除“ s” ,去除“ ing” 加“ e” ,将“ ational”变为“ ate” ,将 “ tional”变为“ tion” 例如: cars=>car,countries => country, interesting => interest

—Lemmatization :将单词“转变”为词根形式。在算法上Lemmatization 主要是采用保存某种字典的方式做这种转变,例如: 例如: drove=>drive, car=>automobile, ps-2=>PS/2

—参考: http://bit.ly/cgl3Ai

Page 44: 文本挖掘(Text mining)基础

搜索引擎的 Text Mining价值搜索引擎本身对文本的 Vector Space Model、 TF-IDF、

Scroing、 Similarity 等较好的支持

如果能够将协同行为(标签、收藏、购买、打分等)也转化为Vector Space Model ,则也可以利用搜索引擎来实现推荐引擎

搜索引擎技术中最为有趣的不是搜索本身,而是 Text Mining

因此搜索引擎不单纯只是用于“搜索”的引擎,还可以可以作为—Text Mining

—基于内容( Content-Based )的推荐引擎—新闻自动聚合—...

44

Page 45: 文本挖掘(Text mining)基础

议题

搜索引擎文本挖掘基础

文本挖掘基础

45

Page 46: 文本挖掘(Text mining)基础

文本挖掘能做些什么 基于内容的推荐系统( Content-Based )

新闻自动聚合

互联网舆情、非法内容发布

垃圾邮件的过滤

企业竞争情报系统

知识库

自动问答

机器翻译

……

46

Page 47: 文本挖掘(Text mining)基础

文本挖掘模型结构示意图

47

Page 48: 文本挖掘(Text mining)基础

Text Mining 相关技术

48

机器学习 数理统计 自然语言处理 数据库技术

文本分类 文本聚类 文本数据处理 文本数据压缩

信息访问 (信息检索、信息浏览、信息过滤、信息报告 )

知识发现(数据分析、数据预测 )

文本信息提取

Page 49: 文本挖掘(Text mining)基础

文本挖掘的关键技术文本结构分析

文本摘要

文本分类

文本聚类

文本关联分析

分布分析

趋势预测

49

Page 50: 文本挖掘(Text mining)基础

一些 Text Mining 相关的开源项目数据挖掘相关:Weka、 R-Project、 Knime、RapidMiner、Orange 等

文本挖掘相关:OpenNLP、 LingPipe、 FreeLing、GATE 、Carrot2 等,具体可以参考 LingPipe’s Competition

推荐引擎相关: Apache Mahout、Duine framework、Singular Value Decomposition (SVD)

搜索引擎相关:Lucene、Solr、Sphinx、Hibernate Search 等

50

Page 51: 文本挖掘(Text mining)基础

参考资料miislita.com 系列文章(很棒的网站,强烈推荐)

—http://bit.ly/cBOfAy

—http://bit.ly/c1juhi

—http://bit.ly/cbDyIK

—http://bit.ly/cgU0zE

数学之美系列—http://bit.ly/aVOsSd

北大《文本挖掘技术》课程—http://bit.ly/9MaJ2J

LingPipe总结的各种 Text Mining工具—http://bit.ly/bSjEmR

51

Page 52: 文本挖掘(Text mining)基础

52

请提宝贵意见!