网络信息检索(九)文本分类与文本聚类

文章目录

  • 一、文本分类和聚类概述
    • 1:文本分类概述
    • 2:文本聚类概述
  • 二、文本分类
    • 1:分类的学习算法
    • 2:使用相关反馈(Rocchio)
    • 3:最近邻学习算法
    • 4:贝叶斯理论
  • 三、文本聚类
    • 1:K-Means

一、文本分类和聚类概述

1:文本分类概述


文本分类的定义 \color{red}\textbf{文本分类的定义} 文本分类的定义

  • 文本分类(Text Categorization/Classification):事先给定分类体系和训练样例(标注好类别信息的文本),将文本分到某个或者某几个类别中
  • 分类是有监督/指导学习(Supervised Learning)的一种

文本分类在信息检索中的应用 \color{red}\textbf{文本分类在信息检索中的应用} 文本分类在信息检索中的应用
网络信息检索(九)文本分类与文本聚类_第1张图片


新闻分类 \color{red}\textbf{新闻分类} 新闻分类
网络信息检索(九)文本分类与文本聚类_第2张图片


情感分类 \color{red}\textbf{情感分类} 情感分类

  • 博客、评论和论坛有很多不同的观点发布
  • 情感分析:自动对观点的极性进行分类:
     正面(Positive)、中性(Neutral)、负面(Negative)
     有时强度也是很重要的: Weakly negative、strongly negative
  • 有用的特征
     单字词(Unigrams),双字词( Bigrams)
     词性标注
     形容词

2:文本聚类概述


文本聚类的定义 \color{red}\textbf{文本聚类的定义} 文本聚类的定义

  • 聚类是一个无督导的学习过程,它是指根据样本之间的某种距离在无监督( unsupervised )条件下的聚簇过程。
  • 利用聚类方法可以把大量的文档划分成用户可迅速理解的簇(cluster),从而使用户可以更快地把握大量文档中所包含的内容,加快分析速度并辅助决策
  • 大规模文档聚类是解决海量文本中数据理解和信息挖掘的有效解决手段之一

文本聚类在信息检索中的应用 \color{red}\textbf{文本聚类在信息检索中的应用} 文本聚类在信息检索中的应用

  • 检索结果的聚类显示
    检索结果聚类,以便用户浏览
  • 提高检索结果
    查询扩展:局部聚类,全局聚类
    提高查全率:例如查询 “car”可能可以返回包含automobile的文档
    加快检索速度:可以只在聚类文档中查找,可能不是很精确,但避免了大量相似计算

词汇聚类 \color{red}\textbf{词汇聚类} 词汇聚类
网络信息检索(九)文本分类与文本聚类_第3张图片


检索结果聚类 \color{red}\textbf{检索结果聚类} 检索结果聚类
按主题聚合检索结果,输入查询词可以找到各个领域的相关查询结果。但是现在的商用搜索引擎基本不提供这个功能,因为聚类很难预计算,必须在线计算,必须要根据搜索的结果进行聚类,在数据量大的情况下非常耗时。
网络信息检索(九)文本分类与文本聚类_第4张图片

二、文本分类

1:分类的学习算法

  • 一个训练例子(training example)是一个实例 x ∈ X x∈X xX以及正确的类别 c ( x ) c(x) c(x)的值对: < x , c ( x ) > <x,c(x)> c c c是一个未知的分类函数
  • 给定一些训练例子 D,试图找到一个分类函数h(x),使得:
    ∀ < x , c ( x ) > ∈ D : h ( x ) = c ( x ) ∀ < x,c(x) >∈ D : h(x) = c(x) <x,c(x)>D:h(x)=c(x)

学习方法 \color{red}\textbf{学习方法} 学习方法

  • 人工寻找文本分类的函数是非常困难的
  • 机器学习(Machine Learning )算法:
    相关反馈(Rocchio)
    朴素贝叶斯(Naïve Bayesian)
    最近邻(Nearest Neighbor,KNN)
    神经网络(Neural Network,NN)
    支持向量机(Support Vector Machines ,SVM)
    决策树(Decision Tree, DT)

自动分类的一般过程 \color{red}\textbf{自动分类的一般过程} 自动分类的一般过程
网络信息检索(九)文本分类与文本聚类_第5张图片

