哦,那可不是普通的兔子。
caerbannog的Python项目详细描述
卡尔班诺兔
Well, that’s no ordinary rabbit - that’s the most foul, cruel, and bad-tempered rodent you ever set eyes on!
—Tim the Enchanter
该模块是vowpal wabbit机器学习系统的高级接口。目前它依赖于 wabbit_wappa模块用于较低级别的交互,但努力提供更高级别的面向对象接口。
目前有三种兔子可以从Caerbanlog导入:
兔子
电影评论感想-与Caerbannog一起进行主动学习演示
在此处导入相关模块。我们用活动兔子 在线学习
fromcaerbannogimportActiveRabbit,Examplefromitertoolsimportisliceimportrandomimportnltkfromnltk.corpusimportmovie_reviews
创造一只活跃的兔子,活跃的圆润度为0.01
rabbit=ActiveRabbit(loss_function='logistic',active_mellowness=0.01)rabbit.start()
从nltk电影评论语料库中加载文档(注意,您需要 首先通过nltk.download()下载这些文件。对于每个文档,创建一个元组 (文档字,类别)其中类别是“pos”或“neg”,并且 文档单词是来自标记器的单词列表。
documents=[(list(movie_reviews.words(fileid)),category)forcategoryinmovie_reviews.categories()forfileidinmovie_reviews.fileids(category)]random.shuffle(documents)len(documents)
2000
特征提取函数。首先过滤掉所有 非字母数字。然后让“w”名称空间包含所有单词 在复习中,“n”由2-4个单词组成。
defdocument_features(document_words):document_words=list(filter(str.isalnum,document_words))example=Example()example['w'].add_features(set(document_words))ngrams=set()forjinrange(2,5):ngrams.update('_'.join(i)foriinnltk.ngrams(document_words,j))example['n'].add_features(ngrams)returnexample
Wabbit希望logistic二进制的标签为-1和1 分类器
defconvert_sent(sent):return{'pos':1,'neg':-1}[sent]
转换情感值并提取特征。
examples=[(convert_sent(sent),document_features(doc))for(doc,sent)indocuments]
培训1500个第一个示例,并保留其余示例 验证
teach,test=examples[:1500],examples[1500:]
设定过滤器。我们要求对每个例子进行预测;如果 重要的是我们“标记”这个例子并教给 分类器。我们重复分类40次,以确保 分类器已经足够调整权重了。
taught=0predicted=0labelled=set()foriinrange(10):forsent,exinteach:predicted+=1ifrabbit.predict(example=ex).importance>=1:rabbit.teach(label=sent,example=ex)taught+=1labelled.add(ex)print("Predicted {}, taught {} (ratio {}). {} unique inputs labelled".format(predicted,taught,taught/predicted,len(labelled)))
Predicted 15000, taught 1057 (ratio 0.07046666666666666). 1042 unique inputs labelled
使用测试集进行测试。对于每个正确标记的示例,增加 计数器
correct=0forsent,exintest:prediction=rabbit.predict(example=ex)ifprediction.label==sent:correct+=1print("{} inputs predicted. {} correct; ratio {}".format(len(test),correct,correct/len(test)))
500 inputs predicted. 418 correct; ratio 0.836
许可证
麻省理工学院执照。