Linux常用指令之文本管理指令

cat:連接配接并顯示文本

cat主要有三大功能:

1.一次顯示整個檔案。$ cat filename

2.從鍵盤建立一個檔案。$ cat > filename     隻能建立新檔案,不能編輯已有檔案.

3.将幾個檔案合并為一個檔案: $cat file1 file2 > file

   -n 或 --number 由 1 開始對所有輸出的行數編号

   -b 或 --number-nonblank 和 -n 相似,隻不過對于空白行不編号

   -s 或 --squeeze-blank 當遇到有連續兩行以上的空白行,就代換為一行的空白行

  -E顯示結束符(Linux結束符是$)

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    cat檢視文本很友善但也有它的缺點,他不能一頁一頁翻屏檢視,它會将檔案内容一下子dump出來,很不友善,下面介紹兩個翻屏指令

more:作用同cat,但more隻支援向後翻,翻到最後就直接退出了

less:顯示檔案資訊,預設不退出顯示,q即可退出 

      空格:向後翻一屏 

      b:向前翻一屏 

      ENTER:向後翻一行 

      k:向前翻一行 

    關鍵字查找  

      /KEYWORD:查找關鍵字

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

head:顯示檔案的前幾行,預設是10行 

      -n:顯示前多少行 

tail:顯示檔案的後幾行,預設是10行 

    -n:顯示後多少行 

    -f:檢視檔案尾部,而且不退出,等待顯示後續追加的新内容

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

cut:remove sections from each line of file 

-b:byte

-c:character

-f:field 指定要顯示的字段。

   -f1顯示第一個字段

   -f1,3顯示第一個和第三個字段

   -f1-3顯示第一到第三個字段

-d:delimiter 預設空格

cut –b1-15 file,截取1-15位元組

cut –c1-15 file,截取1-15字元

cut –f1 file,截取第一個字段

cut –d”:” –f1,3,5 file,以:為分隔符,截取1,3,5字段。

Linux常用指令之文本管理指令

join

sort:文本排序,僅僅是對顯示檔案的排序,而不影響源檔案的順序,是根據ASSII碼的字元升序來排列的。 

      -n:按照數值大小從小到大排列 

      -r:降序排列 

      -t:指定字段分隔符 

      -k:以哪個字段為關鍵字排序 

      -u:unique 排序後相同的行隻顯示一次 

      -f:忽略字元大小寫 

uniq: 作用:顯示唯一的行,對于那些連續重複的行隻顯示一次

     -c:顯示連續出現的行的次數

     -u:顯示沒有連續出現的行

     -d:顯示連續出現的行

wc:(word count)文本統計

     -l  行統計

    -w 字統計

    -c 字元統計

    -L 統計最長的一行包含多少個字元

tr:轉換或删除字元

 tr [option]…set1 [set2]

轉換文本裡的字元:

Linux常用指令之文本管理指令
Linux常用指令之文本管理指令

  -d:删除出現在字元集中的所有字元

Linux常用指令之文本管理指令

轉載于:https://www.cnblogs.com/wangyi429111/p/8134513.html

作業系統

汽車行業使用者觀點主題及情感分類 一等獎方案

汽車行業使用者觀點主題及情感分類 一等獎方案

方案概述:

  • 我們采用pipeline的方式,将這個任務拆為兩個子任務,先預測主題,根據主題預測情感極性(ABSA),這兩個任務我們都使用深度學習的方式來解決
  • 主題分類是一個多标簽分類問題,我們使用BCE來解決多标簽問題,我們使用不同的模型不同的詞向量(2*4)訓練了8個模型,再加上微調的中文BERT,一種九個模型,我們使用stacking的方式在第二層利用LR極性模型融合,得到預測機率,并使用threshold得到最終預測的标簽。
  • 基于角度的情感分類是一個有兩個輸入的多分類問題,我們使用了三種比較新的網絡設計和四種詞向量再加上微調的BERT一共13個模型,同樣我們也用LR來做stacking。

本文全部代碼 擷取

關注微信公衆号 datanlp ,然後回複關鍵詞 文本分類 即可擷取。

