Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nlp 如何标准化训练和测试用词包?_Nlp_Nltk - Fatal编程技术网

Nlp 如何标准化训练和测试用词包?

Nlp 如何标准化训练和测试用词包?,nlp,nltk,Nlp,Nltk,我试图根据NLP中的单词袋模型进行分类 使用NLTK(标点符号、停止字删除、小写、词干分析等)对列车数据进行预处理 为列车创建tf idf矩阵 对测试进行预处理 为测试数据创建tf idf矩阵 训练和测试数据有不同的词包,所以特征的数量不同,所以我们不能使用像knn这样的分类算法 我将列车和测试数据合并在一起,并创建了tf idf矩阵。这就解决了上述不同字包的问题。但由此产生的矩阵太大,无法处理 以下是我的问题: 有没有办法为训练和测试创造出准确的词汇包 如果没有,并且我添加训练和测试的方法是正

我试图根据NLP中的单词袋模型进行分类

  • 使用NLTK(标点符号、停止字删除、小写、词干分析等)对列车数据进行预处理
  • 为列车创建tf idf矩阵
  • 对测试进行预处理
  • 为测试数据创建tf idf矩阵
  • 训练和测试数据有不同的词包,所以特征的数量不同,所以我们不能使用像knn这样的分类算法
  • 我将列车和测试数据合并在一起,并创建了tf idf矩阵。这就解决了上述不同字包的问题。但由此产生的矩阵太大,无法处理
  • 以下是我的问题:

  • 有没有办法为训练和测试创造出准确的词汇包
  • 如果没有,并且我添加训练和测试的方法是正确的,我应该使用像LDA这样的降维算法吗
    您可以使用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) 
    

    您可以使用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) 
    

    看这里,看这里,谢谢你。如果我没有弄错的话,这与通过为训练集创建特征码本(使用knn的集群)来训练一包视觉单词的方法是一样的。然后使用相同的代码本预测测试图像的直方图,并将其传递给分类器。谢谢。如果我没有弄错的话,这与通过为训练集创建特征码本(使用knn的集群)来训练一包视觉单词的方法是一样的。然后使用相同的码本预测测试图像的直方图,并将其传递给分类器。