sklearn、nltk、gensim语料输入对比之nltk
来源:互联网 发布:python 符号错误 编辑:程序博客网 时间:2024/06/09 23:16
经过测试,nltk虽然有包装了sklearn的SklearnClassifier,但是还是很局限,我在测试随机森林分类器时就出现了运行错误,因此建议整个流程都使用nltk!
nltk的数据集中每条记录的特征是通过自定义的特征提取方法获得的。每条记录的特征是一个字典对象,每个字典对象元由特征名称和对应的值组成。
例如
def gender_features(word): return {'last_letter':word[-1]}
nltk的数据集是 元素为元组的列表,或者可迭代对象,每一元组的第一元素是特征字典可由gender_features生成,第二元素是一个类标签。
例如:总数据集可以是一个列表
names=([(name,"m") for name in names.words('male.txt')]+[(name,"f") for name in names.words('female.txt')])featuresets=[(gender_features(name),lable) for (name,lable) in names]
至于train_set和test_set也都是元素为元组的列表,或者可迭代对象,他们的划分可根据语料情况进行。
构造分类器:
train_set, test_set= featuresets[500:],featuresets[:500]classifier=nltk.NaiveBayesClassifier.train(train_set)
对测试集分类:classify函数的输入是一个特征字典对象
classifier.classify(test_set[0][0])#测试集准确性print nltk.classify.accuracy(classifier,test_set)
可见nltk的数据比sklearn感觉上更接近原始字符串,不用关心其空间向量化的过程。另外,nltk提供了sklearn分类器的包装类:nltk.classify.scikitlearn module
例:
from sklearn.feature_extraction.text import TfidfTransformerfrom sklearn.feature_selection import SelectKBest, chi2from sklearn.naive_bayes import MultinomialNBfrom sklearn.pipeline import Pipelinepipeline = Pipeline([('tfidf', TfidfTransformer()),... ('chi2', SelectKBest(chi2, k=1000)),... ('nb', MultinomialNB())])classif = SklearnClassifier(pipeline)
源码地址:http://www.nltk.org/_modules/nltk/classify/scikitlearn.html#SklearnClassifier
这个包装类使得nltk可以接受nltk的数据输入格式而使用sklearn中的分类器。
对于nltk来说,如果关键是写特征提取函数,然而对于常见的词袋模型,特征提取函数并不好写。
0 0
- sklearn、nltk、gensim语料输入对比之nltk
- sklearn、nltk、gensim语料输入对比之sklearn
- NLTK vs Sklearn vs Gensim
- nltk 获取 gutenberg 语料,gensim 生成词库和 onehot 编码
- NLTK
- nltk
- nltk.获得文本语料和词汇资源
- 文本相似性工具安装 (python ,nltk , gensim)
- NLTK之WordNet 接口
- python nltk 统计语料的词性标注分布
- NLTK 2 获得文本语料和词汇资源
- NLTK学习笔记(二):文本、语料资源和WordNet汇总
- NLTK学习笔记(二):文本、语料资源和WordNet汇总
- 终于在pycharm下(Python3.6.1版本)安装完成机器学习相关库文件(sklearn scikit-learn gensim xgboost tensorflow nltk )
- nlp的相关资源文档,nltk,pynlp,nlpir,gensim
- 2.NLTK之文本语料库
- python之nltk基础用法
- 安装NLTK
- 读书笔记之linux/unix系统编程手册(26)
- 数据结构与算法-插入排序
- hadoop -- setup and configuration
- noip2001 最大公约数和最小公倍数问题 (质因数分解)
- java中<<,>>和>>>
- sklearn、nltk、gensim语料输入对比之nltk
- 黑马程序员——集合(三)Map和枚举,Conllections工具类
- 数据结构与算法-快速排序
- MongoDB学习七--MongoDB高级操作
- UIScrollView添加控件,控件距离顶部始终有间距的问题
- [leetcode-230]Kth Smallest Element in a BST(java)
- Linux系统下buffer内存与cache内存的区别
- Java程序员面试中的多线程问题
- 数据结构与算法-归并排序