萬(wàn)音澤
(1.南開大學(xué)金融學(xué)院 天津 300050;2.南開大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 天津 300350)
在金融工程的輿情監(jiān)測(cè)與分析中,部分項(xiàng)目需要采用“爬蟲”技術(shù)智能監(jiān)測(cè)網(wǎng)頁(yè)內(nèi)容,進(jìn)行數(shù)據(jù)挖掘、存儲(chǔ)、讀取、機(jī)器學(xué)習(xí)等,存儲(chǔ)及讀取數(shù)據(jù)時(shí)需要對(duì)大量數(shù)據(jù)進(jìn)行分類與編碼,進(jìn)而進(jìn)行分類存儲(chǔ)、數(shù)據(jù)分析等。GB/T 4754—2017《國(guó)民經(jīng)濟(jì)行業(yè)分類》提供了幾乎所有經(jīng)濟(jì)活動(dòng)的分類與編碼,極大方便了項(xiàng)目所需的分類編碼與信息交換。
GB/T 4754—2017《國(guó)民經(jīng)濟(jì)行業(yè)分類》由國(guó)家質(zhì)檢總局、國(guó)家標(biāo)準(zhǔn)委于2017年6月30日發(fā)布,于2017年10月1日起正式實(shí)施。本標(biāo)準(zhǔn)主要參考聯(lián)合國(guó)《所有經(jīng)濟(jì)活動(dòng)的國(guó)際標(biāo)準(zhǔn)產(chǎn)業(yè)分類》(ISIC Rev.4)。根據(jù)我國(guó)《國(guó)民經(jīng)濟(jì)行業(yè)分類》標(biāo)準(zhǔn)的歷次版本頒布、修訂歷史,自 1984年開始,每經(jīng)歷 8~10年進(jìn)行一次修訂,2017年修訂后的行業(yè)分類共有20個(gè)門類、97個(gè)大類、473個(gè)中類、1 380個(gè)小類。本標(biāo)準(zhǔn)的歷次版本依時(shí)間次序發(fā)布情況為:GB/T 4754—1984、GB/T 4754—1994、GB/T 4754—2002、GB/T 4754—2011、GB/T 4754—2017。
根據(jù)本標(biāo)準(zhǔn)使用說(shuō)明,本標(biāo)準(zhǔn)采用分類和分層編碼方法,將國(guó)民經(jīng)濟(jì)行業(yè)劃分為門類、大類、中類和小類 4級(jí)。代碼由 1位拉丁字母和 4位阿拉伯?dāng)?shù)字組成。門類代碼用一位拉丁字母表示,即用字母 A、B、C……依次代表不同門類;大類代碼用2位阿拉伯?dāng)?shù)字表示,打破門類界限,從 01開始按順序編碼;中類代碼用3位阿拉伯?dāng)?shù)字表示,前2位為大類代碼,第3位為中類順序代碼;小類代碼用4位阿拉伯?dāng)?shù)字表示,前 3位為中類代碼,第 4位為小類順序代碼,代碼結(jié)構(gòu)圖見圖1。
圖1 國(guó)民經(jīng)濟(jì)行業(yè)分類編碼結(jié)構(gòu)圖Fig.1 Structure of classification and coding of national economic industries
根據(jù)GB/T 4754—2017《國(guó)民經(jīng)濟(jì)行業(yè)分類》,以金融業(yè)分類編碼為例,采用J表示金融業(yè)的行業(yè)分類,大類、種類、小類的編碼見表1。
從圖1、表1中的編碼方法及編碼數(shù)據(jù)可見,國(guó)標(biāo)中的編碼采用整數(shù)數(shù)字順序編碼方式,最終的整數(shù)落在第4層級(jí)的小類代碼,大類代碼可以采用在后面補(bǔ)齊2位0形成整數(shù)編碼,例如表1中貨幣金融服務(wù)經(jīng)濟(jì)活動(dòng)的編碼可編寫為 6600,依此類推,資本市場(chǎng)服務(wù)經(jīng)濟(jì)活動(dòng)的編碼為 6670,非貨幣銀行服務(wù)經(jīng)濟(jì)活動(dòng)的編碼為 6630,這樣就在小類代碼列形成了全部為整數(shù)由小到大排列的順序編碼。
表1 金融業(yè)國(guó)民經(jīng)濟(jì)分類編碼表Tab.1 Classification and coding table of financial industry
在當(dāng)今信息化、智能化社會(huì),新的經(jīng)濟(jì)活動(dòng)不斷涌現(xiàn),部分新經(jīng)濟(jì)活動(dòng)擴(kuò)展較快,例如在GB/T 4754—2017的修訂文件中增補(bǔ)了以下幾項(xiàng)金融行業(yè)服務(wù)分類:汽車金融公司服務(wù)、小額貸款公司服務(wù)、消費(fèi)金融公司服務(wù)、網(wǎng)絡(luò)借貸服務(wù),這幾項(xiàng)服務(wù)近幾年迅速在國(guó)內(nèi)的非貨幣銀行服務(wù)中占據(jù)比較重要的位置,業(yè)務(wù)額比例上升較快,非貨幣銀行服務(wù)的編碼也相應(yīng)從6633增編至6637。本標(biāo)準(zhǔn)還增加了中類編碼664,增加了小類編碼 6640,將銀行理財(cái)服務(wù)增補(bǔ)入分類標(biāo)準(zhǔn),同時(shí)將銀行監(jiān)管服務(wù)調(diào)增至中類 665,小類6650。上述微調(diào)變化見表2。
擴(kuò)充后的分類編碼,局部仍然存在需要即時(shí)增補(bǔ)的小類,例如P2P服務(wù)、校園貸、民間借貸服務(wù)等,這類經(jīng)濟(jì)活動(dòng)在某段時(shí)間成為熱點(diǎn),進(jìn)行金融工程的輿情分析時(shí)候,需要在數(shù)據(jù)庫(kù)中及時(shí)擴(kuò)充。
表2與表1對(duì)比主要有 3種變化:增加中類代碼;增加小類代碼;增加活動(dòng)內(nèi)容、屬性。按照整數(shù)數(shù)字順序編碼方式理解和使用國(guó)民經(jīng)濟(jì)行業(yè)分類標(biāo)準(zhǔn),以上3種變化會(huì)帶來(lái)以下應(yīng)用問題:
表2 金融業(yè)國(guó)民經(jīng)濟(jì)分類編碼表Tab.1 National economy classification and coding table of financial industry
①編碼數(shù)值變化。上述變化中,中類數(shù)字編碼664所對(duì)應(yīng)的經(jīng)濟(jì)活動(dòng)發(fā)生了“移位”變化,新修訂的標(biāo)準(zhǔn)已經(jīng)由664改為665。在輿情監(jiān)測(cè)項(xiàng)目中以代碼664作為索引數(shù)值將難以進(jìn)行存儲(chǔ)、讀取。
②編碼數(shù)量擴(kuò)展。分類編碼標(biāo)準(zhǔn)的修訂周期較長(zhǎng),難以滿足某些變化較快的行業(yè)分類要求,例如在“非貨幣銀行服務(wù)”中擴(kuò)充 P2P服務(wù)、校園貸、民間借貸服務(wù)等小類時(shí),當(dāng)按照整數(shù)數(shù)字 663X順序編碼,出現(xiàn)整數(shù)位不足問題,表2中編碼至 6638后無(wú)法繼續(xù)進(jìn)行整數(shù)順序編碼。
③編碼層級(jí)擴(kuò)展。分類編碼中一般采用“其他XX”經(jīng)濟(jì)活動(dòng)來(lái)補(bǔ)充經(jīng)濟(jì)活動(dòng)的完整性。但在實(shí)際使用過(guò)程中,例如在一些“輿情監(jiān)測(cè)”“推薦系統(tǒng)”等金融工程項(xiàng)目中,當(dāng)需要對(duì)某些熱點(diǎn)經(jīng)濟(jì)活動(dòng)單獨(dú)劃分時(shí),需要進(jìn)行層級(jí)擴(kuò)張,即在小類代碼 6639所代表的“其他非貨幣銀行服務(wù)”經(jīng)濟(jì)活動(dòng)中,增加劃分種類,例如可將 P2P服務(wù)、校園貸、民間借貸服務(wù)等劃入此類,進(jìn)行屬性分類儲(chǔ)存、讀取。
擴(kuò)展標(biāo)記語(yǔ)言(eXtended Marked Language,XML)是一種能進(jìn)行自我描述的協(xié)議語(yǔ)言,是由W3C組織制定的一系列技術(shù)“推薦規(guī)范”,其特點(diǎn)是可擴(kuò)展性和平臺(tái)獨(dú)立性。XML文檔是AscII碼,可以被大多數(shù)應(yīng)用程序處理,一般情況下,操作系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)都支持XML文檔進(jìn)行信息傳遞。
以表2為例,國(guó)民經(jīng)濟(jì)分類編碼具有樹狀結(jié)構(gòu)特征,即國(guó)民經(jīng)濟(jì)分類編碼整體為“樹”,門類為一級(jí)主干,大類、中類依次分別為二、三級(jí)分支,小類為葉。各類代碼所代表的國(guó)民經(jīng)濟(jì)活動(dòng)具有唯一性,按照同一劃分邏輯進(jìn)行劃分,一般以“其他”來(lái)表示所有余下的國(guó)民經(jīng)濟(jì)活動(dòng),實(shí)現(xiàn)完整劃分。
本文按照門類、大類、中類、小類順序?qū)?guó)民經(jīng)濟(jì)活動(dòng)分類進(jìn)行結(jié)構(gòu)化處理,形成樹狀結(jié)構(gòu),再串行化為 XML流。將標(biāo)準(zhǔn)中的分類代碼,作為一個(gè)屬性數(shù)值,存儲(chǔ)到XML流文件對(duì)應(yīng)位置。
圖2為采用 C++語(yǔ)言結(jié)構(gòu)體編制的節(jié)點(diǎn)元素?cái)?shù)據(jù)結(jié)構(gòu)示意圖,節(jié)點(diǎn)元素的主要關(guān)聯(lián)對(duì)象有:父節(jié)點(diǎn)元素、上一節(jié)點(diǎn)元素、下一節(jié)點(diǎn)元素、節(jié)點(diǎn)元素名稱、節(jié)點(diǎn)元素編碼。
采用C++語(yǔ)言以結(jié)構(gòu)體形式定義節(jié)點(diǎn)元素對(duì)象、子節(jié)點(diǎn)元素鏈表等。圖2中時(shí)間序列數(shù)值節(jié)點(diǎn)元素鏈表為一種擴(kuò)充數(shù)據(jù),示例可以在定義節(jié)點(diǎn)元素的數(shù)據(jù)結(jié)構(gòu)時(shí)增加屬性字段或者增加鏈表結(jié)構(gòu)等擴(kuò)展編碼數(shù)據(jù)庫(kù),延伸編碼數(shù)據(jù)庫(kù)的適用范圍。
圖2 節(jié)點(diǎn)元素?cái)?shù)據(jù)結(jié)構(gòu)示意圖Fig.2 Data structure diagram of node elements
①節(jié)點(diǎn)元素對(duì)象
struct Node
{
string name;//元素標(biāo)記名稱
string numStr;//元素節(jié)點(diǎn)編碼
Node* parent;//父節(jié)點(diǎn)元素
list<Node> children;//下層節(jié)點(diǎn)鏈表
list<TimeNode>timeList;//時(shí)間節(jié)點(diǎn)鏈表
};
② 時(shí)間序列數(shù)值節(jié)點(diǎn)元素鏈表
struct TimeNode
{
DateTime timeStamp;//時(shí)間序列元素節(jié)點(diǎn)
intnum;//時(shí)間序列對(duì)應(yīng)的頻次數(shù)值
};
圖3為采用 C++語(yǔ)言結(jié)構(gòu)體編制的“非貨幣銀行服務(wù)”經(jīng)濟(jì)活動(dòng)的節(jié)點(diǎn)元素示意圖,節(jié)點(diǎn)元素的關(guān)聯(lián)對(duì)象有:父節(jié)點(diǎn)元素——貨幣金融服務(wù);上一節(jié)點(diǎn)元素——貨幣銀行服務(wù);下一節(jié)點(diǎn)元素——銀行理財(cái)服務(wù)等。其中,經(jīng)濟(jì)活動(dòng)的名稱作為節(jié)點(diǎn)元素名稱字段表示,經(jīng)濟(jì)活動(dòng)的編碼對(duì)節(jié)點(diǎn)元素不起任何控制或約束作用,只作為節(jié)點(diǎn)的一個(gè)屬性字段“節(jié)點(diǎn)元素編碼”進(jìn)行存儲(chǔ)。
圖3 非貨幣銀行服務(wù)節(jié)點(diǎn)元素示意圖Fig.3 Elemental schematic diagram of non-monetary banking service nodes
經(jīng)濟(jì)活動(dòng)的節(jié)點(diǎn)元素可以包含任意數(shù)量的子節(jié)點(diǎn)元素,采用 C++語(yǔ)言中的鏈表數(shù)據(jù)結(jié)構(gòu)存儲(chǔ),以NULL作為結(jié)束標(biāo)志,具有可擴(kuò)展性能。子節(jié)點(diǎn)元素的C++語(yǔ)言定義見3.2節(jié),其中子節(jié)點(diǎn)元素鏈表任一節(jié)點(diǎn)元素與父節(jié)點(diǎn)元素具有相同的數(shù)據(jù)結(jié)構(gòu)。
以某金融工程項(xiàng)目“輿情監(jiān)測(cè)”系統(tǒng)為例,在該項(xiàng)目中,需要對(duì)常見各大網(wǎng)站進(jìn)行關(guān)鍵詞匹配,進(jìn)而進(jìn)行出現(xiàn)次數(shù)統(tǒng)計(jì),計(jì)算出現(xiàn)頻率的變化。
該項(xiàng)目中首先將 GB/T 4754—2011《國(guó)民經(jīng)濟(jì)行業(yè)分類》存入CSV格式文件,CSV文件易讀且修改方便。通過(guò) C++程序讀取文件,按照 3.1、3.2節(jié)之方法形成XML文件。讀入CSV文件時(shí),按照行順序依次進(jìn)行,并按照固定列確定行業(yè)分類,再依照后續(xù)列確定大類、中類、小類或擴(kuò)展類。
當(dāng) GB/T 4754—2017《國(guó)民經(jīng)濟(jì)行業(yè)分類》出現(xiàn)修訂時(shí),只需要將經(jīng)濟(jì)活動(dòng)編碼的 CSV文件整體進(jìn)行更新。例如2.3節(jié)所述中類數(shù)字編碼664所對(duì)應(yīng)的經(jīng)濟(jì)活動(dòng)改為665后,采用數(shù)據(jù)結(jié)構(gòu)編碼方式形成XML數(shù)據(jù)庫(kù),XML數(shù)據(jù)庫(kù)以經(jīng)濟(jì)活動(dòng)的名稱為辨別屬性,編碼只作為附屬字段,因此編碼數(shù)值變化不影響 XML數(shù)據(jù)庫(kù)的更新,從而為維護(hù)XML數(shù)據(jù)庫(kù)帶來(lái)了便利。
以某金融工程項(xiàng)目“輿情監(jiān)測(cè)”系統(tǒng)為例,在該項(xiàng)目中,需要對(duì) 2.3節(jié)所述“非貨幣銀行服務(wù)”中擴(kuò)充 P2P服務(wù)、校園貸、民間借貸服務(wù)等小類時(shí),當(dāng)按照整數(shù)數(shù)字順序編碼時(shí)表2中編碼至6638后無(wú)法繼續(xù)進(jìn)行整數(shù)順序編碼。按照數(shù)據(jù)結(jié)構(gòu)形式編碼,以C++程序讀取CSV編碼文件時(shí),會(huì)忽略數(shù)值編碼,只按照經(jīng)濟(jì)活動(dòng)所在的行和列以及所在的上一級(jí)分類關(guān)系實(shí)現(xiàn)對(duì)XML樹的重構(gòu)。
編碼標(biāo)準(zhǔn)將經(jīng)濟(jì)活動(dòng)的層級(jí)劃分為4級(jí),當(dāng)根據(jù)項(xiàng)目需要,將編碼層級(jí)擴(kuò)展為5級(jí)、6級(jí)時(shí),原整數(shù)順序編碼方式不再適用。按照本文的數(shù)據(jù)結(jié)構(gòu)編碼方式,保持原經(jīng)濟(jì)活動(dòng)編碼的 CSV文件的整體結(jié)構(gòu)不變,只需將要增加層級(jí)的位置的經(jīng)濟(jì)活動(dòng)向后一列移動(dòng),C++程序會(huì)按照列的先后順序自動(dòng)劃分層級(jí),形成更多層級(jí)的樹狀結(jié)構(gòu)。因此,按照數(shù)據(jù)結(jié)構(gòu)編碼方式可以方便地實(shí)現(xiàn)編碼層級(jí)的擴(kuò)展。
例如對(duì) 2.3節(jié)所述的“輿情監(jiān)測(cè)”“推薦系統(tǒng)”等金融工程項(xiàng)目中,在小類代碼 6639所代表的“其他非貨幣銀行服務(wù)”經(jīng)濟(jì)活動(dòng)中,在編碼的 6639列后增加一列編碼(編碼數(shù)值只作為屬性標(biāo)記),同時(shí)將劃入此類的經(jīng)濟(jì)活動(dòng) P2P服務(wù)、校園貸、民間借貸向后一列移動(dòng),C++程序讀取CSV編碼文件時(shí),將按照其所在列的位置方便地實(shí)現(xiàn)編碼層級(jí)的擴(kuò)展,實(shí)現(xiàn)對(duì)XML樹的重構(gòu)。
① GB/T 4754—2017《國(guó)民經(jīng)濟(jì)行業(yè)分類》規(guī)定了全社會(huì)經(jīng)濟(jì)活動(dòng)的分類與代碼,代碼編制方法為基于整數(shù)數(shù)字順序編碼方式。這種編碼方式已經(jīng)難以適應(yīng)編碼數(shù)值變化、編碼數(shù)量擴(kuò)展、編碼層級(jí)擴(kuò)展變化。
②基于數(shù)據(jù)結(jié)構(gòu)的分類編碼方法,通過(guò)定義數(shù)據(jù)結(jié)構(gòu),編制程序?qū)?CSV編碼文件按照規(guī)定順序進(jìn)行讀取,重構(gòu) XML樹狀結(jié)構(gòu),可方便地實(shí)現(xiàn)編碼數(shù)量擴(kuò)展、編碼層級(jí)擴(kuò)展,適應(yīng)編碼數(shù)值變化。
③本文示例在輿情監(jiān)測(cè)項(xiàng)目中采用 C++語(yǔ)言針對(duì) XML格式的國(guó)民經(jīng)濟(jì)行業(yè)分類編碼進(jìn)行存儲(chǔ)與讀寫,效率較高,能廣泛用于數(shù)據(jù)存儲(chǔ)、讀寫、交換,具有較好的通用性和可推廣性能,對(duì)一些國(guó)民經(jīng)濟(jì)統(tǒng)計(jì)、分類、存儲(chǔ)、金融工程數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)等項(xiàng)目具有借鑒意義。
本文提出的數(shù)據(jù)結(jié)構(gòu)編碼方式是對(duì)使用GB/T 4754—2017《國(guó)民經(jīng)濟(jì)行業(yè)分類》方法上的探討,以數(shù)據(jù)結(jié)構(gòu)編碼思維方式替代整數(shù)數(shù)值順序編碼思維,所提供的C++重構(gòu)XML樹的方法也可以通過(guò)其他編程語(yǔ)言如 Python等實(shí)現(xiàn),用于輿情監(jiān)測(cè)等金融工程項(xiàng)目中。