Python自然语言处理笔记【一】文本分类之监督式分类
一、分类问题
分类是为了给那些已经给定的输入选择正确的标签。
在基本的分类任务中,每个输入都被认为与其他的输入是隔离的。每个类别的标签集是预先定义好的(只有把类别划分好了,才能给输入划分类别)。
分类任务举例:
- 判断电子是否是垃圾邮件
- 从一个固定的主题领域列表里,比如有‘体育’、‘技术’、‘政治’等,来判断新闻报道的主题
- 判断给定词‘bank’的意思是指河的坡岸、金融机构、还是金融机构里的存储行为
基本分类任务:
- 多样分类:每个实例可以分配多个标签
- 开放性分类:标签集没有事先定义
- 序列分类:输入链表作为整体分类
建立在训练语料(包含了每个输入的正确标签)基础之上的分类,叫做监督式分类。
二、监督式分类
( a )在训练过程(Training)中,特征提取器(feature extractor)用来将每一个输入值(input)转换为特征集(features)。 这些特征集捕捉每个输入中应被用于对其分类的基本信息 。特征 集与标签(label)的配对被送入机器学习算法(machine learning algorithm) ,生成模型(classifier model) 。
( b )在预测过程(Prediction)中 ,相同的特征提取器被用来将未见过的输入转换为特征集。之后,这些特征集被送入模型产生预测标签。
三、分类实例(创建一个分类器)——性别鉴定
step1:决定哪些输入特征是相关的,并为这些特征编码。书中例子是通过判断名字最后一个字母,来推测性别,所以特征就在最后一个字母上。
>>> def gender_features(word):
... return {'last_letter': word[-1]}
>>> gender_features('Shrek')
{'last_letter': 'k'}
step2:利用特征提取器函数建立特征集(字典类型,关于特征名称和它们对应值的映射)
>>> from nltk.corpus import names
>>> import random
>>> names = ([(name, 'male') for name in names.words('male.txt')] +
... [(name, 'female') for name in names.words('female.txt')])
>>> random.shuffle(names)
step3:用特征提取器处理数据(文中用的是names数据),并把特征集的结果链表,划分为训练集和测试集。(训练集用于训练新的朴素贝叶斯分类器)
>>> featuresets = [(gender_features(n), g) for (n,g) in names]
>>> train_set, test_set = featuresets[500:], featuresets[:500]
>>> classifier = nltk.NaiveBayesClassifier.train(train_set)
step4:测试,检查
#利用大量未见过的数据来评估这个分类器
>>> print nltk.classify.accuracy(classifier, test_set)
#检查分类器,确定哪些特征对于区分名字的性别是最有效的。
>>> classifier.show_most_informative_features(5)
Python自然语言处理笔记【一】文本分类之监督式分类的更多相关文章
- Python自然语言处理笔记【二】文本分类之监督式分类的细节问题
一.选择正确的特征 1.建立分类器的工作中如何选择相关特征,并且为其编码来表示这些特征是首要问题. 2.特征提取,要避免过拟合或者欠拟合 过拟合,是提供的特征太多,使得算法高度依赖训练数据的特性,而对 ...
- Python 自然语言处理笔记(一)
一. NLTK的几个常用函数 1. Concordance 实例如下: >>> text1.concordance("monstrous") Displaying ...
- 《Python自然语言处理》
<Python自然语言处理> 基本信息 作者: (美)Steven Bird Ewan Klein Edward Loper 出版社:人民邮电出版社 ISBN:97871153 ...
- Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果
Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果 一.详细说明及代码 tc.py =============================================== ...
- python自然语言处理学习笔记1
1.搭建环境 下载anaconda并安装,(其自带python2.7和一些常用包,NumPy,Matplotlib),第一次启动使用spyder 2.下载nltk import nltk nltk.d ...
- Python自然语言处理工具小结
Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...
- python核心编程--笔记
python核心编程--笔记 的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找pyt ...
- Python人工智能学习笔记
Python教程 Python 教程 Python 简介 Python 环境搭建 Python 中文编码 Python 基础语法 Python 变量类型 Python 运算符 Python 条件语句 ...
- 转-Python自然语言处理入门
Python自然语言处理入门 原文链接:http://python.jobbole.com/85094/ 分享到:20 本文由 伯乐在线 - Ree Ray 翻译,renlytime 校稿.未经许 ...
随机推荐
- java相对路径、绝对路径及类路径
import java.io.File; import java.net.URL; /** * java相对路径.绝对路径及类路径的测试 */ public class Test { /** * 测试 ...
- Win10 高分屏软件界面字体模糊问题解决
只需要将自定义缩放值改为 124% 即可
- Spring的事务管理基础知识
1.数据库事务基础知识 1)数据库事务有严格的定义,它必须同时满足4个特性:原子性(Atomic).一致性(Consistency).隔离性(Isolation)和持久性(Durability ...
- git 创建新分支并推送到远程分支
git branch test git checkout test git push origin test:test git branch --set-upstream-to origin/te ...
- cf 1114E
为什么这道题我到现在才写题解... 题解: 因为是随机题吗,,好像对于我来说还是很新颖的,就写一下. rand()的范围是到32768?这个以前踩过坑 #include <bits/stdc++ ...
- Java的Unsafe类
该类在包外不给用,原理是在获取实例的时候判断加载器是否为系统加载器,如果不是抛出安全异常 @CallerSensitive public static Unsafe getUnsafe() { Cla ...
- 移动端click事件
var tap = "ontouchstart" in document.documentElement ? "touchend" : "click& ...
- ThreadPool study
线程池浅析 线程池顾名思义就是放线程的池子 Thread Pool. 那么为什么要有线程池呢?有些时候系统需要处理非常多的执行时间很短的请求,如果每一个请求都开启一个新的线程,则系统创建销毁线程的开销 ...
- Luogu 1177 - 【模板】快速排序 - [快速排序][归并排序][无旋Treap]
题目链接:https://www.luogu.org/problemnew/show/P1177 题意:输入 $n$ 以及后续 $n$ 个整数,让你将这 $n$ 个整数从小到大排序输出. 归并排序(用 ...
- sql server实例内存使用统计
转载于: http://blog.csdn.net/shutao917/article/details/51444424 SQL SERVER内存按存放数据的类型,大概可以分为三类: 1.buffer ...