自然语言处理(3)——可用于自动生成分类模型的机器学习方法

可用于自动生成分类模型的三种机器学习方法:决策树、朴素贝叶斯分类器和最大熵分类器。

#决策树
"""
决策树可以自动地构建树结构的流程图,用于为输入变量值基于它们的特征加标签,虽
然它们易于解释,但不适合处理特性值在决定合适标签过程中相互影响的情况。
"""

#朴素贝叶斯模型(生成式)
"""
在朴素贝叶斯分类器中,每个特征都得到发言权,来确定哪个标签应该被分配到一个给
定的输入值。为一个输入值选择标签,朴素贝叶斯分类器以计算每个标签的先验概率开始,
它由在训练集上检查每个标签的频率来确定。之后,每个特征的贡献与它的先验概率组合,
得到每个标签的似然估计。似然估计最高的标签会分配给输入值
"""
# 最大熵模型(条件式)
"""
相比之下,最大熵分类器模型留给用户来决定什么样的标签和特征组合应该得到自己的
参数。特别的,它可以使用一个单独的参数关联一个特征与一个以上的标签;或者关联一个
以上的特征与一个给定的标签。这有时会允许模型“概括”相关的标签或特征之间的一些差
异。
每个接收它自己的参数的标签和特征的组合被称为一个联合特征。
最大熵分类器使用的基本模型与朴素贝叶斯相似;不过,它们使用了迭代优化来寻找使
训练集的概率最大化的特征权值集合。
"""

# 语言模式建模
"""
大多数从语料库自动构建的模型都是描述性的,也就是说,它们让我们知道哪些特征与
给定的模式或结构相关,但它们没有给出关于这些特征和模式之间的因果关系的任何信
息。
"""

计算熵

# 计算标签链表的熵
import math
def entropy(labels):
	freqdist=nltk.FreqDist(labels)
	probs=[freqdist.freq(l) for l in nltk.FreqDist(labels)] #l表示labels,即熵被定义为每个标签的概率乘以那个标
															#签的log 概率的总和
	return -sum([p*math.log(p,2) for p in probs])
	

 

你可能感兴趣的:(自然语言处理,python)