sklearn,nltk,gensim語料入力対比のnltk


テストの結果、nltkにはsklearnをパッケージしたSklearnClassifierがありましたが、まだ限界があり、ランダム森林分類器のテスト中に実行エラーが発生したので、プロセス全体でnltkを使用することをお勧めします!
nltkのデータセットの各レコードの特徴は,カスタム特徴抽出法により得られる.各レコードのフィーチャーは、フィーチャー名と対応する値からなる辞書オブジェクトです.
たとえば
def gender_features(word):
    return {'last_letter':word[-1]}

nltkのデータセットは、要素がメタグループであるリスト、または反復可能なオブジェクトであり、各メタグループの第1の要素は、特徴辞書がgender_Featuresは生成され、第2の要素はクラスラベルです.たとえば、データセット全体をリストにすることができます.
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 TfidfTransformer
from sklearn.feature_selection import SelectKBest, chi2
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
pipeline = Pipeline([('tfidf', TfidfTransformer()),
...                      ('chi2', SelectKBest(chi2, k=1000)),
...                      ('nb', MultinomialNB())])
classif = SklearnClassifier(pipeline)

ソースアドレス:http://www.nltk.org/_modules/nltk/classify/scikitlearn.html#SklearnClassifierこのパッケージクラスにより、nltkは、sklearnの分類器を使用して、nltkのデータ入力フォーマットを受け入れることができる.
nltkでは,特徴抽出関数を書くことが肝心であるが,一般的な語袋モデルでは特徴抽出関数は書きにくい.