網站首頁 編程語言 正文
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
相關推薦
- 2022-06-20 C語言中數據是如何存儲在內存中的_C 語言
- 2022-01-31 (數據)圖像預處理——image augmentation圖像增廣之cutout、Mixup、Cut
- 2022-03-26 使用C語言如何輸出逆序數_C 語言
- 2023-07-03 react之自定義hooks
- 2022-05-27 Jmeter通過OS進程取樣器調用Python腳本實現參數互傳_python
- 2022-02-01 nginx 上傳圖片出現跨域
- 2023-01-08 C++?Boost?Assign超詳細講解_C 語言
- 2022-07-13 仿 OriginOS 無清理項動畫
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支