pretrained models:

  • 我們将預訓練好的模型放在了下面的連結中,可以直接拿來測試,免去長時間的訓練。
  • 連結: https://pan.baidu.com/s/1UDzqKeRIzc01chaj3Ew7AA
  • 提取碼: 47e7
  • 其中:
    • backup_polarity.zip:儲存了用來預測情感極性的三個模型四種embedding五折共60個checkpoint。請将其backup_polarity裡面的各個檔案夾放在polarity_level_aspect/目錄下。
    • backup_aspect.zip儲存了用來預測主題的兩個模型四種embedding五折共40個checkpoint。請将backup裡面的各個檔案夾放在attribute_level/目錄下。
    • backup_bert.zip儲存了分别用來預測主題和情感極性五折共是十個checkpoint。請将其裡面的兩個個檔案夾放在berrt/glue_data/目錄下。并且要将polarity_ensemble_online_submit重命名為polarity_ensemble_online
    • backup_chinese_bert.zip 儲存了我們将谷歌開源的中文BERT轉為pytorch版本的預訓練模型,可以用來做fine tune。請将chinese_L-12_H-768_A-12檔案夾放在bert/目錄下。
    • backup_embedding.zip 儲存了我們使用的embedding, 主要是一個由elmo得到的句子表示。請将backup_embedding下的詞向量放在embedding/目錄下。

代碼架構:

  • dataset/: 存放原始的資料集,以及預處理腳本
  • data/: 存放預處理過的資料集,最終主題的預測以及情感的預測也會存儲在這裡。
    • train.txt:預處理之後的訓練集
    • test.txt: 預處理之後的測試集
    • vocabulary.pkl:詞表
    • test_predict_aspect_ensemble.txt:預測主題的結果檔案
    • test_predict_polarity_ensemble.txt:預測情感極性的結果檔案
    • submit2.py:生成最終的送出結果
    • submit2.csv:最終的送出結果。
  • embedding/: 存儲我們處理過的詞向量檔案以及elmo
    • embedding_all_merge_300.txt, 來自于Chinese-Word-Vectors的mixed-large的Word feature.
    • embedding_all_fasttext2_300.txt, 來自于fasttext
    • embedding_all_tencent_200.txt, 來自于Tencent AI Lab Embedding Corpus
    • embeddings_elmo_ly-1.hdf5, 使用中文elmo得到的句子表示,elmo來自于ELMoForManyLangs 。因為太大,是以我們沒有放在代碼這裡,你可以在百度雲連結中的backup_embedding.zip中找到它
  • attribute_level/:運作主題分類的子產品, 裡面有:
    • w2vName中,0代表merge 詞向量, 2 代表使用了elmo(沒有用詞向量),ft2 代表fasttext詞向量, tc代表騰訊詞向量。
    • --mode: 運作模式,
    • --model: 訓練使用的模型:
    • --w2v: 指定使用的詞向量:
    • --use_elmo:是否使用elmo
    • --EPOCHS: 訓練輪數
    • --saved: stacking測試時是從頭測試,還是直接讀取存儲好的預測結果
    • --check_dir:訓練時指定checkpoint的存儲位置
    • --test_dir: 指定測試時讀取checkpoint或者預測結果的檔案夾位置, 因為做stacking同時讀取多個模型,是以可以用指定多個檔案夾,用‘#’做分隔
    • 0:代表leave out 訓練,
    • 1:代表五折交叉訓練, 用于後面的stacking
    • 2: stacking, 利用五折交叉訓練好的模型進行預測并stacking。
    • CNN
    • AttA3: 一種使用label attention的RNN模型
    • merge: embedding_all_merge_300.txt
    • fasttext2: fasttext詞向量
    • tencent: 騰訊詞向量
    • 0 :不使用elmo
    • 2 :隻使用elmo,讀取embedding/中的elmo的hdf5檔案,最終表示和詞向量無關。
    • 0 : 讀取checkpoint對dev集和測試集進行預測
    • 1 :直接讀取存儲好的dev集和測試集預測結果
    • attribute_level.py: 主要運作檔案,主要接受以下指令行參數:
    • networks2.py:我們實作的模型網絡代碼檔案
    • 儲存各個模型的checkpoint的檔案夾:命名格式為cp_ModelName_w2vName,
  • polarity_level_aspect: 給定主題的情感分類子產品:
    • ab_polarity.py :主要運作檔案, 指令行參數類似于attribute_level.py
    • networks.py :模型實作檔案
  • utils: 一些代碼工具,比如封裝資料集類,訓練骨架,評測函數等。

