{"id":13711499,"url":"https://github.com/luopeixiang/textclf","last_synced_at":"2025-04-09T20:09:16.362Z","repository":{"id":37595801,"uuid":"177423020","full_name":"luopeixiang/textclf","owner":"luopeixiang","description":"TextClf ：基于Pytorch/Sklearn的文本分类框架，包括逻辑回归、SVM、TextCNN、TextRNN、TextRCNN、DRNN、DPCNN、Bert等多种模型，通过简单配置即可完成数据处理、模型训练、测试等过程。","archived":false,"fork":false,"pushed_at":"2023-07-21T21:45:38.000Z","size":288,"stargazers_count":239,"open_issues_count":10,"forks_count":39,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-09T20:09:12.113Z","etag":null,"topics":["bert","cnn-text-classification","configurable","document-classification","dpcnn","drnn","glove","logistic-regression","lstm-text-classification","neuralclassifier","pytorch","sentiment-analysis","sklearn-classify","svm","textcnn","textrnn","word2vec"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luopeixiang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-03-24T14:05:26.000Z","updated_at":"2025-03-26T06:35:48.000Z","dependencies_parsed_at":"2022-07-20T12:32:33.978Z","dependency_job_id":"443d8a04-6b55-4978-9297-e6bb4fdacfe8","html_url":"https://github.com/luopeixiang/textclf","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luopeixiang%2Ftextclf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luopeixiang%2Ftextclf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luopeixiang%2Ftextclf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luopeixiang%2Ftextclf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luopeixiang","download_url":"https://codeload.github.com/luopeixiang/textclf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103872,"owners_count":21048245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bert","cnn-text-classification","configurable","document-classification","dpcnn","drnn","glove","logistic-regression","lstm-text-classification","neuralclassifier","pytorch","sentiment-analysis","sklearn-classify","svm","textcnn","textrnn","word2vec"],"created_at":"2024-08-02T23:01:08.862Z","updated_at":"2025-04-09T20:09:16.333Z","avatar_url":"https://github.com/luopeixiang.png","language":"Python","readme":"![License](https://img.shields.io/apm/l/vim-mode.svg)\r\n\r\n目录：\r\n\r\n* [TextClf简介](#textclf简介)\r\n   * [前言](#前言)\r\n   * [系统设计思路](#系统设计思路)\r\n   * [目录结构](#目录结构)\r\n* [安装](#安装)\r\n* [快速开始](#快速开始)\r\n   * [预处理](#预处理)\r\n   * [训练一个逻辑回归模型](#训练一个逻辑回归模型)\r\n   * [加载训练完毕的模型进行测试分析](#加载训练完毕的模型进行测试分析)\r\n   * [训练TextCNN模型](#训练textcnn模型)\r\n* [TODO](#todo)\r\n* [参考](#参考)\r\n\r\n\r\n## TextClf简介\r\n\r\n### 前言\r\n\r\nTextClf 是一个面向文本分类场景的工具箱，它的目标是可以通过配置文件快速尝试多种分类算法模型、调整参数、搭建baseline，从而让使用者能有更多精力关注于数据本身的特点，做针对性改进优化。\r\n\r\nTextClf有以下这些特性：\r\n\r\n* 同时支持机器学习模型如逻辑回归、线性向量机与深度学习模型如TextCNN、TextRNN、TextRCNN、DRNN、DPCNN、Bert等等。\r\n* 支持多种优化方法，如`Adam` 、`AdamW` 、`Adamax`、`RMSprop`等等\r\n* 支持多种学习率调整的方式，如`ReduceLROnPlateau` 、  `StepLR` 、 `MultiStepLR`\r\n* 支持多种损失函数，如`CrossEntropyLoss`、`CrossEntropyLoss with label smoothing`、`FocalLoss`\r\n* 可以通过和程序交互生成配置，再通过修改配置文件快速调整参数。\r\n* 在训练深度学习模型时，支持使用对`embedding`层和`classifier`层分别使用不同的学习率进行训练\r\n* 支持从断点（checkpoint）重新训练\r\n* 具有清晰的代码结构，可以让你很方便的加入自己的模型，使用`textclf`，你可以不用去关注优化方法、数据加载等方面，可以把更多精力放在模型实现上。\r\n\r\n\r\n\r\n与其他文本分类框架  [NeuralClassifier](https://github.com/Tencent/NeuralNLP-NeuralClassifier) 的比较：\r\n\r\n* `NeuralClassifier`不支持机器学习模型，也不支持Bert/Xlnet等深度的预训练模型。\r\n\r\n* `TextClf`会比`NeuralClassifier`对新手更加友好，清晰的代码结构也会使得你能方便地对它进行拓展。\r\n\r\n* 特别地，对于深度学习模型，`TextClf`将其看成两个部分，`Embedding`层和`Classifier`层。\r\n\r\n  `Embedding`层可以是随机初始化的词向量，也可以是预训练好的静态词向量（`word2vec、glove、fasttext`），也可以是动态词向量如`Bert`、`Xlnet`等等。\r\n\r\n  `Classifier`层可以是MLP，CNN，将来也会支持RCNN，RNN with attention等各种模型。\r\n\r\n  通过将`embedding`层和`classifier`层分开，在配置深度学习模型时，我们可以选择对`embedding`层和`classifier`层进行排列组合，比如`Bert embedding + CNN`  ，`word2vec + RCNN` 等等。\r\n\r\n  这样，通过比较少的代码实现，`textclf`就可以涵盖更多的模型组合的可能。\r\n\r\n  \r\n\r\n### 系统设计思路\r\n\r\nTextClf将文本分类的流程看成**预处理、模型训练、模型测试**三个阶段。\r\n\r\n预处理阶段做的事情主要是：\r\n\r\n* 读入原始数据，进行分词，构建词典\r\n* 分析标签分布等数据特点\r\n* 保存成二进制的形式方便快速读入\r\n\r\n数据经过预处理之后，我们就可以在上面训练各种模型、比较模型的效果。\r\n\r\n模型训练阶段负责的是：\r\n\r\n* 读入预处理过的数据\r\n* 根据配置初始化模型、优化器等训练模型必需的因素\r\n* 训练模型，根据需要最优模型\r\n\r\n测试阶段的功能主要是：\r\n\r\n* 加载训练阶段保存的模型进行测试\r\n* 支持使用文件输入或者终端输入两种方式进行测试\r\n\r\n\r\n\r\n为了方便地对预处理、模型训练、模型测试阶段进行控制，`TextClf`使用了`json`文件来对相关的参数（如预处理中指定原始文件的路径、模型训练阶段指定模型参数、优化器参数等等）进行配置。运行的时候，只要指定配置文件，`TextClf`就会根据文件中的参数完成预处理、训练或者测试等工作，详情可参见 [快速开始](#快速开始)  部分。\r\n\r\n\r\n\r\n### 目录结构\r\n\r\n`textclf`源代码目录下有六个子目录和两个文件，每项的作用如下所示：\r\n\r\n```bash\r\n├── config\t\t# 包括预处理、模型训练、模型测试的各种参数及其默认设置\r\n├── data\t\t# 数据预处理、数据加载的代码\r\n├── models\t\t# 主要包括深度学习模型的实现\r\n├── tester\t\t# 负责加载模型进行测试\r\n├── __init__.py # 模块的初始化文件\r\n├── main.py\t\t# textclf的接口文件，运行textclf会调用该文件中的main函数\r\n├── trainer\t\t# 负责模型的训练\r\n└── utils\t\t# 包含各种工具函数\r\n```\r\n\r\n\r\n\r\n## 安装\r\n\r\n依赖环境：`python \u003e=3.6`\r\n\r\n\r\n使用pip安装：\r\n```bash\r\npip install textclf\r\n```\r\n\r\n安装成功之后就可以使用`textclf`了！\r\n\r\n\r\n\r\n## 快速开始\r\n\r\n下面我们看一下如何使用`textclf`训练模型进行文本分类。\r\n\r\n在目录`examples/toutiao` 下有以下文件：\r\n\r\n```bash\r\n  3900行 train.csv\r\n   600行 valid.csv\r\n   600行 test.csv\r\n  5100行 total\r\n```\r\n\r\n这些数据来自\r\n[今日头条新闻分类数据集](https://github.com/skdjfla/toutiao-text-classfication-dataset)，\r\n在这里用作演示。\r\n\r\n文件的格式如下：\r\n\r\n```bash\r\n下周一（5.7日）手上持有这些股的要小心   news_finance\r\n猪伪狂犬苗的免疫方案怎么做？    news_edu\r\n小米7未到！这两款小米手机目前性价比最高，米粉：可惜买不到       news_tech\r\n任何指望技术来解决社会公正、公平的设想，都是幻想        news_tech\r\n诸葛亮能借东风火烧曹营，为什么火烧司马懿却没料到会下雨？        news_culture\r\n福利几款旅行必备神器，便宜实用颜值高！  news_travel\r\n抵押车要怎样年审和购买保险？    news_car\r\n现在一万一平米的房子，十年后大概卖多少钱？      news_house\r\n第一位有中国国籍的外国人，留中国五十多年，死前留下这样的话！    news_world\r\n为什么A股投资者越保护越亏？     stock\r\n```\r\n\r\n文件每一行由两个字段组成，分别是句子和对应的label，句子和label之间使用`\\t`字符隔开。\r\n\r\n\r\n\r\n### 预处理\r\n\r\n第一步是预处理。预处理将会完成读入原始数据，进行分词，构建词典，保存成二进制的形式方便快速读入等工作。要对预处理的参数进行控制，需要相应的配置文件，`textclf`中的`help-config`功能可以帮助我们快速生成配置，运行：\r\n\r\n```bash\r\ntextclf help-config\r\n```\r\n\r\n输入`0`让系统为我们生成默认的`PreprocessConfig`，接着将它保存成`preprocess.json`文件：\r\n\r\n```bash\r\n(textclf) luo@luo-pc:~/projects$ textclf help-config\r\nConfig  有以下选择(Default: DLTrainerConfig): \r\n0. PreprocessConfig     预处理的设置\r\n1. DLTrainerConfig      训练深度学习模型的设置\r\n2. DLTesterConfig       测试深度学习模型的设置\r\n3. MLTrainerConfig      训练机器学习模型的设置\r\n4. MLTesterConfig       测试机器学习模型的设置\r\n输入您选择的ID (q to quit, enter for default):0\r\nChooce value PreprocessConfig   预处理的设置\r\n输入保存的文件名(Default: config.json): preprocess.json\r\n已经将您的配置写入到 preprocess.json,你可以在该文件中查看、修改参数以便后续使用\r\nBye!\r\n```\r\n\r\n打开文件`preprocess.json`，可以看到以下内容：\r\n\r\n```bash\r\n{\r\n    \"__class__\": \"PreprocessConfig\",\r\n    \"params\": {\r\n        \"train_file\": \"train.csv\",\r\n        \"valid_file\": \"valid.csv\",\r\n        \"test_file\": \"test.csv\",\r\n        \"datadir\": \"dataset\",\r\n        \"tokenizer\": \"char\",\r\n        \"nwords\": -1,           \r\n        \"min_word_count\": 1\r\n    }\r\n}\r\n```\r\n\r\n`params`中是我们可以进行设置的参数，这些字段的详细含义可以[查看文档](docs/preprocess.md)。\r\n这里我们只需要把`datadir`字段修改成`toutiao`目录即可\r\n（最好使用绝对路径，若使用相对路径，要确保当前工作目录正确访问该路径。）\r\n\r\n然后，就可以根据配置文件进行预处理了：\r\n\r\n```bash\r\ntextclf --config-file preprocess.json preprocess\r\n```\r\n\r\n如无错误，输出如下：\r\n\r\n```bash\r\n(textclf) luo@V_PXLUO-NB2:~/textclf/test$ textclf --config-file config.json preprocess\r\nTokenize text from /home/luo/textclf/textclf_source/examples/toutiao/train.csv...\r\n3900it [00:00, 311624.35it/s]\r\nTokenize text from /home/luo/textclf/textclf_source/examples/toutiao/valid.csv...\r\n600it [00:00, 299700.18it/s]\r\nTokenize text from /home/luo/textclf/textclf_source/examples/toutiao/test.csv...\r\n600it [00:00, 289795.30it/s]\r\nLabel Prob:\r\n+--------------------+-------------+-------------+------------+\r\n|                    |   train.csv |   valid.csv |   test.csv |\r\n+====================+=============+=============+============+\r\n| news_finance       |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| news_edu           |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| news_tech          |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| news_culture       |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| news_travel        |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| news_car           |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| news_house         |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| news_world         |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| stock              |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| news_story         |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| news_agriculture   |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| news_entertainment |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| news_military      |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| news_sports        |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| news_game          |      0.0667 |      0.0667 |     0.0667 |\r\n+--------------------+-------------+-------------+------------+\r\n| Sum                |   3900.0000 |    600.0000 |   600.0000 |\r\n+--------------------+-------------+-------------+------------+\r\nDictionary Size: 2981\r\nSaving data to ./textclf.joblib...\r\n```\r\n\r\n预处理会打印每个数据集标签分布的信息。同时，处理过后的数据被保存到二进制文件`./textclf.joblib`中了。\r\n（每个类别所含的样本数是相同的。）\r\n\r\n预处理中的详细参数说明，请查看[文档](docs/preprocess.md)。\r\n\r\n\r\n\r\n### 训练一个逻辑回归模型\r\n\r\n同样的，我们先使用`textclf help-config`生成`train_lr.json`配置文件，输入`3` 选择训练机器学习模型的配置。\r\n根据提示分别选择`CountVectorizer`（文本向量化的方式）以及模型`LR`：\r\n\r\n```bash\r\n(textclf) luo@luo-pc:~/projects$ textclf help-config\r\nConfig  有以下选择(Default: DLTrainerConfig): \r\n0. PreprocessConfig     预处理的设置\r\n1. DLTrainerConfig      训练深度学习模型的设置\r\n2. DLTesterConfig       测试深度学习模型的设置\r\n3. MLTrainerConfig      训练机器学习模型的设置\r\n4. MLTesterConfig       测试机器学习模型的设置\r\n输入您选择的ID (q to quit, enter for default):3\r\nChooce value MLTrainerConfig    训练机器学习模型的设置\r\n正在设置vectorizer\r\nvectorizer 有以下选择(Default: CountVectorizer): \r\n0. CountVectorizer\r\n1. TfidfVectorizer\r\n输入您选择的ID (q to quit, enter for default):0\r\nChooce value CountVectorizer\r\n正在设置model\r\nmodel 有以下选择(Default: LogisticRegression): \r\n0. LogisticRegression\r\n1. LinearSVM\r\n输入您选择的ID (q to quit, enter for default):0\r\nChooce value LogisticRegression\r\n输入保存的文件名(Default: config.json): train_lr.json\r\n已经将您的配置写入到 train_lr.json,你可以在该文件中查看、修改参数以便后续使用\r\nBye!\r\n```\r\n\r\n对于更细粒度的配置，如逻辑回归模型的参数，`CountVectorizer`的参数，可以在生成的`train_lr.json`中进行修改。这里使用默认的配置进行训练：\r\n\r\n```bash\r\ntextclf --config-file train_lr.json train\r\n```\r\n\r\n因为数据量比较小，所以应该马上就能看到结果。训练结束后，`textclf`会在测试集上测试模型效果，同时将模型保存在`ckpts`目录下。\r\n\r\n机器学习模型训练中的详细参数说明，请查看[文档](docs/trainer.md)。\r\n\r\n\r\n\r\n### 加载训练完毕的模型进行测试分析\r\n\r\n首先使用`help-config`生成`MLTesterConfig`的默认设置到`test_lr.json`：\r\n\r\n```bash\r\n(textclf) luo@luo-pc:~/projects$ textclf help-config\r\nConfig  有以下选择(Default: DLTrainerConfig): \r\n0. PreprocessConfig     预处理的设置\r\n1. DLTrainerConfig      训练深度学习模型的设置\r\n2. DLTesterConfig       测试深度学习模型的设置\r\n3. MLTrainerConfig      训练机器学习模型的设置\r\n4. MLTesterConfig       测试机器学习模型的设置\r\n输入您选择的ID (q to quit, enter for default):4\r\nChooce value MLTesterConfig     测试机器学习模型的设置\r\n输入保存的文件名(Default: config.json): test_lr.json\r\n已经将您的配置写入到 test_lr.json,你可以在该文件中查看、修改参数以便后续使用\r\nBye!\r\n```\r\n\r\n将`test_lr.json`中的`input_file`字段修改成`query_intent_toy_data/test.csv` 的路径，然后进行测试：\r\n\r\n```bash\r\ntextclf --config-file test_lr.json test\r\n```\r\n\r\n测试结束，`textclf`将会打印出准确率、每个label的`f1`值：\r\n\r\n```bash\r\nWriting predicted labels to predict.csv\r\nAcc in test file:66.67%\r\nReport:\r\n                    precision    recall  f1-score   support\r\n\r\n  news_agriculture     0.6970    0.5750    0.6301        40\r\n          news_car     0.8056    0.7250    0.7632        40\r\n      news_culture     0.7949    0.7750    0.7848        40\r\n          news_edu     0.8421    0.8000    0.8205        40\r\nnews_entertainment     0.6000    0.6000    0.6000        40\r\n      news_finance     0.2037    0.2750    0.2340        40\r\n         news_game     0.7111    0.8000    0.7529        40\r\n        news_house     0.7805    0.8000    0.7901        40\r\n     news_military     0.8750    0.7000    0.7778        40\r\n       news_sports     0.7317    0.7500    0.7407        40\r\n        news_story     0.7297    0.6750    0.7013        40\r\n         news_tech     0.6522    0.7500    0.6977        40\r\n       news_travel     0.6410    0.6250    0.6329        40\r\n        news_world     0.6585    0.6750    0.6667        40\r\n             stock     0.5000    0.4750    0.4872        40\r\n\r\n          accuracy                         0.6667       600\r\n         macro avg     0.6815    0.6667    0.6720       600\r\n      weighted avg     0.6815    0.6667    0.6720       600\r\n\r\n```\r\n\r\n关于机器学习模型测试中的详细参数，请查看[文档](docs/tester.md)。\r\n\r\n\r\n\r\n### 训练TextCNN模型\r\n\r\n训练深度学习模型TextCNN的过程与训练逻辑回归的流程大体一致。\r\n\r\n这里简单做一下说明。先通过`help-config`进行配置，根据提示，先选择`DLTrainerConfig` ，然后再先后选择`Adam optimzer + ReduceLROnPlateau + StaticEmbeddingLayer + CNNClassifier +  CrossEntropyLoss`即可。\r\n\r\n```bash\r\n(textclf) luo@V_PXLUO-NB2:~/textclf/test$ textclf help-config\r\nConfig  有以下选择(Default: DLTrainerConfig):\r\n0. PreprocessConfig     预处理的设置\r\n1. DLTrainerConfig      训练深度学习模型的设置\r\n2. DLTesterConfig       测试深度学习模型的设置\r\n3. MLTrainerConfig      训练机器学习模型的设置\r\n4. MLTesterConfig       测试机器学习模型的设置\r\n输入您选择的ID (q to quit, enter for default):\r\nChooce default value: DLTrainerConfig\r\n正在设置optimizer\r\noptimizer 有以下选择(Default: Adam):\r\n0. Adam\r\n1. Adadelta\r\n2. Adagrad\r\n3. AdamW\r\n4. Adamax\r\n5. ASGD\r\n6. RMSprop\r\n7. Rprop\r\n8. SGD\r\n输入您选择的ID (q to quit, enter for default):\r\nChooce default value: Adam\r\n正在设置scheduler\r\nscheduler 有以下选择(Default: NoneScheduler):\r\n0. NoneScheduler\r\n1. ReduceLROnPlateau\r\n2. StepLR\r\n3. MultiStepLR\r\n输入您选择的ID (q to quit, enter for default):\r\nChooce default value: NoneScheduler\r\n正在设置model\r\n正在设置embedding_layer\r\nembedding_layer 有以下选择(Default: StaticEmbeddingLayer):\r\n0. StaticEmbeddingLayer\r\n1. BertEmbeddingLayer\r\n输入您选择的ID (q to quit, enter for default):\r\nChooce default value: StaticEmbeddingLayer\r\n正在设置classifier\r\nclassifier 有以下选择(Default: CNNClassifier):\r\n0. CNNClassifier\r\n1. LinearClassifier\r\n2. RNNClassifier\r\n3. RCNNClassifier\r\n4. DRNNClassifier\r\n5. DPCNNClassifier\r\n输入您选择的ID (q to quit, enter for default):0\r\nChooce value CNNClassifier\r\n正在设置data_loader\r\n正在设置criterion\r\ncriterion 有以下选择(Default: CrossEntropyLoss):\r\n0. CrossEntropyLoss\r\n1. FocalLoss\r\n输入您选择的ID (q to quit, enter for default):q^Hq\r\n请输入整数ID！\r\n输入您选择的ID (q to quit, enter for default):q\r\nGoodbye!\r\n(textclf) luo@V_PXLUO-NB2:~/textclf/test$\r\n(textclf) luo@V_PXLUO-NB2:~/textclf/test$ textclf help-config\r\nConfig  有以下选择(Default: DLTrainerConfig):\r\n0. PreprocessConfig     预处理的设置\r\n1. DLTrainerConfig      训练深度学习模型的设置\r\n2. DLTesterConfig       测试深度学习模型的设置\r\n3. MLTrainerConfig      训练机器学习模型的设置\r\n4. MLTesterConfig       测试机器学习模型的设置\r\n输入您选择的ID (q to quit, enter for default):1\r\nChooce value DLTrainerConfig    训练深度学习模型的设置\r\n正在设置optimizer\r\noptimizer 有以下选择(Default: Adam):\r\n0. Adam\r\n1. Adadelta\r\n2. Adagrad\r\n3. AdamW\r\n4. Adamax\r\n5. ASGD\r\n6. RMSprop\r\n7. Rprop\r\n8. SGD\r\n输入您选择的ID (q to quit, enter for default):0\r\nChooce value Adam\r\n正在设置scheduler\r\nscheduler 有以下选择(Default: NoneScheduler):\r\n0. NoneScheduler\r\n1. ReduceLROnPlateau\r\n2. StepLR\r\n3. MultiStepLR\r\n输入您选择的ID (q to quit, enter for default):0\r\nChooce value NoneScheduler\r\n正在设置model\r\n正在设置embedding_layer\r\nembedding_layer 有以下选择(Default: StaticEmbeddingLayer):\r\n0. StaticEmbeddingLayer\r\n1. BertEmbeddingLayer\r\n输入您选择的ID (q to quit, enter for default):0\r\nChooce value StaticEmbeddingLayer\r\n正在设置classifier\r\nclassifier 有以下选择(Default: CNNClassifier):\r\n0. CNNClassifier\r\n1. LinearClassifier\r\n2. RNNClassifier\r\n3. RCNNClassifier\r\n4. DRNNClassifier\r\n5. DPCNNClassifier\r\n输入您选择的ID (q to quit, enter for default):0\r\nChooce value CNNClassifier\r\n正在设置data_loader\r\n正在设置criterion\r\ncriterion 有以下选择(Default: CrossEntropyLoss):\r\n0. CrossEntropyLoss\r\n1. FocalLoss\r\n输入您选择的ID (q to quit, enter for default):0\r\nChooce value CrossEntropyLoss\r\n输入保存的文件名(Default: config.json): train_cnn.json\r\n已经将您的配置写入到 train_cnn.json,你可以在该文件中查看、修改参数以便后续使用\r\nBye!\r\n```\r\n\r\n然后运行：\r\n\r\n```bash\r\ntextclf --config-file train_cnn.json train\r\n```\r\n\r\n即可开始训练我们配置好的`textcnn`模型。\r\n\r\n\r\n\r\n当然，在训练结束之后，我们也可以通过`DLTesterConfig`配置来测试模型效果。而且，如果你想使用预训练的静态`embedding`如word2vec、glove只需要修改配置文件即可。\r\n\r\n上述就是`TextCNN`的训练过程。如果你想尝试更多的模型，比如Bert，只需要在设置`DLTrainerConfig`时将`EmbeddingLayer`设置为 `BertEmbeddingLayer`，并且在生成的配置文件中手动设置一下预训练`Bert`模型的路径。这里就不再赘述了。\r\n\r\n\r\n\r\n本节的相关文档：\r\n\r\n[训练深度学习模型的详细参数说明](docs/dl_model.md)\r\n\r\n[测试深度学习模型的详细参数说明](docs/tester.md)\r\n\r\n[textclf文档](docs/README.md)\r\n\r\n\r\n\r\n\r\n## TODO\r\n\r\n* 加入多模型集成评估和预测\r\n* 加载训练好的模型，提供api服务\r\n* 自动调参（？）\r\n\r\n\r\n\r\n## 参考\r\n\r\n[DeepText/NeuralClassifier](https://github.com/Tencent/NeuralNLP-NeuralClassifier) \r\n\r\n[pytext](https://github.com/facebookresearch/pytext) \r\n\r\n\r\n","funding_links":[],"categories":["Repository \u0026 Tool"],"sub_categories":["Weakly-supervised \u0026 Semi-supervised Learning"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluopeixiang%2Ftextclf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluopeixiang%2Ftextclf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluopeixiang%2Ftextclf/lists"}