使用fasttext训练

该博客介绍了如何利用Python的FastText库对中文文本进行预处理和训练分类模型。首先,通过jieba进行分词,然后将训练和验证数据转换为适合FastText的格式。接着,使用FastText的自动超参数调优功能在验证集上进行模型优化,并在验证集上评估模型性能。最后,保存模型并展示如何进行预测。
摘要由CSDN通过智能技术生成

使用fasttext训练分类模型

import fasttext
import pandas as pd
import jieba

# 训练数据路径
train_data_path = "./name_question.train"
# 验证数据路径
valid_data_path = "./name_question.valid"

# 词粒度存储路径
word_train_data_path = "./name_question.train.2"
word_valid_data_path = "./name_question.valid.2"


# 读取训练数据,分隔符为空格
df1 = pd.read_csv(train_data_path, header=None, sep=" ")
df2 = pd.read_csv(valid_data_path, header=None, sep=" ")

# 使用词的形式进行训练
df1[1] = pd.DataFrame(map(lambda x: " ".join(jieba.cut(x)), df1[1]))
df2[1] = pd.DataFrame(map(lambda x: " ".join(jieba.cut(x)), df2[1]))


# 生成训练数据
df1.to_csv(word_train_data_path, header=False, index=False, sep="\t")
# 生成验证数据
df2.to_csv(word_valid_data_path, header=False, index=False, sep="\t")

# 进行模型训练,这里我们将n-gram特征设置为2
# 其他参数都是用默认,如:embed_size为100,训练轮数epoch为5
# model = fasttext.train_supervised(input=word_train_data_path, wordNgrams=2)

# 使用自动超参数调优方法进行模型调优
# autotuneValidationFile参数需要指定验证数据集所在路径,
# 它将在验证集上使用随机搜索方法寻找可能最优的超参数.
# 使用autotuneDuration参数可以控制随机搜索的时间, 默认是300s,
# 根据不同的需求, 我们可以延长或缩短时间.
model = fasttext.train_supervised(
    input=word_train_data_path,
    autotuneValidationFile=word_valid_data_path,
    autotuneDuration=600,
    wordNgrams=2,
)

# 之后我们在验证集上进行验证
valid_result = model.test(word_valid_data_path)
print(valid_result)
#保存模型
import time
time_ = int(time.time())
model_save_path = "./name_question_{}.bin".format(time_)
model.save_model(model_save_path)
#加载模型
# 使用fasttext的load_model进行模型的重加载
model = fasttext.load_model(model_save_path)
# 对样本进行预测
result = model.predict(" ".join(list("还在么同学?")))
print(result)
result = model.predict(" ".join(list("贵姓?")))
print(result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值