科技報告數據語料處理(關鍵詞、中圖分類名稱)

来源:https://www.cnblogs.com/rainbow-1/archive/2022/10/17/16801120.html
-Advertisement-
Play Games

科技報告語料處理 接著上次爬取到的科技報告數據進行處理【參考 https://www.cnblogs.com/rainbow-1/p/16725576.html】 為了建立科技報告的分類模型,現將其關鍵字和中圖分類名稱進行彙總,作為原始語料庫。 先前爬取的數據,存在數據格式不統一不規範的問題,比如分 ...


科技報告語料處理

接著上次爬取到的科技報告數據進行處理【參考 https://www.cnblogs.com/rainbow-1/p/16725576.html】

為了建立科技報告的分類模型,現將其關鍵字和中圖分類名稱進行彙總,作為原始語料庫。

先前爬取的數據,存在數據格式不統一不規範的問題,比如分類名稱為【數理科學與化學、數理科學和化學 分為了同一類】

經過簡單處理後的完整數據(mysql和txt都有,包括本文中提到的原始語料資源)可以關註我的公眾號【靠譜楊的挨踢生活】回覆【科技報告】獲取。

語料共計 359141 行。

1、標準表

分類字母序號+名稱 tech_class.json

{
  "R": "醫葯、衛生",
  "TB": "一般工業技術",
  "Q": "生物科學",
  "O": "數理科學和化學",
  "S": "農業科學",
  "T": "工業技術",
  "TP": "自動化技術、電腦技術",
  "P": "天文學、地球科學",
  "TN": "無線電電子學、電信技術",
  "TG": "金屬學與金屬工藝",
  "TH": "機械、儀錶工業",
  "TQ": "化學工業",
  "C": "社會科學總論",
  "X": "環境科學、安全科學",
  "TU": "建築科學",
  "TS": "輕工業、手工業",
  "TK": "能源與動力工程",
  "TM": "電工技術",
  "TD": "礦業工程",
  "F": "經濟",
  "G": "文化、科學、教育、體育",
  "TV": "水利工程",
  "U": "交通運輸",
  "N": "自然科學總論",
  "TE": "石油、天然氣工業",
  "TF": "冶金工業",
  "TJ": "武器工業",
  "V": "航空、航天",
  "B": "哲學、宗教",
  "TL": "原子能技術",
  "K": "歷史、地理",
  "D": "政治、法律",
  "J": "藝術",
  "H": "語言、文字",
  "E": "軍事",
  "Z": "綜合性圖書",
  "I": "文學",
  "A": "mks主義、ln主義、mzd思想、dxp理論"
}

僅分類名稱 tech_name.txt

醫葯、衛生
一般工業技術
生物科學
數理科學和化學
農業科學
工業技術
自動化技術、電腦技術
天文學、地球科學
無線電電子學、電信技術
金屬學與金屬工藝
機械、儀錶工業
化學工業
社會科學總論
環境科學、安全科學
建築科學
輕工業、手工業
能源與動力工程
電工技術
礦業工程
經濟
文化、科學、教育、體育
水利工程
交通運輸
自然科學總論
石油、天然氣工業
冶金工業
武器工業
航空、航天
哲學、宗教
原子能技術
歷史、地理
政治、法律
藝術
語言、文字
軍事
綜合性圖書
文學
mks主義、ln主義、mzd思想、dxp理論

分類名稱+語料數字序號 tech_order_class.json

