如果使用scikit
模块进行自然语言处理的话,python最好安装32位的,这可以跟后面使用的 模块配套。
更为重要的是,一旦你的数据量比较大的时候,可能出现系统内存不够MemoryError
的情况,这个时候你就
需要使用64位系统,就像我现在做的工作一样。类似的问题:Python MemoryError when doing fitting with Scikit-learn 为了使用64位系统,又得重新安装整个处理的环境
1. pip
命令的安装
现在使用的python3.5
版本已经安装了pip
(估计以后的版本都带了),就可以直接在cmd
中使用了,不需要 使用了,下面的内容留给需要的人看。
很简单的操作,很推荐:Install pip, setuptools, and wheel
1.下载get-pip.py
2.python get-pip.py
3.安装完成
2. 安装nltk、numpy、scipy和scikit_learn
多次的安装经验告诉我,nltk
和 numpy
可以直接pip install 安装:
在cmd中输入
pip install numpy
(以后的命令都是在cmd中运行)
在Unofficial Windows Binaries for Python Extension Packages 上下载配套的scipy
和 scikit_learn
的whl 文件
通过以下的方式查询scipy
和 scikit_learn
的版本信息:
在python IDE中输入:
>>>import pip
>>>print(pip.pep425tags.get_supported())
[('cp35', 'cp35m', 'win32'), ('cp35', 'none', 'win32'), ('py3', 'none', 'win32'), ('cp35', 'none', 'any'), ('cp3', 'none', 'any'), ('py35', 'none', 'any'), ('py3', 'none', 'any'), ('py34', 'none', 'any'), ('py33', 'none', 'any'), ('py32', 'none', 'any'), ('py31', 'none', 'any'), ('py30', 'none', 'any')]
这样就知道scipy
和 scikit_learn
都是下载cp35-cp35m-win32
版本的
下载好这两个文件后,cd 进入文件目录,在cmd中输入:
pip install scipy-*.whl(输入scipy后,按tab键,可以自动补全文件名称)
安装scipy
同样的方式安装scikit_learn
备注: 一般的安装顺序就是nltk -> numpy -> scipy -> scikit_learn
3. 测试安装
在python IDE中输入:
import nltk
import numpy
import scipy
来分别测试 nltk 、 numpy 和 scipy 是否安装成功
from nltk.classify.scikitlearn import SklearnClassifier
from sklearn.naive_bayes import MultinomialNB
来测试 scikit_learn 是否安装成功
在windows 64位上安装 nltk ,安装scikit 就可以方便的测试各种分类器的性能了。到此,python自然环境
处理的环境的搭建就告一段落,以往后面的实验环节顺利!
更新(python MemoryError 问题的解决)
可能问题:将多个分类器的train() 方法放在了一起了。
解决方法:让每个分类器训练完后,直接给出准确度之后,再去进行其他分类器的训练。
例如:
MNB_classifier = SklearnClassifier(MultinomialNB())
BNB_classifier = SklearnClassifier(BernoulliNB())
MNB_classifier.train(train_set)
BNB_classifier.train(train_set)
print("MultinomialNB accuracy percent:",nltk.classify.accuracy(MNB_classifier, test_set))
print("BernoulliNB accuracy percent:",nltk.classify.accuracy(BNB_classifier, test_set))
修改为:
MNB_classifier = SklearnClassifier(MultinomialNB())
MNB_classifier.train(train_set)
print("MultinomialNB accuracy percent:",nltk.classify.accuracy(MNB_classifier, test_set))
BNB_classifier = SklearnClassifier(BernoulliNB())
BNB_classifier.train(train_set)
print("BernoulliNB accuracy percent:",nltk.classify.accuracy(BNB_classifier, test_set))
这样做之后MemoryError 的确没有了。