All Projects → MLjian → Textclassificationimplement

MLjian / Textclassificationimplement

’达观杯‘文本智能处理挑战赛,文本分类任务的实现,包括一些传统的监督学习算法和深度学习算法,主要基于sklearn/xgb/lgb/pytorch包实现。

Programming Languages

python
139335 projects - #7 most used programming language

1 简介

'达观杯'文本智能处理挑战赛官网
 该库用于'达观杯'比赛的文本分类任务的基础实现,主要包括机器学习(ml)和深度学习(dl)两大部分,机器学习部分基于sklearn/lightgbm包实现,深度学习部使用pytorch深度学习框架。其中,机器学习部分主要包含特征工程和分类器两大部分,特征工程部分主要针对文本分类任务的 hash/lsa/lda/doc2vec特征提取/特征选择/特征组合/特征构造进行了实现,而分类器部分主要有逻辑回归/SVM/随机森林/Bagging/Adaboost/GBDT/Xgboost/LightGBM等。深度学习主要实现了word2vec/构建lstm模型/训练可视化等。(注:此库只是基础实现,并不是最优!!!)

2 ml(机器学习)

  • 1)运行环境
    sklearn/xgboost/lightgbm
  • 2)文件夹说明
    [data]:用于存放原始数据集。(数据集下载链接)
    [features]:用于存放特征工程的代码以及生成的特征文件。
    [code]:用于存放训练的代码。
    [results]:用于存放测试集的训练结果,以便提交给比赛官方。
    [for beginner]:用较为简单的代码格式帮助代码熟练度不够的同学入门,涉及自动调参。(选看)
  • 3)使用案例
    (1)生成tfidf特征
    直接运行features文件夹中的tfidf.py;
    (2)生成lsa特征
    运行features文件夹中的lsa.py;(注:运行前请确保tfidf特征已经生成)
    (3)生成lda特征
    运行features文件夹中的lda.py;(注:运行前请确保tf特征已经生成)
    (4)使用逻辑回归分类器进行训练
    修改code文件夹中的sklearn_config.py中的clf_name='lr',然后运行sklearn_train.py即开始训练。
    (5)使用lgb进行训练
    修改code文件夹中的lgb.py中的features_path,然后直接运行lgb.py即可开始训练。
  • 4)提高模型分数关键
    (1)特征工程:
    做更多更好的特征,然后进行融合,形成新的特征,正常来讲每增加一些有用的特征,模型就会提升一些;
    对于article的使用,将article进行和word_seg一样的特征抽取,然后合并到word_seg特征中;
    (2)集成学习:
    多个好而不同的单模型进行融合,就是将各个模型结果进行投票;
  • 5)比赛新baseline
    用ensemble_spar.py形成的特征 + LinearSVC --> 0.778多(只是简单随便跑的,还未进行调优)

3 dl(深度学习)

  • 1)运行环境
    pytorch/visdom
  • 2)文件夹说明
    [n_pad]:不对句子进行截断或补零。
    [pad]:对句子进行截断或补零,以保证输入神经网络里的每条句子长度一样。
    [data]:用于存放原始数据集和处理后的数据集。(数据集下载链接)
    [models]:用于存放网络结构的文件。
    [word2vec]:用于存放训练词向量的代码以及训练词向量的生成文件。
    [trained_models]:用于存放训练好的网络模型。
    [实验数据]:用于存放实验记录。
    [config.py]:用于对网络结构的参数进行设置。
    [train.py]:用于对网络的训练
  • 3)使用流程
    (1)先将原始数据集下载至data/data_ori;
    (2)运行word2vec/train_word2vec.py训练词向量;
    (3)运行data/data_process.py ,对数据进行预处理;
    (4)配置config文件进行参数的配置,并保存;
    (5)运行train.py进行训练;
  • 4)训练过程

训练集loss
验证集准确率
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].