{
  "醫葯、衛生": "0",
  "一般工業技術": "1",
  "生物科學": "2",
  "數理科學和化學": "3",
  "農業科學": "4",
  "工業技術": "5",
  "自動化技術、電腦技術": "6",
  "天文學、地球科學": "7",
  "無線電電子學、電信技術": "8",
  "金屬學與金屬工藝": "9",
  "機械、儀錶工業": "10",
  "化學工業": "11",
  "社會科學總論": "12",
  "環境科學、安全科學": "13",
  "建築科學": "14",
  "輕工業、手工業": "15",
  "能源與動力工程": "16",
  "電工技術": "17",
  "礦業工程": "18",
  "經濟": "19",
  "文化、科學、教育、體育": "20",
  "水利工程": "21",
  "交通運輸": "22",
  "自然科學總論": "23",
  "石油、天然氣工業": "24",
  "冶金工業": "25",
  "武器工業": "26",
  "航空、航天": "27",
  "哲學、宗教": "28",
  "原子能技術": "29",
  "歷史、地理": "30",
  "政治、法律": "31",
  "藝術": "32",
  "語言、文字": "33",
  "軍事": "34",
  "綜合性圖書": "35",
  "文學": "36",
  "mks主義、ln主義、mzd思想、dxp理論": "37"
}

基本思路,提取各個分類報告中的【關鍵詞和中圖分類名稱】。用 \t 分隔 關鍵詞和名稱,關鍵詞中間用英文逗號分隔。

實現效果如圖:【序號是從0開始的 0 ---> 醫葯、衛生】

image-20221017230736959

2、代碼

2.1、data_clean.py

提取關鍵詞和名稱,保存到tech_all.txt文件(資料庫如文首所示方式關註公眾號自行獲取)

import json

from nlp_demo.tech_clean.utils_mysql import query

def get_class_json():
    f_class = open ("../tech_data/tech_name.txt", "r", encoding='utf-8')
    res_dict = {}
    while True:
        line = f_class.readline()
        if line:
            # print(line)
            # 按\t分隔 分開名稱和序號
            temp_str_list = line.split("\t")
            class_name = str(temp_str_list[0])
            class_num = str(temp_str_list[1].replace("\n",""))
            res_dict[class_name] = class_num
            # print("-------------------------")
        else:
            break
    print(json.dumps(res_dict,ensure_ascii=False))
    class_json = json.dumps(res_dict,ensure_ascii=False)
    with open("../tech_data/tech_order_class.json", "w", encoding='utf-8') as f:
        f.write(class_json)  # 自帶文件關閉功能,不需要再寫f.close()
    f_class.close()
    return

# 處理語料
"""
處理訓練集數據格式【tech_train.txt】
關鍵詞(使用英文逗號分隔) \t 分類號(從0開始)
-----
分類名稱表【tech_name.txt】
分類名稱 \t 分類號(從0開始)
"""
def get_tech_data():
    with open("../tech_data/tech_class.json", "r", encoding='utf-8') as fo:
        # print(fo.read())
        table_name = json.loads(fo.read())  # json 轉 字典
    with open("../tech_data/tech_order_class.json", "r", encoding='utf-8') as fo_1:
        # print(fo.read())
        tech_class = json.loads(fo_1.read())  # json 轉 字典
    # print(table_name)
    # 使用上面的數據 拼接字元串 拼接表名 k 是字母號 v 是名稱
    for k,v in table_name.items():
        order_num = None    # 根據名稱找到對應的數字序號
        if(k == None or v == None):
            continue
        for k1, v1 in tech_class.items():
            # k1 是名稱 v1 是數字序號
            if(v == k1):
                order_num = v1  # 給序號賦值
        print("正在處理的類別:  " + k , v)
        k = str(k)
        v = str(v)
        sql = "select * from tech_"+ k
        # print("這是sql語句: " + sql)
        # 第7個位置是 中文關鍵詞 第16個位置是中圖分類名稱
        res_one_class = query(sql)
        for res_one_class_item in res_one_class:
            keywordsCn = str(res_one_class_item[7])
            classification = str(order_num)
            with open("../tech_res_data/tech_all" + ".txt","a+",encoding='utf-8') as fw:
                keywordsCn = keywordsCn.replace(";",",")
                keywordsCn = keywordsCn.replace(";",",")
                keywordsCn = keywordsCn.replace(",,","")
                keywordsCn = keywordsCn.replace(",",",")
                print(keywordsCn + " --------> " + classification)
                fw.write( keywordsCn + "\t" + classification + "\n")
        print("============= 這是分隔符 =============")
    return 0

