fasttext模型 训练THUCNews

# _*_coding:utf-8 _*_
import fasttext
import jieba
from sklearn import metrics
import random
def read_file(filename):
    i=0;
    sentences =[]
    out = open('data/cnews/fast_test.txt','a+')
    with open(filename) as ft:
        for line in ft:
            label, content = line.strip().split('\t')
            segs = jieba.cut(content)
            segs = filter(lambda x:len(x)>1,segs)
            sentences.append("__label__"+str(label)+"\t"+" ".join(segs))
        random.shuffle(sentences)
        for sentence in sentences:
            out.write(sentence+"\n")
    out.close()
read_file('data/cnews/cnews.train.txt')
classifier = fasttext.supervised('data/cnews/fast_train.txt','new_fasttext.model')
classifier = fasttext.load_model('new_fasttext.model.bin')
categories = ['体育',  '财经','房产','家居','教育', '科技', '时尚', '时政', '游戏', '娱乐']
read_file('data/cnews/cnews.test.txt')
result = classifier.test('data/cnews/fast_test.txt')
print("准确率为:%f"%result.precision)
print("召回率为: %f"%result.recall)
with open('data/cnews/cnews.test.txt') as fw:
    contents,labels = [],[]
    for line in fw:
        label ,content = line.strip().split('\t')
        segs = jieba.cut(content)
        segs = filter(lambda x:len(x)>1,segs)
        contents.append(" ".join(segs))
        labels.append('__label__'+label)
    label_predict = [e[0] for e in classifier.predict(contents)]
    print("Precision,Recall and F1-Score....")
    print(metrics.classification_report(labels,label_predict,target_names=categories))

关于fasttext的使用一些疑问:fasttext.supervised的参数label_prefix 一直提示我这个参数使用有问题... 然而,搜素了半天,我也没搞明白这个参数哪里有问题

还有一点需要注意的地方:fasttext的识别标签统一需要在标签前面加上"__label__"

后续会更新fastext的原理

 

转载于:https://www.cnblogs.com/jzcbest1016/p/8822890.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值