Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.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
Python 如何在计数器上使用SklearnClassifier_Python_Scikit Learn_Nltk - Fatal编程技术网

Python 如何在计数器上使用SklearnClassifier

Python 如何在计数器上使用SklearnClassifier,python,scikit-learn,nltk,Python,Scikit Learn,Nltk,我有一些由它们的大图表示的列表,以及它们出现的次数。bigrams来自由所有独特的bigrams组成的词汇表。我想在这个问题上使用SklearnClassifier(SVC) 到目前为止我编写的代码: train_ngrams = [(train_filtered_tweets[i], train_filtered_tweets[i + 1]) for i in range(len(train_filtered_tweets) - 1)] print "Tweets from train

我有一些由它们的大图表示的列表,以及它们出现的次数。bigrams来自由所有独特的bigrams组成的词汇表。我想在这个问题上使用SklearnClassifier(SVC)

到目前为止我编写的代码:

 train_ngrams = [(train_filtered_tweets[i], train_filtered_tweets[i + 1]) for
 i in range(len(train_filtered_tweets) - 1)]
 print "Tweets from train set as bigrams", Counter(train_ngrams)

 classif = SklearnClassifier(BernoulliNB()).train(train_ngrams)
 classify = SklearnClassifier(SVC(), sparse=False).train(Counter(train_ngrams))
 print classify
但我得到了一个错误:

 AttributeError: 'str' object has no attribute 'iteritems'

我想这是因为我的训练图不是特征向量,但我不知道如何做

您的训练数据还需要特定的目标标签。考虑从NLTK中提取的这个例子:

如您所见,目标标签是火腿垃圾邮件。此外,您似乎正在使用
计数器
对象,而API正在查找元组列表,其中包含每个元组中的单词计数字典以及标签。我不知道您为tweet语料库创建了什么目标标签,但我可以告诉您如何为您的语料库生成双克频率词典,假设您的语料库是一个iterable,其中每个元素都是tweet

mybigramlist = []
for tweet in corpus:
    tokens = nltk.word_tokenize(tweet)
    bgs = nltk.bigrams(tokens)  # get the bigrams
    freqs = nltk.FreqDist(bgs)  # this is dictionary of the bigrams with their frequencies in the tweet
    mybigramlist.append(freqs)

现在,您所要做的就是找出您的标签是什么,然后制作符合给定文档结构的最终培训数据。

我尝试过使用它,但我得到的只是一个无回报?你知道为什么吗?你的语料库是推特列表吗。例如,
corpus=[“我们独角鲸中真正的独角兽”,“这是tweet二”,“tweet三是积极情绪!”]
?另外,如果你在看tweet,使用数据集可能会更好,因为数据集只是很多tweet,我正在尝试对类似这样的数据使用分类器;[('1','hello'),('hello','says'),('says','someone'),('someone','country'),('country','fasting')][('2','happy','sad','sad','pythoin','never'),('never','commit')嗯,所以看起来数据中已经生成了bigram。它只需要在字典格式中有bigram的计数。
mybigramlist = []
for tweet in corpus:
    tokens = nltk.word_tokenize(tweet)
    bgs = nltk.bigrams(tokens)  # get the bigrams
    freqs = nltk.FreqDist(bgs)  # this is dictionary of the bigrams with their frequencies in the tweet
    mybigramlist.append(freqs)