<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>

          中移集成首屆OneCity編程大賽Baseline分享

          共 2901字,需瀏覽 6分鐘

           ·

          2020-11-18 23:18

          機緣巧合在DC競賽上看到了這個比賽,這個編程比賽正是數(shù)據(jù)類算法比賽,主要是自然語言處理相關的文本多分類任務,老肥我從來沒有學習過這NLP領域相關的知識,正好借這個比賽學習充電,在此分享一個簡單的baseline方案,比賽地址文末閱讀原文即可直達。


          01

          賽事介紹


          本屆OneCity編程大賽主題圍繞智慧城市OneCity賦能智慧政務,實現(xiàn)政務數(shù)據(jù)管理更智慧化、智能化展開。政務數(shù)據(jù)智能算法包括分類與標簽提取,根據(jù)政府表格文件標題與內容,按照一定的原則將雜亂無章的文件自動映射到具體的類目上,加速數(shù)據(jù)歸檔的智能化與高效化。本次比賽旨在通過抽取政務表格文件中的關鍵信息,來實現(xiàn)表格數(shù)據(jù)自動化分類的目標。
          總的來說就是表格文件的文本分類的問題,賽事的評價指標為準確率,比賽獎勵包含蘋果電腦、華為手機等,目前共有500多人參賽。


          02

          比賽數(shù)據(jù)


          次比賽的數(shù)據(jù)是從政府開放數(shù)據(jù)平臺收集的真實數(shù)據(jù),共有9萬多個表格文件,包括xls、xlsx、csv三種格式,其中csv文件編碼格式統(tǒng)一為utf-8。文件被分為三個部分,訓練集、測試集1和測試集2。其中訓練集(6萬個文件,含標簽)和測試集1(8000個文件,不含標簽)于初賽階段開放給選手下載,測試集2(不含標簽)于復賽階段開放給選手下載。
          主辦方給了許多溫馨的提示,比如有些文件的內容為空,可能僅有標題,還有一些文件擴展名與文件格式不匹配,例如csv文件打開卻是html的內容,基于以上兩個注意點,在本次分享的方案內,我僅使用文件的標題作為訓練數(shù)據(jù)而非表格內容。


          03

          Baseline方案


          先將訓練集和測試集做讀取和簡單的預處理以及合并操作。
          train_df = pd.read_csv('answer_train.csv')
          lb = LabelEncoder()
          train_df['label'] = lb.fit_transform(train_df['label'])
          test_df = pd.read_csv('submit_example_test1.csv')
          test_df.drop('label', axis=1, inplace=True)
          df = pd.concat([train_df, test_df], axis=0)
          df['file'] = df['filename'].apply(lambda x: x.split('.')[0][6:].replace('_', ''))

          接著用jieba分詞,并將每個詞進行編號處理,得到vocab詞典。

          cw = lambda x: list(jieba.cut(x))
          df['words'] = df['file'].apply(cw)
          tokenizer=Tokenizer()
          tokenizer.fit_on_texts(df['words'])
          vocab=tokenizer.word_index

          把句子轉換成詞索引序列,并對部分序列進行補長,構造一個簡單的多層卷積神經網絡,使用embedding層將每個詞編碼轉換成詞向量,采取常規(guī)的交叉熵損失、adam優(yōu)化器進行五折交叉驗證,取五折的平均值作為最后測試集的預測概率以保證模型的穩(wěn)定性。

          oof = np.zeros(len(X_train))
          predictions = np.zeros((len(X_test), 20))
          KF = StratifiedKFold(n_splits=5, shuffle=True, random_state=2020)
          for fold_, (trn_idx, val_idx) in enumerate(KF.split(X_train.values, y_train.values)):
          print("fold n°{}".format(fold_))
          print('trn_idx:',trn_idx)
          print('val_idx:',val_idx)
          X_tr = X_train.iloc[trn_idx]
          X_val = X_train.iloc[val_idx]
          X_train_word_ids = tokenizer.texts_to_sequences(X_tr)
          X_valid_word_ids = tokenizer.texts_to_sequences(X_val)
          X_test_word_ids = tokenizer.texts_to_sequences(X_test)
          X_train_padded_seqs=pad_sequences(X_train_word_ids,maxlen=30)
          X_valid_padded_seqs=pad_sequences(X_valid_word_ids,maxlen=30)
          X_test_padded_seqs=pad_sequences(X_test_word_ids, maxlen=30)
          y_tr = y_train.iloc[trn_idx]
          y_tr = keras.utils.to_categorical(y_tr, num_classes=20)
          y_val = y_train.iloc[val_idx]
          y_val = keras.utils.to_categorical(y_val, num_classes=20)
          model = NN()
          model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
          model.fit(X_train_padded_seqs, y_tr, epochs=50, batch_size=1024, validation_data=(X_valid_padded_seqs, y_val), callbacks=[ES])
          oof[val_idx] = model.predict_classes(X_valid_padded_seqs)
          temp = model.predict_proba(X_test_padded_seqs)
          predictions[:] += temp

          最終該baseline方案可以獲得超過0.96的線上分數(shù)。顯然,改進的方案有很多,我們可以采用出色的文本分類模型來改進準確率,也可以通過使用表格文件的文本內容來增強模型的學習能力與泛化能力以提升準確率。

          完整的代碼我已經上傳,在后臺回復「baseline」即可。


          ——END——



          掃碼二維碼

          獲取更多精彩

          老肥碼碼碼

          瀏覽 51
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  久久午夜无码鲁丝片午夜精 | 国产吧在线 | 天天操狠狠操 | 国产精品三级在线 | 美女交叉免费视频啪啪 |