import pandas as pd
import fasttext
import os
from sklearn.metrics import f1_score
# 转换为fasttext需要的形式
data_set = os.path.join(os.getcwd(), "数据集\\train_set.csv\\train_set.csv")
train_df = pd.read_csv(data_set, 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') # 创建训练集
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']] # 选取最后5000条数据作为验证集进行验证
print(f1_score(train_df['label'].values[-5000:].astype(str), val_pred, average='macro')) # 计算F1值