<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          文本復述,中文文本數(shù)據(jù)增強

          共 6064字,需瀏覽 13分鐘

           ·

          2021-03-17 11:52


          向AI轉型的程序員都關注了這個號??????

          人工智能大數(shù)據(jù)與深度學習  公眾號:datayx


          一.概述
          文本復述任務是指把一句/段文本A改寫成文本B,要求文本B采用與文本A略有差異的表述方式來表達與之意思相近的文本。
          改進谷歌的LaserTagger模型,使用LCQMC等中文語料訓練文本復述模型,即修改一段文本并保持原有語義。
          復述的結果可用于數(shù)據(jù)增強,文本泛化,從而增加特定場景的語料規(guī)模,提高模型泛化能力。

          二.模型介紹

          谷歌在文獻《Encode, Tag, Realize: High-Precision Text Editing》中采用序列標注的框架進行文本編輯,在文本拆分和自動摘要任務上取得了最佳效果。
          在同樣采用BERT作為編碼器的條件下,本方法相比于Seq2Seq的方法具有更高的可靠度,更快的訓練和推理效率,且在語料規(guī)模較小的情況下優(yōu)勢更明顯。

          谷歌公開了本文獻對應的代碼,但是原有任務與當前任務有一定的差異性,需要修改部分代碼,主要修改如下:


          A.分詞方式:原代碼針對英文,以空格為間隔分成若干詞。現(xiàn)在針對中文,分成若干字。


          B.推理效率:原代碼每次只對一個文本進行復述,改成每次對batch_size個文本進行復述,推理效率提高6倍。


          三.文件說明和實驗步驟
          1.安裝python模塊 參見"requirements.txt", "rephrase.sh" 2.訓練和評測模型
          文件需求 bert預訓練的tensorflow 模型
          采用RoBERTa-tiny-clue(中文版)預訓練模型。 網(wǎng)址

          https://storage.googleapis.com/cluebenchmark/pretrained_models/RoBERTa-tiny-clue.zip


          如果想采用其他預訓練模型,請修改“configs/lasertagger_config.json".

          代碼跑通順序:第一種方法:修改運行rephrase.sh 第二種方法詳解: 

          第一步:制作訓練測試驗證集 python get_pairs_chinese/get_text_pair_lcqmc.py 獲得lcqmc中的文本復述語料(語義一致的文本對,且字面表述差異不能過大,第三列為最長公共子串長度與總長度的比值)
          只需要修改lcqmc的目錄位置即可
          python get_pairs_chinese/get_text_pair.py 可根據(jù)自己的預料獲得文本復述語料(第三列為最長公共子串長度與總長度的比值)
          再運行merge_split_corpus.py 將 結果數(shù)據(jù) 按比例劃分 訓練、測試、驗證集

          第二步:短語_詞匯表_優(yōu)化 python phrase_vocabulary_optimization.py
          --input_file=./data/train.txt
          --input_format=wikisplit
          --vocabulary_size=500
          --max_input_examples=1000000
          --enable_swap_tag=false
          --output_file=./output/label_map.txt

          第三步:
          1、制作后續(xù)訓練模型的驗證集
          python preprocess_main.py
          --input_file=./data/tune.txt
          --input_format=wikisplit
          --output_tfrecord=./output/tune.tf_record
          --label_map_file=./output/label_map.txt
          --vocab_file=./data/RoBERTa-tiny-clue/vocab.txt
          --max_seq_length=40
          --output_arbitrary_targets_for_infeasible_examples=false 2、制作后續(xù)訓練模型的訓練集
          python preprocess_main.py
          --input_file=./data/train.txt
          --input_format=wikisplit
          --output_tfrecord=./output/train.tf_record
          --label_map_file=./output/label_map.txt
          --vocab_file=./data/RoBERTa-tiny-clue/vocab.txt
          --max_seq_length=40
          --output_arbitrary_targets_for_infeasible_examples=false


          第四步:
          1、訓練模型
          python run_lasertagger.py
          --training_file=./output/train.tf_record
          --eval_file=./output/tune.tf_record
          --label_map_file=./output/label_map.txt
          --model_config_file=./configs/lasertagger_config.json
          --output_dir=./output/models/wikisplit_experiment_name
          --init_checkpoint=./data/RoBERTa-tiny-clue/bert_model.ckpt
          --do_train=true
          --do_eval=true
          --train_batch_size=256
          --save_checkpoints_steps=200
          --max_seq_length=40
          --num_train_examples=319200
          --num_eval_examples=5000
          2、 模型整理
          python run_lasertagger.py
          --label_map_file=./output/label_map.txt
          --model_config_file=./configs/lasertagger_config.json
          --output_dir=./output/models/wikisplit_experiment_name
          --do_export=true
          --export_path=./output/models/wikisplit_experiment_name


          第五步 根據(jù)test文件進行預測
          python predict_main.py
          --input_file=./data/test.txt
          --input_format=wikisplit
          --output_file=./output/models/wikisplit_experiment_name/pred.tsv
          --label_map_file=./output/label_map.txt
          --vocab_file=./data/RoBERTa-tiny-clue/vocab.txt
          --max_seq_length=40
          --saved_model=./output/models/wikisplit_experiment_name/1587693553
          # 解析,這應該是最后保存的模型文件名稱 可以考如下語句獲得
          # (ls "./output/models/wikisplit_experiment_name/" | grep -v "temp-" | sort -r | head -1) 第六步 對第五步預測的文件進行打分。
          python score_main.py --prediction_file=./output/models/wikisplit_experiment_name/pred.tsv

          #根據(jù)自己情況修改腳本"rephrase.sh"中2個文件夾的路徑,然后運行 sh rephrase.sh
          #腳本中的變量HOST_NAME是作者為了方便設定路徑使用的,請根據(jù)自己情況修改;
          #如果只是離線的對文本進行批量的泛化,可以注釋腳本中其他部分,只用predict_main.py就可以滿足需求。

          3.啟動文本復述服務 根據(jù)自己需要,可選
          根據(jù)自己情況修改"rephrase_server.sh"文件中幾個文件夾的路徑,使用命令"sh rephrase_server.sh"可以啟動一個文本復述的API服務
          本API服務可以接收一個http的POST請求,解析并對其中的文本進行泛化,具體接口請看“rephrase_server/rephrase_server_flask.py"
          有幾個腳本文件如rephrase_for_qa.sh,rephrase_for_chat.sh,rephrase_for_skill.sh是作者自己辦公需要的,可以忽略

          四.實驗效果

          1. 在公開數(shù)據(jù)集Wiki Split上復現(xiàn)模型:
            Wiki Split數(shù)據(jù)集是英文語料,訓練模型將一句話拆分成兩句話,并保持語義一致,語法合理,語義連貫通順。


          1. Exact score=15,SARI score=61.5,KEEP score=93,ADDITION score=32,DELETION score=59,
            基本與論文中的Exact score=15.2;SARI score=61.7一致(這些分數(shù)均為越高越好)。


          2. 在自己構造的中文數(shù)據(jù)集訓練文本復述模型:
            (1)語料來源
            (A)一部分語料來自于LCQMC語料中的正例,即語義接近的一對文本;
            (B)另一部分語料來自于寶安機場用戶QA下面同一答案的問題。; 因為模型的原理,要求文本A和B在具有一定的重合字數(shù),故過濾掉上述兩個來源中字面表述差異大的文本,如“我要去廁所”與“衛(wèi)生間在哪里”。對語料篩選后對模型進行訓練和測試。
            (2)測試結果:
            對25918對文本進行復述和自動化評估,評測分數(shù)如下(越高越好):
            Exact score=29,SARI score=64,KEEP score=84,ADDITION score=39,DELETION score=66.
            CPU上耗時0.5小時,平均復述一句話需要0.72秒。
            可能是語言和任務不同,在中文文本復述上的評測分數(shù)比公開數(shù)據(jù)集高一些。


          五.一些trick
          1.可以設定對于某些字或詞不做修改 如對實體識別NER的語料泛化,需要保證模型不能修改其中的實體;
          對業(yè)務語料泛化,也可以根據(jù)情況保證模型不能修改其中的關鍵字 如日期,航班號等;
          目前,是通過正則的方式定位這些不能被模型修改的位置,然后將這些位置的location設置為1,具體實現(xiàn)參見tagging.py.
          2.增加復述文本與原文本的差異度
          可以對訓練語料中的text_a先進行隨機的swag操作,相應地腳本中enable_swap_tag改為true,再訓練模型將其改寫為text_b;
          實際應用或測試時同樣將原始文本text_a先進行隨機的swag操作,然后利用模型改寫為text_b;
          因為訓練語料中text_a是不通順,但text_b是通順的,所以實際應用或測試時仍然會得到通順的復述結果。

          六.數(shù)據(jù)集
          1.由于不少人咨詢我數(shù)據(jù)集的問題,現(xiàn)將數(shù)據(jù)集地址貼在下面
          You can download LCQMC data set from https://download.csdn.net/download/tcd1112/12357994,But other data is the company data can't give you. You can also leave your E-mail, I will send you LCQMC data



          閱讀過本文的人還看了以下文章:


          TensorFlow 2.0深度學習案例實戰(zhàn)


          基于40萬表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測


          《基于深度學習的自然語言處理》中/英PDF


          Deep Learning 中文版初版-周志華團隊


          【全套視頻課】最全的目標檢測算法系列講解,通俗易懂!


          《美團機器學習實踐》_美團算法團隊.pdf


          《深度學習入門:基于Python的理論與實現(xiàn)》高清中文PDF+源碼


          特征提取與圖像處理(第二版).pdf


          python就業(yè)班學習視頻,從入門到實戰(zhàn)項目


          2019最新《PyTorch自然語言處理》英、中文版PDF+源碼


          《21個項目玩轉深度學習:基于TensorFlow的實踐詳解》完整版PDF+附書代碼


          《深度學習之pytorch》pdf+附書源碼


          PyTorch深度學習快速實戰(zhàn)入門《pytorch-handbook》


          【下載】豆瓣評分8.1,《機器學習實戰(zhàn):基于Scikit-Learn和TensorFlow》


          《Python數(shù)據(jù)分析與挖掘實戰(zhàn)》PDF+完整源碼


          汽車行業(yè)完整知識圖譜項目實戰(zhàn)視頻(全23課)


          李沐大神開源《動手學深度學習》,加州伯克利深度學習(2019春)教材


          筆記、代碼清晰易懂!李航《統(tǒng)計學習方法》最新資源全套!


          《神經(jīng)網(wǎng)絡與深度學習》最新2018版中英PDF+源碼


          將機器學習模型部署為REST API


          FashionAI服裝屬性標簽圖像識別Top1-5方案分享


          重要開源!CNN-RNN-CTC 實現(xiàn)手寫漢字識別


          yolo3 檢測出圖像中的不規(guī)則漢字


          同樣是機器學習算法工程師,你的面試為什么過不了?


          前海征信大數(shù)據(jù)算法:風險概率預測


          【Keras】完整實現(xiàn)‘交通標志’分類、‘票據(jù)’分類兩個項目,讓你掌握深度學習圖像分類


          VGG16遷移學習,實現(xiàn)醫(yī)學圖像識別分類工程項目


          特征工程(一)


          特征工程(二) :文本數(shù)據(jù)的展開、過濾和分塊


          特征工程(三):特征縮放,從詞袋到 TF-IDF


          特征工程(四): 類別特征


          特征工程(五): PCA 降維


          特征工程(六): 非線性特征提取和模型堆疊


          特征工程(七):圖像特征提取和深度學習


          如何利用全新的決策樹集成級聯(lián)結構gcForest做特征工程并打分?


          Machine Learning Yearning 中文翻譯稿


          螞蟻金服2018秋招-算法工程師(共四面)通過


          全球AI挑戰(zhàn)-場景分類的比賽源碼(多模型融合)


          斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)


          python+flask搭建CNN在線識別手寫中文網(wǎng)站


          中科院Kaggle全球文本匹配競賽華人第1名團隊-深度學習與特征工程



          不斷更新資源

          深度學習、機器學習、數(shù)據(jù)分析、python

           搜索公眾號添加: datayx  



          機大數(shù)據(jù)技術與機器學習工程

           搜索公眾號添加: datanlp

          長按圖片,識別二維碼



          瀏覽 219
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美日韩综合 | 国产精品成人影片 | 人妻综合网 | 色日本黄色视频 | 俺去也三级 |