if __name__ == '__main__':
    # get_class_json()    # 生成json格式的分類名稱文件
    get_tech_data()

2.2、utils_mysql.py

import pymysql
"""
------------------------------------------------------------------------------------
"""
def get_conn():
    """
    :return: 連接,游標
    """
    # 創建連接
    conn = pymysql.connect(host="127.0.0.1",
                    user="root",
                    password="reliable",
                    db="tech",
                    charset="utf8")
    # 創建游標
    cursor = conn.cursor()  # 執行完畢返回的結果集預設以元組顯示
    return conn, cursor

def close_conn(conn, cursor):
    if cursor:
        cursor.close()
    if conn:
        conn.close()
"""
-----------------------------------------------------------
"""
"""
------------------------------------------------------------------------------------
"""
def query(sql,*args):
    """
    通用封裝查詢
    :param sql:
    :param args:
    :return:返回查詢結果 ((),())
    """
    conn , cursor= get_conn()
    print(sql)
    cursor.execute(sql)
    res = cursor.fetchall()
    close_conn(conn , cursor)
    return res

好看請贊,養成習慣:) 本文來自博客園,作者:靠譜楊, 轉載請註明原文鏈接:https://www.cnblogs.com/rainbow-1/p/16801120.html

關於筆者: 我的主頁

文章同步51CTO,可以幫忙踩一踩 ~ 我的51CTO博客

更多日常分享盡在我的VX公眾號:靠譜楊的挨踢生活


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 百度ueditor使用方法 下載地址:https://github.com/fex-team/ueditor html <textarea id="content" type="text/plain" name="content" lay-verify="required"></textarea> ...
  • 摘要:本文將淺析nextTick的作用、使用場景和背後的原理實現,希望對大家有所幫助。 本文分享自華為雲社區《Vue 中的 nextTick 有什麼作用?》,作者:CoderBin。 一、什麼是nextTick 先看看官方對其的定義: 在下次 DOM 更新迴圈結束之後執行延遲回調。在修改數據之後立即 ...
  • 結論:76版本(至少)之前的Chrome,<video>poster屬性只在created中生效 需求描述:輸入視頻分:秒格式【00:00】,視頻封面顯示為輸入時間的視頻截圖 方案:由輸入分:秒修改為增加截取按鈕,點擊時暫停播放,獲取當前播放時間,資料庫保存為double;展示時通過canves繪製 ...
  • 一、HTTP和HTTPS協議的概念及區別 1.HTTP 概念 HTTP即超文本運輸協議,是實現網路通信的一種規範,它定義了客戶端和伺服器之間交換報文的格式和方式,預設使用 80 埠。它使用 TCP 作為傳輸層協議,保證了數據傳輸的可靠性。 HTTP是一個傳輸協議,即將數據由A傳到B或將B傳輸到A, ...
  • 作為一個程式員如果你想要找到你心儀的工作,不可避免的就會問到很多八股文,雖然有的和工作沒有半毛錢關係,但是你如果想要通過面試還必須得會。所以我最近開始總結一些面試題,一是為了加強自己的理解能夠找到一份好的工作,二是為了儘可能的幫助更多的小伙伴能夠快速掌握相關知識或者順利通過面試🎉。 本篇文章介紹了 ...
  • 觀察者模式是使用頻率最高的設計模式之一,用於建立對象與對象之間的依賴關係。當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並被自動更新。 ...
  • 一篇文章帶你掌握MyBatis簡化框架——MyBatisPlus 我們在前面的文章中已經學習了目前開發所需的主流框架 類似於我們所學習的SpringBoot框架用於簡化Spring開發,我們的國人大大也開發了一款MyBatisPlus框架用來簡化MyBatis開發 下麵讓我們來逐步掌握MyBatis ...
  • 前置配置 # META-INF/spring.factories文件配置 # ApplicationContextInitializer org.springframework.context.ApplicationContextInitializer=com.test.springbootdemo ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...