去年底我測試了左岸開發的中文斷詞模組 jieba, 在支援自訂字典功能的加持下, 繁體中文的斷詞效果倒也還不錯. 今天在 "Python 實戰聖經 (碁峰, 2021)" 這本書讀到 pywordseg 這個專為繁體中文開發的斷詞模組, 今天就來測試看看唄. 關於 Jieba 的用法參考 :
與 Jieba 不同的是, pywordseg 模組採用深度學習模型 (elmo/w2v) 來斷詞, 雖然準確度較高, 但所需要的算力也較大, 最好是開啟 GPU 來加速. 由於我的筆電沒有 GPU, 故以下測試改在 Colab 上進行. 關於 Colab 用法參考 :
由於 Colab 未預載 pywordseg, 故使用前須先安裝 :
!pip install pywordseg
安裝完就可以匯入所有模組來使用 :
from pywordseg import *
第一次會先下載模型, 包含系統斷句模型與 CharEmb, ELMo 等模型, 總共超過 500MB, 需要花點時間. 但下載完後匯入模組與函式時卻出現 IndexError :
我以為是 pywordseg 版本問題, 於是改安裝較舊版本 0.0.9, 但還是無法順利匯入, 這回出現的錯誤是 TypeError :
即使是只匯入 Wordseg 函式也是一樣 :
from pywordseg import Wordseg
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-bf1f65fc63ab> in <cell line: 1>()
----> 1 from pywordseg import Wordseg
10 frames
/usr/local/lib/python3.10/dist-packages/overrides/signature.py in ensure_return_type_compatibility(super_type_hints, sub_type_hints, method_name)
300 sub_return = sub_type_hints.get("return", None)
301 if not _issubtype(sub_return, super_return) and super_return is not None:
--> 302 raise TypeError(
303 f"{method_name}: return type `{sub_return}` is not a `{super_return}`."
304 )
TypeError: Highway.forward: return type `<class 'torch.Tensor'>` is not a `<class 'NoneType'>`.
原因還沒時間研究, 先記下來吧! 不過這套件需要下載這麼大的模型且執行速度慢, 好像用 Jieba 就可以了.
沒有留言:
張貼留言