我面临机器学习问题。基本上,我试图将一些文本分类为类别(标签),因此这是一种监督分类算法。 我有训练数据,文本及其相应的标签。通过一个单词方法,我设法将每个文本转换为最常出现的单词列表,就像在这张图片中一样: bag of words
如您所见,列表具有不同的大小(因为输入数据的文本有时非常短......)。
现在,我有一个训练数据框,其中包含这些单词列表及其相应的标签。但是,我对如何继续实施我的机器学习算法感到很困惑。如何修改列表以便我可以使用分类器?
我看过一个热门编码,但问题是:
--->例子
INPUT :
L1= ['cat','dog','home','house']
L2=['fish','cat','dog']
输出:
Vector1 = [1,1,1,1,0]
Vector2=[1,1,0,0,1]
另外,仅从这个例子中我想,即使我这样做,结果向量也可能具有非常重要的大小。
我希望这是有道理的,我对机器学习很陌生。但是,我甚至不确定我所做的那些方法真的很有帮助,所以如果你认为我走向了错误的方向,请不要犹豫。 / p>
我使用熊猫和scikit-learn,这是我第一次遇到文字分类问题。
谢谢你的帮助。
答案 0 :(得分:1)
我建议使用NLTK,特别是nltk.classify.naivebayes
。看一下这里的示例:http://www.nltk.org/book_1ed/ch06.html。您需要构建一个特征提取器。我会做类似以下(未经测试的)代码:
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)