One Step:

  • 因為訓練模型比較久而且模型比較大,是以我們提供了所有checkpoint對OOF和測試集的預測結果,隻需要簡單的做一下stacking就可以得到我們送出的最好結果:
汽車行業使用者觀點主題及情感分類 一等獎方案

最後生成的submit2.csv即可用于送出。

  • 當然如果想要從頭複現,可以看下面的說明:

預處理子產品:

  • 主要就是分詞,分别運作clean_data.py, 和clean_test.py檔案在data檔案夾中生成預處理好的train.txt和test.txt
  • 不過我們已經提供了預處理好的檔案,是以不需要運作。
  • 需要注意的是,如果你重新運作了分詞程式,那麼你生成的資料集的詞表可能和我們提供的詞向量的詞表不一緻,是以你必須重新運作prepare_w2v.py裡面的prepare_w2v函數建構新的詞表和詞向量。

運作主題分類子產品:

訓練階段:(由于訓練時間比較長,你可以直接跳到第三步加載我們預訓練好的模型)

cd attribute_level
           

複制

汽車行業使用者觀點主題及情感分類 一等獎方案
  1. 至此我們在各對應檔案夾中共得到了40個checkpoint。
  2. 微調Bert階段:
    • 我們修改了一個開源的pytorch版本的BERT, 并在本資料集上fine tune了谷歌放出來的中文BERT
    • 首先我們我們将資料集按五折處理成tsv格式,放在bert/glue_data下,(我們已經幫你處理過了)
    • 下載下傳預訓練的BERT模型,運作以下指令行完成轉換:
汽車行業使用者觀點主題及情感分類 一等獎方案
  • fine-tune之後會在各自的fold的檔案夾下得到對應的預測結果oof_test.npy
  1. 使用預訓練好的模型:
  • 以上兩步的所有checkpoint我們都放在了百度雲連結裡,下載下傳解壓之後,放入對應的檔案目錄下即可,這樣可以免去長時間的訓練。
  • 注意檔案夾的對應關系
  • 很遺憾我們沒有儲存Aspect的BERT checkpoint, 我們隻儲存了它的預測結果,因為在訓練過程中,我們已經預測過了。
  • load 模型時, 我們都是在GPU上讀取和儲存的,我們沒有在CPU上進行過測試,是以如果load有問題可以自行修改load處文法,或者聯系我們。
  1. 預測和stacking階段:
  • 不管是從頭訓練還是直接下載下傳,我們現在已經有了訓練好的模型,我們可以進行預測。
  • 我們首先用BERT模型進行預測,事實上我們在每個fold訓練時已經将預測結果儲存為npy,我們現在隻需要将五折結合起來。
汽車行業使用者觀點主題及情感分類 一等獎方案

最終預測的主題結果, 存放在data/test_predict_aspect_ensemble.txt中。

運作情感分類子產品:

  1. 訓練階段:(由于訓練時間比較長,你可以直接跳到第三步加載我們預訓練好的模型)
  • 和主題分類類似:
汽車行業使用者觀點主題及情感分類 一等獎方案
  • 最終我們得到3種網絡4種embedding 在5折下的60個checkpoint儲存在對應的檔案夾中。
  1. 微調Bert階段:

和主題分類類似,但是需要一個aspect預測的結果作為輸入。運作data檔案夾下的build_test_for_predict.py腳本後, 将生成的test.tsv放在bert/glue_data/polarity_ensemble_online/下即可。

設定環境變量:

在bert/檔案夾下運作下面的指令進行fine-tune (5cv): (需要一塊8GB顯存的GPU)

汽車行業使用者觀點主題及情感分類 一等獎方案
汽車行業使用者觀點主題及情感分類 一等獎方案

這樣我們最終在data檔案夾下生成了test_predict_polarity_ensemble.txt檔案,裡面即為預測結果。