[GM] word2sequenceのテキストシーケンス

'' ' 
文本序列化
''' 

クラスWordSequence():
    UNK_TAG = "<UNK>" 
    PAD_TAG = "<PAD>" 
    UNK = 1つの
    PAD = 0 

    デフ__init __(自己):
        self.dict = { 
            self.UNK_TAG:自己.UNK、
            self.PAD_TAG:self.PAD 
        } 
        self.count = {} 


    DEF(自己、文)フィット:
        '' ' 
        统计词频
        :PARAM文:
        :リターン''' 
        文章中の単語のための:
            self.count [単語] = self.count.get(ワード、0)+1 

    デフbuild_vocab(自己、min_count = 0、MAX_COUNT =なし、max_features =なし
        ): ""」max_features =なし): 
        建設辞書基準に基づいて、
        :PARAM min_count:最小词频
        :PARAM MAX_COUNT:最大词频
        :PARAM max_features:最大词语数
        :リターン""」
        min_countがNoneでない場合:
            self.count = {単語:単語のカウントは、(self.count.itemsでカウント)カウント> min_count}もし
        MAX_COUNTがNoneでない場合:
            self.count = {単語:単語のカウント、(self.count.itemsでカウント)であれば、カウント<MAX_COUNT} 
        max_featuresがNoneでない場合:
            #排序
            self.count =辞書(ソート(self.count.items()、ラムダX:X [-1]、逆=真):max_features])

        単語のself.countで:
            self.dict [単語] = LEN(self.dict)#每次単語对应一个数字

        #把dictの进行翻转 
            self.inverse_dict = dictの(ZIP(self.dict.valuesは()、self.dict.keys()))

    DEF変換(自己、文、MAX_LEN =なし):
        '' ' 
        デジタルへの文シーケンス
        :PARAM文:
        :リターン:
        '' ' 
        IF LEN(文)> MAX_LEN:
            文=文[:MAX_LEN] 
        他:
            文=文+ [self.PAD_TAG] *(LEN-MAX_LEN(文))
        リターン[セルフ。文章中のIのためのdict.get(I ,. 1)] 

    DEFのinverse_transform(セルフ、が入射):
        "" " 
        シーケンス内の文字数
        :PARAMが入射:
        :リターン:
        " ""
        リターン[I INが入射用self.inverse_dict.get(I、 "<UNK>")]

    デフ__len __(自己):
        リターンでlen(self.dict)

の場合__name__ == '__main__':
    文= [[ "今天"、 "天气"、 "很"、 "好"]、
                 [ "今天"、 "去" 、 "吃"、 "什么"]] 

    WS = WordSequence()
    文のための文章で:
        ws.fit(文)

    ws.build_vocab(min_count = 0)
    プリント(ws.dict)
    RET = ws.transform([ "好" 、 "热"、 "呀"、 "呀"、 "呀"、 "呀"、 "呀"、 "呀"、 "呀"]、MAX_LEN = 5)
    プリント(RET)
    RET = ws.inverse_transform(RET)
    印刷(RET)

  コーパス直列化および保存

 

word_sequenceインポートWordSequenceからの
データセットのインポートget_dataloaderのから
輸入ピクルス
tqdm輸入tqdmからの

場合__name__ == '__main__':
    WS = WordSequence()
    train_data = get_dataloader(真)
    TEST_DATA = get_dataloader(偽)
    レビューのために、tqdmのラベル(train_data、合計= LEN(train_data)): レビューにおけるレビューのために
            (レビュー)ws.fit 
    :レビューのために、tqdmのラベル(TEST_DATA、合計= lenは(TEST_DATA))
        レビューでのレビューのために:
            ws.fit(レビュー)

    ws.build_vocab()
    印刷(LEN(WS))
    pickle.dump(WS、オープン( "./モデル/ ws.pkl"))

 

  

 

おすすめ

転載: www.cnblogs.com/LiuXinyu12378/p/12319312.html