zoukankan      html  css  js  c++  java
  • fastext 中文文本分类

    1. 输入文本预处理, 通过jieba分词, 空格" "拼接文本串.  每行一个样本, 最后一个单词为双下划线表明label,  __label__'xxx' . eg:

    邱县 继刚 家庭 农场 小麦 、 玉米 、 棉花 、 大豆 、 蔬菜 、 苗木 种植 、 销售 ( 依法 须 经 批准 的 项目 , 经 相关 部门 批准 后方 可 开展 经营 活动 ) __label__A
    江苏 嘉利欣 农业 科技 有限公司 农业 科技 研发 、 转让 、 咨询服务 展览 展示 服务 现代农业 休闲 观光 种植 、 销售 粮食 、 果蔬 、花卉 、 苗木 种植 中草药 销售 本 公司 种植 的 中草药 ( 特殊 中草药 除外 ) 养殖 、 销售 鱼 、 虾 、 螃蟹 ( 依法 须 经 批准 的 项
    目 , 经 相关 部门 批准 后方 可 开展 经营 活动 ) __label__B
    赞皇县 和谐 家庭 农场 农作物 果树 蔬菜 种植 销售 需 有关 部门 审批 的 审批 后 经营 __label__C
    深圳市 修元 农业 开发 有限公司 农业 开发 、 绿化 工程 、 苗圃 种植 __label__A
    # 文本预处理
    df2 = pd.read_csv('./industry_dalei_train.txt', encoding='utf-8')
    df3 = pd.read_excel('./industry_standard.xlsx', encoding='utf-8')
    
    # 映射转换
    dalei2label_dict = dict((x, y) for x, y in zip(df3[u'大类名称'], df3[u'大类编号']))
    df2['dalei_label'] = df2['sub_industry_name'].apply(lambda x: dalei2label_dict[x])
    # 切割
    df2['cut_name'] = df2['name'].apply(lambda x: ' '.join(jieba.cut(x))) 
    df2['cut_business'] = df2['business'].apply(lambda x: ' '.join(jieba.cut(x))) 
    df2['cut_train'] = df2['cut_name'] + ' ' + df2['cut_business'] + ' __label__' + df2['dalei_label']
    df2['cut_train'].to_csv('industry_dalei_train.txt', index=None, header=None, encoding='utf-8')

    2. pip install fasttext, 利用fasttext 的python 包进行分类.

    # 训练和保存模型
    da_clf = fasttext.supervised('./industry_dalei_train.txt', 'models/dalei_clf')
    
    # 加载模型
    da_clf = fasttext.load_model('./models/dalei_clf.bin')
    
    # 测试
    res = da_clf.test('./industry_dalei_test.txt')
    print res.precision
    print res.recall
    
    # 预测使用, data为['cut document1' ,'cut document2']
    da_clf.predict(data ,k=1)  # 预测标签
    da_clf.predict_proba(da_df.iloc[:5],k=3)  # 预测标签概率

    简单高效, 结果也不差.  good luck~

    参考:

    https://pypi.python.org/pypi/fasttext/

    http://www.41443.com/HTML/Python/20160909/449360.html

    http://www.360doc.com/content/17/0427/02/20558639_648968041.shtml

  • 相关阅读:
    大数据的分页优化的思路
    escape()、encodeURI()、encodeURIComponent()区别详解
    PHP面向对象知识总结
    mysql 简单优化规则
    mysql语句内部优化
    js onmouseout的冒泡事件
    Android 开机自启动
    查看 AndroidManifest.xml文件
    Hierarchy Viewer显示视图性能指标
    Profile GPU rendering
  • 原文地址:https://www.cnblogs.com/jkmiao/p/7041106.html
Copyright © 2011-2022 走看看