fasttext初步使用
转载自:
http://blog.csdn.net/lxg0807/article/details/52960072#comments
训练数据和测试数据来自网盘:
https://pan.baidu.com/s/1jH7wyOY
https://pan.baidu.com/s/1slGlPgx
训练以上数据
# _*_coding:utf-8 _*_
import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
import fasttext
#训练模型
classifier = fasttext.supervised("news_fasttext_train.txt","news_fasttext.model",label_prefix="__label__")
进行测试:
# -*- coding:utf-8 -*-import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
import fasttext#load训练好的模型
classifier = fasttext.load_model('news_fasttext.model.bin', label_prefix='__label__')
result = classifier.test("news_fasttext_test.txt")
print result.precision
print result.recall
注意每次训练的模型都有不同,所以测试的结果大概是0.87~0.92左右
进行最终评价:
# -*- coding:utf-8 -*-import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
import fasttext#load训练好的模型
classifier = fasttext.load_model('news_fasttext.model.bin', label_prefix='__label__')
result = classifier.test("news_fasttext_test.txt")
print result.precision
print result.recall
labels_right = []
texts = []
with open("news_fasttext_test.txt") as fr:lines = fr.readlines()
for line in lines:labels_right.append(line.split("\t")[1].rstrip().replace("__label__",""))texts.append(line.split("\t")[0].decode("utf-8"))
# print labels
# print texts
# break
labels_predict = [e[0] for e in classifier.predict(texts)] #预测输出结果为二维形式
# print labels_predicttext_labels = list(set(labels_right))
text_predict_labels = list(set(labels_predict))
print text_predict_labels
print text_labelsA = dict.fromkeys(text_labels,0) #预测正确的各个类的数目
B = dict.fromkeys(text_labels,0) #测试数据集中各个类的数目
C = dict.fromkeys(text_predict_labels,0) #预测结果中各个类的数目
for i in range(0,len(labels_right)):B[labels_right[i]] += 1C[labels_predict[i]] += 1if labels_right[i] == labels_predict[i]:A[labels_right[i]] += 1print A
print B
print C
#计算准确率,召回率,F值
for key in B:p = float(A[key]) / float(B[key])r = float(A[key]) / float(C[key])f = p * r * 2 / (p + r)print "%s:\tp:%f\t%fr:\t%f" % (key,p,r,f)
之所以搞这么一出,是因为fasttext提供的p值(准确率)和r值(召回率)只是针对所有结果的,而不是针对各个类别分别进行计算p值(准确率)和r值(召回率)的,所以该作者自己写了计算方法。
输出结果:
[u'affairs', u'fashion', u'lottery', u'house', u'sports', u'game', u'economic', u'ent', u'edu', u'home', u'stock', u'constellation', u'science']
['affairs', 'fashion', 'house', 'sports', 'game', 'economic', 'ent', 'edu', 'home', 'stock', 'science']
{'science': 8921, 'affairs': 8544, 'fashion': 2148, 'house': 9572, 'sports': 9814, 'game': 9389, 'economic': 9492, 'ent': 9660, 'edu': 9671, 'home': 8027, 'stock': 8525}
{'science': 10000, 'affairs': 10000, 'fashion': 3369, 'house': 10000, 'sports': 10000, 'game': 10000, 'economic': 10000, 'ent': 10000, 'edu': 10000, 'home': 10000, 'stock': 10000}
{u'science': 10311, u'affairs': 8953, u'fashion': 2176, u'lottery': 28, u'house': 10502, u'sports': 10288, u'game': 10182, u'economic': 11087, u'ent': 10940, u'edu': 10991, u'home': 8171, u'constellation': 466, u'stock': 9274}
science: p:0.892100 0.865193r: 0.878440
affairs: p:0.854400 0.954317r: 0.901599
fashion: p:0.637578 0.987132r: 0.774752
house: p:0.957200 0.911445r: 0.933763
sports: p:0.981400 0.953927r: 0.967468
game: p:0.938900 0.922117r: 0.930433
economic: p:0.949200 0.856138r: 0.900270
ent: p:0.966000 0.882998r: 0.922636
edu: p:0.967100 0.879902r: 0.921443
home: p:0.802700 0.982377r: 0.883496
stock: p:0.852500 0.919237r: 0.884611
fasttext初步使用相关推荐
- 学习笔记四:word2vec和fasttext
FastText:快速的文本分类器 文章目录 一.word2vec 1.1 word2vec为什么 不用现成的DNN模型 1.2 word2vec两种模型:CBOW和Skip-gram 1.2 wor ...
- TensorRT 7.2.1开发初步
TensorRT 7.2.1开发初步 TensorRT 7.2.1开发人员指南演示了如何使用C ++和Python API来实现最常见的深度学习层.它显示了如何采用深度学习框架构建现有模型,并使用该模 ...
- SOC,System on-a-Chip技术初步
SOC,System on-a-Chip技术初步 S O C(拼作S-O-C)是一种集成电路,它包含了电子系统在单个芯片上所需的所有电路和组件.它可以与传统的计算机系统形成对比,后者由许多不同的组件组 ...
- 《OpenCV3编程入门》学习笔记3 HighGUI图形用户界面初步
第3章 HighGUI图形用户界面初步 3.1 图像的载入.显示和输出到文件 1.OpenCV命名空间2种访问方法 (1)代码开头加:usingnamespace cv; (2)每个类或函数前加:cv ...
- 初步判断内存泄漏方法
有时候,内存泄漏不明显,或者怀疑系统有内存泄漏,我们可以通过下面介绍的方法初步确认系统是否存在内存泄漏. 首先在Java命令行中增加-verbose:gc参数, 然后重新启动java进程. 当系统运行 ...
- android蓝牙4.0(BLE)开发之ibeacon初步
一个april beacon里携带的信息如下 ? 1 <code class=" hljs ">0201061AFF4C0002159069BDB88C11416BAC ...
- 游戏AI之初步介绍(0)
目录 游戏AI是什么? 游戏AI和理论AI 智能的假象 (更新)游戏AI和机器学习 介绍一些游戏AI 4X游戏AI <求生之路>系列 角色扮演/沙盒游戏中的NPC 游戏AI 需要学些什么? ...
- 【转】ibatis的简介与初步搭建应用
[转]ibatis的简介与初步搭建应用 一.ibatis的简介 ibatis是什么东西就不介绍了,自己去找谷老师. 这里讲下自己的使用体会.之前自己学过Hibernate,是看尚学堂的视频教学的,看完 ...
- 初步了解:使用JavaScript进行表达式(De Do Do Do,De Da Da Da)
by Donavon West 由Donavon West 初步了解:使用JavaScript进行表达式(De Do Do Do,De Da Da Da) (A first look: do expr ...
最新文章
- PostgreSQL中Timestamp转成世纪秒(Unix时间戳)
- 3种Python字典合并方法
- vSphere5.0配置分布式交换机
- [转]简单介绍如何用Reporting Service制作报表
- ElasticSearch入门 附.Net Core例子
- C++实现utf8和gbk编码字符串互相转换
- 无重复字符的最长子串php,LeetCode - 无重复字符的最长子串 - Golang
- phpstorm配置yaf代码自动补全提示
- 开源数据库这么香,为什么我们还要下功夫自研?
- 【openMV】oenMV之图像基本运算操作
- c++分割字符串方法
- 软件安装下载的镜像站、国内源
- 机器学习基础(四)——持久化分类器
- d1分辨率和960分辨率_选择2D艺术资产的分辨率
- 注塑成型工艺流程四大知识点总结
- 大数据、人工智能、VR、Docker、前端,双11技术视频、讲义、文章一键get
- mybatis 配置多数据源 java,SpringBoot+MyBatisPlus配置多数据源读写分离
- vue3.0需要学习的技术栈
- XMU2018摸底测试 星际战争I(Easy)
- 个人小作品之迷你音乐播放器(移动端)
热门文章
- 真机测试报错ERROR/AndroidRuntime: java.lang.RuntimeException: setParameters failed解决办法
- JS疑惑-2(作用域)
- Bootstrap模态框遮罩问题
- JS 中判断一个对象是否为数组对象?
- android 获取sim卡,Android 获取手机SIM卡运营商
- 使用rem的简单处理
- vue的props实现父组件变化子组件一起变化
- DIV布局的设置(水平或者垂直居中)
- 导入时间过长,请求变成404,导入成功后后台会出现java.io.IOException: 您的主机中的软件中止了一个已建立的连接
- 人工机器:深度学习CNN到底实现了什么