项目之 头满分_2FastText

1. 使用FastText原因

使用FastText原因?:快?
FastText最初训练语料是英文,英文天然支持每个单词之间是有空格的,所以中文相较英文语料的文本分类任务或者词嵌入都会多一步分词;
FastText 对输入数据有格式要求,难点在于将数据处理为符合FastText 的格式:文本句子分词后拼接:_label_xxx

2. 代码结构图

3. 基于FastText分类建模思路

3.1 分词

对数据train.txt等相关文件的文本列进行 分词处理,两种处理思路字符级别以及词级别。(按照单字符级别分字处理;或者使用jieba分词器进行词级别分词处理;)

② 利用FastText库进行建模、评估与保存。
③ 模型预测

④ 模型部署,提供api接口

⑤ 前端预测实现

4. 代码

4.1 配置文件

ft01_config.py:
配置:1.原始数据路径、2.处理好(分词后)的数据 存放路径、3.模型保存路径、5.是否使用字符级别的分词;

4.2 数据预处理

4.1 分词

两种处理思路字符级别以及词级别:按照单字符级别分字处理;或者使用jieba分词器进行词级别分词处理

4.3 auto自动调参


1. 原始的模型:(未使用自动调参)

model=fasttext.train_supervised(input="./data/train_fastText_jieba.txt")# train_xx 训练集

2. FastTest使用自动调参:
① input(训练集):训练多组不同超参数的模型;
② autotuneValidationFile(验证集):评估每组超参数的效果,最终选出在验证集上表现最好的那组超参数。开启自动调参。当传入这个参数,fasttext会进入自动调参模式,自动搜索最优的超参数组合(如学习率 lr、epoch 数、ngram 阶数、词向量维度 dim 等)。如果不传,不会自动调参;值是验证集;
③ autotuneDuration:调参搜索的总时间(秒)(即自动搜索最优的超参数组合),时间越长搜索越充分;
④ thread::指定训练时使用的 CPU 线程数量;(3-用 3 个 CPU 线程并行训练)
⑤ verbose:输出日志详细程度,值越大,输出的日志越详细:0-静默,不输出任何信息、1-只输出关键信息(如最终结果)、2-输出训练进度(如每个 epoch 的 loss)、3-最详细,输出调参全过程的详细信息;(3-输出最详细的调参日志)
⑥ seed:设置 随机数种子,确保每次运行代码时结果一致(可复现性)。

model=fasttext.train_supervised(input="./data/train_fastText_jieba.txt",# train_xx 训练集# autotuneValidationFile当传入这个参数,fasttext会进入自动调参模式,自动搜索最优的超参数组合# (如学习率 lr、epoch 数、ngram 阶数、词向量维度 dim 等)。如果不传,不会自动调参;autotuneValidationFile="./data/dev_fastText_jieba.txt",# dev_xx 验证集# 调参搜索的总时间(秒),时间越长搜索越充分autotuneDuration=120,# 搜索的时间 默认300sthread=3,# 单线程,确保可复现性verbose=3,# 输出调参过程seed=42)