如何标准化培训和测试的文字袋?

时间:2017-07-07 19:59:16

标签: nlp nltk

我正在尝试根据NLP的词袋模型进行分类。

  1. 使用NLTK(标点符号,删除单词,小写,词干等)对列车数据进行预处理。
  2. 为火车创建了tf-idf矩阵。
  3. 是否进行了预处理测试。
  4. 为测试数据创建了tf-idf矩阵。
  5. 火车和测试数据有不同的词组,因此功能的不同,所以我们不能使用像knn这样的分类算法。
  6. 我将列车和测试数据合并在一起并创建了tf-idf矩阵。这解决了上述不同词语的问题。但是由此产生的矩阵太大而无法处理。
  7. 以下是我的问题:

    1. 有没有办法为火车和考试创建一整套文字?
    2. 如果没有,我的添加训练和测试的方法是正确的,我应该像LDA一样去降维吗?

1 个答案:

答案 0 :(得分:2)

您可以使用scikit learn的计数向量化工具首先为文档中的给定单词创建向量,使用它来训练您选择的分类器,然后使用分类器来测试您的数据。

对于训练集,您可以使用矢量化器训练数据,如下所示:

 LabeledWords=pd.DataFrame(columns=['word','label'])

 LabeledWords.append({'word':'Church','label':'Religion'} )

 vectorizer = CountVectorizer()

 Xtrain,yTrain=vectorizer.fit_transform(LabeledWords['word']).toarray(),vectorizer.fit_transform(LabeledWords['label']).toarray()

然后,您可以使用上面的矢量化器训练您选择的分类器:

forest = RandomForestClassifier(n_estimators = 100) 
clf=forest.fit(Xtrain,yTrain)

为了测试您的数据:

for each_word,label in Preprocessed_list:
    test_featuresX.append(vectorizer.transform(each_word),toarray())
    test_featuresY.append(label.toarray())
clf.score(test_featuresX,test_featuresY)