Datawhale 之NLP学习-打卡(四)

Task4 基于深度学习的文本分类1

1.学习目标

  • 学习FastText的使用和基础原理
  • 学会使用验证集进行调参

2.文本表示方法Part2

  • 现有文本表示方法的缺陷
    One-hot、Bag of Words、N-gram、TF-IDF几种文本表示方法存在的问题:转换得到的向量维度很高,需要较长的训练实践;没有考虑单词与单词之间的关系,只是进行了统计。

  • FastText

    • 一个三层的神经网络,输入层、隐含层和输出层
    • 代码实现

3.基于FastText的文本分类

  • 代码

    import pandas as pd
    from sklearn.metrics import f1_score
    
    train_df = pd.read_csv("./{}/train_set.csv".format(file_dir),sep='\t',nrows=15000)
    train_df['label_ft'] = '__label__' +train_df['label'].astype(str)
    train_df[['text','label_ft']].iloc[:-5000].to_csv('train_test1.csv', index=None, header=None, sep='\t')
    
    import fasttext
    model = fasttext.train_supervised('train_test1.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'))
    
    
  • 结果

4.如何使用验证集调参

  • 参数

猜你喜欢

转载自www.cnblogs.com/rn-05181226-rw/p/13369347.html