簡體   English   中英

有沒有辦法腌制一個快速文本模型/對象?

[英]Is there a way to pickle a fasttext model/object?

我剛剛訓練了我的fasttext model 並且我正在嘗試使用引腳https://pypi.org/project/pins/香根草Z5E056C500A1C4B6A7110B50D80A1C4B6A7110B50D807BADE5Z://pypi.org/project/pins/和控制版本的香根草 Z5E056C500A1C4B6A7110B50D80A1C4B6A7BADE5Z///pi.orgproject
但是,要做到這一點,我需要腌制fasttext 對象/模型。 這就是我掙扎的地方。
PS:當我將 fasttext model 保存到磁盤時,它保存為.bin二進制文件。 這是使用引腳時代碼的外觀:

import pins
import fasttext
board = pins.board_temp(allow_pickle_read = True)
board.pin_write(ft_model, "ft_model", type="joblib")  #ft_model is a fasttext model I already trained

我運行這些 ^ 行得到的錯誤代碼是: cannot pickle 'fasttext_pybind.fasttext' object

當我使用香根草時也會發生同樣的情況:

import vetiver
import fasttext
import pins

class FasttextHandler(BaseHandler):
    def __init__(self, model, ptype_data):
        super().__init__(model, ptype_data)

handled_model = FasttextHandler(model = ft_model, ptype_data = None )
vetiver_fasttext_model = vetiver.VetiverModel(model = handled_model, model_name = "model")
ft_board = board_temp(allow_pickle_read = True)
vetiver.vetiver_pin_write(ft_board, vetiver_fasttext_model)

同樣,我得到的這段代碼 ^ 的錯誤代碼是cannot pickle 'fasttext_pybind.fasttext' object

我感謝任何幫助或任何提示,

非常感謝你!

賈馬爾

官方的fasttext快速文本模塊依賴於 Facebook 的非 Python 實現和存儲格式——所以這很可能是您遇到的抗泡菜障礙。

如果您不使用--supervised分類模式,則完整的 Python 和 Cython Gensim 庫包括一個FastText model class ,它可以執行除該模式之外的所有操作。 它還可以加載/保存 Facebook 格式的模型。

雖然 Gensim 自己的本機.save()操作使用酸洗和原始 numpy 數組文件的混合,但出於歷史和效率的原因,它的模型也應該能夠完成酸洗(如果使用最近的 Python 否則你的項目可以承受全部開銷)。

如果您仍然需要fasttext中的功能(如監督模式),您可能必須使用不可腌制的部分包裝其原生對象,並使用攔截腌制序列化嘗試的代理對象,並以某種方式利用其自定義格式來模擬腌制能力。

例如,在序列化時,要求被包裝的 object 以通常的方式寫入自身,然后將整個原始本機文件作為包裝器 object 的一個序列化原始數據字段進行腌制序列化。 在反序列化時,顯式獲取巨大的原始文件字段,將其寫入磁盤,然后使用包裝類的本機負載。

它會相當緩慢和丑陋,並且在兩種序列化格式之間編組期間涉及大量額外的臨時可添加 memory 使用 - 但也許如果您別無選擇,並且您的系統對延遲/內存使用有足夠的容忍度,它可以讓您在所需的基於pins / vetiver的架構中使用本機fasttext模型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM