标签:比赛 import softmax tla 计算 window hiera 窗口 标签
- input # training file path (required) 训练文件路径(必须)<br>
- lr # learning rate [0.1] 学习率 default 0.1<br>
- dim # size of word vectors [100] 词向量维度 default 100<br>
- ws # size of the context window [5] 上下文窗口大小 default 5<br>
- epoch # number of epochs [5] epochs 数量 default 5<br>
- minCount # minimal number of word occurences [1] 最低词频 default 5<br>
- minCountLabel # minimal number of label occurences [1] 最少出现标签的次数 default 1<br>
- minn # min length of char ngram [0] 最小字符长度 default 0<br>
- maxn # max length of char ngram [0] 最大字符长度 default 0<br>
- neg # number of negatives sampled [5] 负样本数量 default 5<br>
- wordNgrams # max length of word ngram [1] n-gram设置 default 1<br>
- loss # loss function {ns, hs, softmax, ova} [softmax] 损失函数 {ns,hs,softmax} default softmax<br>
- bucket # number of buckets [2000000] 桶数量 default 2000000<br>
- thread # number of threads [number of cpus] 线程数量<br>
- lrUpdateRate # change the rate of updates for the learning rate [100] 更改学习率的更新率<br>
- t # sampling threshold [0.0001] 采样阈值 default 0.0001<br>
- label # label prefix [‘__label__‘] 标签前缀 default __label__<br>
- verbose # verbose [2]<br>
- pretrainedVectors # pretrained word vectors (.vec file) for supervised learning [] 指定使用已有的词向量 .vec 文件 default None<br>
不需要我们计算词向量后再训练。只需要将分好的词放入fasttext即可训练。
本次比赛,由于文本为匿名,无法分词,数据以单个字的编码形式出现。
因此无法认为分词,但是fasttext存在ngram参数,可通过调节该参数让fasttext帮我们分词同时还帮我们计算词向量。
因此训练时,直接将数据(csv格式)路径放入fasttext即可。
让模型分得更好
使用默认参数运行 fastText 所获得的模型在分类新问题时非常糟糕。
可以尝试通过更改默认参数来提高性能。
针对上述参数:
训练模式下涉及到的主要参数有
- 学习率(-lr)
- 隐层的维数(-dim)
- 最小词频(-minCount)
- 负采样个数(-neg)和n-grams的长度(-wordNgrams)等。
- word_ngrams 大于1时,模型的精度会提交很多,但是模型的大小也是很大不少,不建议设置太大,因为训练的复杂度和模型的大小会指数级增长
- 需要注意的是修改了 word_ngrams,需要相应的调整bucket,bucket设置的小一点,否则预留会预留太多bucket使模型太大
- lr 设置过大不容易收敛,太小容易过拟合,训练速度也会变慢
- loss 损失函数选用hs(hierarchical softmax)要比ns(negative sampling) 训练速度要快很多倍,并且准确率也更高
fasttext不需要我们计算词向量后再训练。只需要将分好的词放入fasttext即可训练
def no_n_kfold_fasttext(train,test):
# train转换为符合fasttext输入格式
train[‘label_ft‘] = ‘__label__‘ + train[‘label‘].astype(‘str‘)
# 全量train生成文件fasttext_train.csv
train[[‘text‘, ‘label_ft‘]].to_csv(‘fasttext_train.csv‘, index=False, header=None, sep=‘\t‘)
import fasttext
# lr=0.5, wordNgrams=2, epoch=25
model = fasttext.train_supervised(‘fasttext_train.csv‘, lr=0.75, wordNgrams=3,
verbose=2, minCount=1, epoch=25, loss=‘hs‘)
# 预测test_a数据
test_pre = [model.predict(x)[0][0].split(‘__‘)[-1] for x in test_a[‘text‘]]
#返回预测test_a的结果list
return test_pre
import pandas as pd
train = pd.read_csv(r‘./train_set.csv‘, sep=‘\t‘)
test_a = pd.read_csv(r‘./test_a.csv‘, sep=‘\t‘)
# 导出结果,提交
test_pre = no_n_kfold_fasttext(train,test_a)
pd.Series(test_pre, name=‘label‘).to_csv(‘result_1.csv‘, index=False)
预测分数:
暂时还没想到实现fasttext的十折交叉验证方法。 应该是对fasttext还不熟悉。 后面会做了再补上
Datawhale-新闻文本分类-task4-基于深度学习的文本分类1-fastText
标签:比赛 import softmax tla 计算 window hiera 窗口 标签
原文地址:https://www.cnblogs.com/Alexisbusyblog/p/13388371.html