日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python深度學習之FastText實現文本分類詳解_python

作者:小魚干兒? ? 更新時間: 2022-11-11 編程語言

FastText是一個三層的神經網絡,輸入層、隱含層和輸出層。

FastText的優點:

使用淺層的神經網絡實現了word2vec以及文本分類功能,效果與深層網絡差不多,節約資源,且有百倍的速度提升

深度學習和機器學習的區別:

與傳統機器學習不同,深度學習既提供特征提取功能,也可以完成分類的功能。機器學習需要再根據提取到的特征再進行分類。

安裝FastText

使用pip安裝

pip install fasttext

因為FastText依賴C++的環境,安裝的時候可能會報錯,有的是C++ 11

有的是C++14看報錯里面缺少那個版本的C++環境就安裝那個版本的環境就可以了

使用FastText進行文本分類的一般步驟

數據格式的要求:

__label__標簽 文本內容 ?或 ?文本內容 __label__標簽
__label__標簽\t文本內容 ?或 ?文本內容\t__label__標簽
文本內容和標簽之間用\t或空格都可以
目前這幾種形式都支持

數據預處理:

將原數據處理為數據要求的格式,分詞以后詞于詞之間用空格連接

這個根據自己數據的情況自己進行處理

訓練模型

import fasttext
model = fasttext.train_supervised('train.csv', lr=1.0, wordNgrams=2, verbose=2, minCount=1, epoch=25, loss="hs")     # 訓練模型
# train.csv 文件路徑,也可以是txt文件,里面的參數根據需要調
"""
  訓練一個監督模型, 返回一個模型對象
  input:           訓練數據文件路徑
  lr:              學習率
  dim:             向量維度
  ws:              cbow模型時使用
  epoch:           次數
  minCount:        詞頻閾值, 小于該值在初始化時會過濾掉
  minCountLabel:   類別閾值,類別小于該值初始化時會過濾掉
  minn:            構造subword時最小char個數
  maxn:            構造subword時最大char個數
  neg:             負采樣
  wordNgrams:      n-gram個數
  loss:            損失函數類型, softmax, ns: 負采樣, hs: 分層softmax
  bucket:          詞擴充大小, [A, B]: A語料中包含的詞向量, B不在語料中的詞向量
  thread:          線程個數, 每個線程處理輸入數據的一段, 0號線程負責loss輸出
  lrUpdateRate:    學習率更新
  t:               負采樣閾值
  label:           類別前綴
  verbose:         ??
  pretrainedVectors: 預訓練的詞向量文件路徑, 如果word出現在文件夾中初始化不再隨機
  model object
  """

預測數據

使用predict預測數據,預測一段文本屬于的類別

model.predict(x)  # x文本內容 返回的數據格式(('__label__4',), array([0.99441689]))
# 可能性最大的標簽和準確率

使用test驗證模型的準確率,傳入的是一個文件,文件的格式和訓練集一樣

返回一個元組(樣本數,精確率,找回率)

模型的保存

model.save_model("model_cooking.bin") # 文件路徑

模型讀取

fasttext.load_model("model_cooking.bin") # 讀取模型

模型的優化

直接使用默認參數去訓練模型一般都得不到特別好的結果,可以通過一些手段來優化模型。第一種可以采取的手段是去掉語料庫當中的停止詞,對于英文的語料庫來說,還可以把所有的大寫字母都轉化成小寫字母。另一種可以采取的手段是調整超參數,比如說修改學習速率、修改epoch等,大家可以參照著fastTest的文檔去進行相應的調整,fastText的文檔中介紹了一種更加方便的自動調參方法,只要我們同時提供訓練集和測試集就可以了,帶來的精確度提升還是非常顯著的:

model = fasttext.train_supervised(input='train.csv', autotuneValidationFile='test.csv', autotuneDuration=600) 
"""
autotuneValidationFile='test.csv',   測試集數據集
autotuneDuration=600                 時間限制,單位為秒,默認為5分鐘
"""
# 如果想查看對應的參數,可以使用
對象.屬性的方式進行查看

舉例:

使用FastText進行文本分類的基本操作就是這些內容,關于深層次的學習大家可以參考

傳送門

原文鏈接:https://blog.csdn.net/qq_52007481/article/details/126628609

欄目分類
最近更新