2:使用相关反馈(Rocchio)

  • 相关反馈方法可以用于文本分类
  • 用标准的归一化TF/IDF权重向量表示文本文档(依旧是向量空间模型
  • 对每个类别,通过对计算类别中的训练文档的矢量求和得到一个类向量(prototype vector),或称原型向量
  • 基于cosine相似度,如果测试(test)文档与某个类向量最近,则赋予该文档到此类别

Rocchio的性质 \color{red}\textbf{Rocchio的性质} Rocchio的性质

  • 对每个类别构建一个类向量
  • 类矢量无需归一化因为cosine相似度对长度不敏感
  • 分类是基于与类向量的相似度
  • 在多态类(polymorphic/disjunctive categories)的情形下,类向量模型可能有问题(有很多类,类和类的差距又不大)

3:最近邻学习算法

  • 学习过程很简单,只是存储D中训练样本的表达式
  • 对于测试实例x:
    计算x 和D中所有测试实例的相似度
    如果某个类别包含那个最相似的实例,则 x 属于该类
  • 也称为:
    基于事例(Case-based)的方法
    基于内存(Memory-based)的方法
    懒惰学习(Lazy learning)方法

K个近邻(Nearest-Neighbor) \color{red}\textbf{K个近邻(Nearest-Neighbor)} K个近邻(Nearest-Neighbor

  • 只用最近的实例来决定类别可能会导致错误:
    最近的实例可能只是一个非典型的例子
    可能只是噪音导致的标注错误
  • 更鲁棒性的选择是找 k 个最相似的实例,看哪个类包含的最多, k 的值要设为奇数, 一般取3或5

相似测度 \color{red}\textbf{相似测度} 相似测度

  • 最近邻方法依赖于所采用的相似测度(similarity metric),如
    欧拉距离(Euclidian distance ) 汉明距离(Hamming distance )
  • 对于文本分类TF-IDF 权重向量的余弦相似度通常是最有效的

4:贝叶斯理论

  • 基于概率理论的学习和分类方法
  • 每个类别的先验概率(prior probability) 没有任何关于实例的信息
  • 分类就是要基于实例的描述生成关于可能类别的后验概率(posterior probability)分布
    P ( H ∣ E ) = P ( E ∣ H ) P ( H ) P ( E ) P(H|E)=\frac{P(E|H)P(H)}{P(E)} P(HE)=P(E)P(EH)P(H)

贝叶斯分类 \color{red}\textbf{贝叶斯分类} 贝叶斯分类

  • 类别集合: c 1 , c 2 , … c n {c1, c2,…cn} c1,c2,cn
  • E 是实例的描述
  • 决定E的类别依赖于对每个 c i ci ci每个计算
    P ( c i ∣ E ) = P ( c i ) P ( E ∣ c i ) P ( E ) P(c_i|E)=\frac{P(c_i)P(E|c_i)}{P(E)} P(ciE)=P(E)P(ci)P(Eci)
  • 由于类别是完全而且不相交(disjoint)的
    ∑ i = 1 n P ( c i ∣ E ) = 1 ; P ( E ) = ∑ i = 1 n P ( c i ) P ( E ∣ c i ) \sum_{i=1}^nP(c_i|E)=1;P(E)=\sum_{i=1}^nP(c_i)P(E|c_i) i=1nP(ciE)=1;P(E)=i=1nP(ci)P(Eci)
  • 需要知道 先验概率: P ( c i ) P(c_i) P(ci);条件概率: P ( E ∣ c i ) P(E|c_i) P(Eci)
  • P ( c i ) P(ci) P(ci)可以从训练数据中估计:最简单的就是根据类别样本的数目进行估计
    如果类型 c i ci ci包含 D D D中的 n i ni ni 个实例,则 P ( c i ) = n i / ∣ D ∣ P(ci) = ni / |D| P(ci)=ni/D
  • 实例是由一些不相交的特征来描述的: E = e 1 ∧ e 2 ∧ . . . ∧ e m E=e_1∧e_2∧...∧e_m E=e1e2...em
  • 如果假设实例的特征在给定类别 c i ci ci下是独立的(条件独立),则
    P ( E ∣ c i ) = P ( e 1 ∧ e 2 . . . ∧ e m ∣ c i ) = ∏ j = 1 m P ( e j ∣ c i ) P(E|c_i)=P( e_1∧e_2...∧e_m|c_i)=\prod_{j=1}^mP(e_j|c_i) P(Eci)=P(e1e2...emci)=j=1mP(ejci)
  • 因此,对于每个特征和类别,我们只要知道 P ( e j ∣ c i ) P(e_j| c_i) P(ejci)

文本分类中的概率估计 \color{red}\textbf{文本分类中的概率估计} 文本分类中的概率估计

网络信息检索(九)文本分类与文本聚类_第6张图片


平滑 \color{red}\textbf{平滑} 平滑

  • 考虑到小样本集的估计问题,通常要采用平滑技术
  • Laplace平滑:假设每个特征有一个先验概率p,采用m-估计( m-estimate)
    P ( w j ∣ c i ) = n i j + m p n j + m P(w_j|c_i)=\frac{n_{ij}+mp}{n_j+m} P(wjci)=nj+mnij+mp

如果没有任何先验知识p = 1/|V|,m = |V|

三、文本聚类

  • 层次方法(Hierarchical Methods)
     凝聚算法(Agglomerative Algorithms):自底向上( Bottom-up )
    分裂算法(Divisive Algorithms):至上而下( Top-down )

  • 划分方法(Partitioning Methods)
    K-中心点算法(K-medoidsMethods)
    K-平均算法(K-means Methods)

1:K-Means

  • 将n个文档分到K个簇
  • 给定:一系列文档和数字K
  • 文档被表示为实值向量,计算一个簇 ω的质心( centroids ):(显然对文档而言这里需要归一化,将所有向量归一化到同一维度)
    μ ( ω ) = 1 ∣ ω ∣ ∑ x ∈ ω x \mu(\omega)=\frac{1}{|\omega|}\sum_{x\in\omega}x μ(ω)=ω1xωx
  • 视实例与当前簇的质心的距离来分配文档到各个簇
    网络信息检索(九)文本分类与文本聚类_第7张图片

算法流程 \color{red}\textbf{算法流程} 算法流程

  1. Step1:初始化k个簇中心;
  2. Step2:对于每个文档向量,计算该文档向量与k个类中心的距离,选择距离最小(相似度最大)的簇将该文档分入该簇;
  3. Step3:重新计算k个簇的中心,中心为该簇内所有点的算术平均。
  4. Step4:如果簇变化不大或者满足某种退出条件(达到最大迭代次数、满足某种目标函数等),那么结束聚类,否则返回Step2

你可能感兴趣的:(网络信息检索)