人工智慧與自然語言處理工具開發廠商 Explosion,釋出了自然語言處理函式庫 spaCy 2.2,新版本設計更精簡乾淨易於開發使用,並且為訓練、評估和序列化都加入新的模型套件與功能,改善除錯和錯誤處理,也大幅度地降低磁碟占用容量。
spaCy 是一個 Python 的進階自然語言處理函式庫,不只採用最新的人工智慧研究,也講求可用來開發產品的實際可用性,spaCy 內建預訓練的統計模型和單詞向量,以及支援超過 50 種語言的標記化(Tokenization),還含有可應用在標記、解析和命名實體(Entity)辨識的卷積神經網路,並可與深度學習技術整合。spaCy 是一個商業開源軟體以 MIT 授權釋出。
在新版中,增加了新模型以及資料增強(Data Augmentation)系統。spaCy 2.2 內建重新訓練的統計模型,不只修正錯誤,也改進對小寫字母的處理效能,官方提到,跟其他統計模型遇到的問題一樣,spaCy 的模型也會對訓練資料以及使用者資料產生敏感差異,而目前他們遇到的情形是大小寫與形式的問題。
由於用於訓練的資料都是經過良好編輯的文字,因此在遇到大小寫與標點不一致的文字,則會出現正確率下降的問題,為此官方開發了新的資料增強系統,並在 spaCy 2.2 這個版本添加新的單詞替換系統,讓開發者可於訓練模型的過程,在每一遍訓練資料集的句子隨機子集抽換字詞,以解決資料所產生敏感差異。
官方也更新了 CLI 工具,以改進訓練和資料開發流程的各種可用性,特別是在文字分類。新版 CLI 除了改善錯誤訊息、更新文件,同時也讓評估指標更詳細,像是在預設情況下,評估現在按實體類型以及文字類別提供精確的統計。新加入的 debug-data 命令,可以用來驗證訓練和開發資料,以獲得有用的統計資料,或發現無效的實體注釋、循環相依項目和低資料的標籤,官方提到,與其開始訓練一段時間後才發現錯誤,不如先在訓練前檢查資料,可以更節省時間。
由於 spaCy 支援越來越多語言,因此磁碟占用的容量也越來越多,特別是加入可查詢的詞形還原表格,這個表格儲存成 Python 檔案,並在部分情況會變得非常龐大,現在官方把查詢表轉換成 gzip JSON 格式,並移到獨立的套件中,只在需要的時候安裝,根據系統的不同,spaCy 安裝縮小 5 到 10 倍。
spaCy 2.2 新的 DocBin 類別可以更加有效率的序列化 Doc 集合,更快地把一組 Doc 物件序列化或是反序列化,並自動處理許多細節,在開發者搭配多重處理函式庫 Dask 使用時會特別方便。spaCy 以前用於字詞配對的的 PhraseMatcher 演算法,可以輕鬆擴展到大型查詢集,但這個演算法在較少的查詢時,表現反而不一定很快,而這造成不直覺的效能特徵,spaCy 2.2 使用了新的 trie 演算法,這個演算法是基於標記而非字詞,因此配對速度很快,少量查詢速度快 20 倍,即使處理一萬個查詢速度也快上 5 倍。