1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 2901字,需瀏覽 6分鐘

         ·

        2020-11-18 23:18

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


        01

        賽事介紹


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


        02

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


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


        03

        Baseline方案


        先將訓(xùn)練集和測試集做讀取和簡單的預(yù)處理以及合并操作。
        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

        把句子轉(zhuǎn)換成詞索引序列,并對部分序列進行補長,構(gòu)造一個簡單的多層卷積神經(jīng)網(wǎng)絡(luò),使用embedding層將每個詞編碼轉(zhuǎn)換成詞向量,采取常規(guī)的交叉熵損失、adam優(yōu)化器進行五折交叉驗證,取五折的平均值作為最后測試集的預(yù)測概率以保證模型的穩(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ù)。顯然,改進的方案有很多,我們可以采用出色的文本分類模型來改進準確率,也可以通過使用表格文件的文本內(nèi)容來增強模型的學(xué)習(xí)能力與泛化能力以提升準確率。

        完整的代碼我已經(jīng)上傳,在后臺回復(fù)「baseline」即可。


        ——END——



        掃碼二維碼

        獲取更多精彩

        老肥碼碼碼

        瀏覽 51
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            特级西西裸体444Www高清大胆 | 一区二区三区中文字野结衣 | 玖玖综合 | 日韩国产片 | 成人免费乱码大片在线播放 | 操逼逼电影网 | 波多野结衣无码一区=区三区 | 精品一区二区三区麻豆 | 男人日女人阴道视频 | 少妇春情耸动雪白大腿 |