import pandas as pd
from sklearn.metrics import f1_score
train_df = pd.read_csv(’…/input/train_set.csv’, sep=’\t’, nrows=15000)
train_df[‘label_ft’] = ‘label’ + train_df[‘label’].astype(str)
train_df[[‘text’,‘label_ft’]].iloc[:-5000].to_csv(‘train.csv’, index=None, header=None, sep=’\t’)

读取文件

import fasttext# 调用第三方库
model = fasttext.train_supervised(‘train.csv’, lr=1.0, wordNgrams=2, verbose=2, minCount=1, epoch=25, loss=“hs”)#构建模型
val_pred = [model.predict(x)[0][0].split(’__’)[-1] for x in train_df.iloc[-5000:][‘text’]] # 训练模型
print(f1_score(train_df[‘label’].values[-5000:].astype(str), val_pred, average=‘macro’))
“”"
训练一个监督模型, 返回一个模型对象

@param input: 训练数据文件路径
@param lr: 学习率
@param dim: 向量维度
@param ws: cbow模型时使用
@param epoch: 次数
@param minCount: 词频阈值, 小于该值在初始化时会过滤掉
@param minCountLabel: 类别阈值,类别小于该值初始化时会过滤掉
@param minn: 构造subword时最小char个数
@param maxn: 构造subword时最大char个数
@param neg: 负采样
@param wordNgrams: n-gram个数
@param loss: 损失函数类型, softmax, ns: 负采样, hs: 分层softmax
@param bucket: 词扩充大小, [A, B]: A语料中包含的词向量, B不在语料中的词向量
@param thread: 线程个数, 每个线程处理输入数据的一段, 0号线程负责loss输出
@param lrUpdateRate: 学习率更新
@param t: 负采样阈值
@param label: 类别前缀
@param verbose: ??
@param pretrainedVectors: 预训练的词向量文件路径, 如果word出现在文件夹中初始化不再随机
@return model object

基于深度学习的文本分类

相关文章: