3

映画のレビュー データで分類子を実行しようとしています。データは既に と に分離されていreviews_train.txtますreviews_test.txt。次に、データを読み込み、それぞれをレビューとラベル (ポジティブ (0) またはネガティブ (1) のいずれか) に分離し、このデータをベクトル化しました。これが私のコードです:

from sklearn import tree
from sklearn.metrics import accuracy_score
from sklearn.feature_extraction.text import TfidfVectorizer
#read the reviews and their polarities from a given file

def loadData(fname):
    reviews=[]
    labels=[]
    f=open(fname)
    for line in f:
        review,rating=line.strip().split('\t')  
        reviews.append(review.lower())    
        labels.append(int(rating))
    f.close()

    return reviews,labels

rev_train,labels_train=loadData('reviews_train.txt')
rev_test,labels_test=loadData('reviews_test.txt')

#vectorizing the input
vectorizer = TfidfVectorizer(ngram_range=(1,2))
vectors_train = vectorizer.fit_transform(rev_train)
vectors_test = vectorizer.fit_transform(rev_test)

clf = tree.DecisionTreeClassifier()
clf = clf.fit(vectors_train, labels_train)

#prediction
pred=clf.predict(vectors_test)
#print accuracy

print (accuracy_score(pred,labels_test))

ただし、このエラーが発生し続けます:

ValueError: Number of features of the model must match the input.
Model n_features is 118686 and input n_features is 34169 

私は Python にかなり慣れていないので、これが簡単な修正である場合は事前にお詫び申し上げます。

4

1 に答える 1