Python 基于词袋的文本分类

Python 基于词袋的文本分类,python,machine-learning,text-classification,one-hot-encoding,Python,Machine Learning,Text Classification,One Hot Encoding,我面临一个机器学习问题。基本上,我试图将一些文本分类为类别(标签),所以这是一个有监督的分类算法。 我有培训数据,有文本和相应的标签。通过单词袋方法,我成功地将每个文本转换为最常见的单词列表,如下图所示: 如您所见,列表有不同的大小(因为输入数据中的文本有时很短…) 现在,我有了一个训练数据框,里面有这些单词列表和相应的标签。然而,我对下一步如何实现我的机器学习算法感到困惑。如何修改列表以便使用分类器 我已经研究了一种热编码,但这里的问题是: 每个列表的不同大小以及列表中每个单词的随机位置

我面临一个机器学习问题。基本上,我试图将一些文本分类为类别(标签),所以这是一个有监督的分类算法。 我有培训数据,有文本和相应的标签。通过单词袋方法,我成功地将每个文本转换为最常见的单词列表,如下图所示:

如您所见,列表有不同的大小(因为输入数据中的文本有时很短…)

现在,我有了一个训练数据框,里面有这些单词列表和相应的标签。然而,我对下一步如何实现我的机器学习算法感到困惑。如何修改列表以便使用分类器

我已经研究了一种热编码,但这里的问题是:

  • 每个列表的不同大小以及列表中每个单词的随机位置
  • 如何将一个列表编码为另一个列表中可能出现的0
--->范例

输入

L1= ['cat','dog','home','house']

L2=['fish','cat','dog']
输出

Vector1 = [1,1,1,1,0]
Vector2=[1,1,0,0,1]
同样,从这个例子中我可以想象,即使我这样做了,得到的向量可能有一个非常重要的大小

我希望这是有意义的,我对机器学习还很陌生。然而,我甚至不确定我所做的“语言袋”方法是否真的有用,所以如果你认为我走错了方向,请不要犹豫告诉我

我正在使用pandas和scikit学习,这是我第一次遇到文本分类问题


谢谢你的帮助。

我建议使用NLTK,特别是
NLTK.classify.naivebayes
。请看下面的示例:。您将需要构建一个功能提取器。我将执行以下(未测试)代码:


您在示例中看到的与您想要的非常相似。弓模型的问题是它们非常稀疏。您可能有一个大小为50000的向量来表示一个只有5个单词的句子。这是我们从scikit中了解和了解scikit的动机之一。下面是我的答案,描述了您想要应用的用例:-事实上,您的示例准确地描述了我想要做的事情,现在我已经设法将我的单词列表转换成向量。我将尝试使用这些新向量。非常感谢。而且总功能的数量并没有那么多,所以我想我的电脑将能够处理它。
from nltk.classify import NaiveBayesClassifier

def word_feats(words):
    return dict([(word.lower(), True) for word in words])

train_data = [ (word_feats(L1), 'label1'), (word_feats(L2), 'label2') ]

classifier = NaiveBayesClassifier.train(train_data)

test_data = ["foo"]

classifier.classify(test_data)