国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種表格抽取方法和裝置與流程

      文檔序號:11830296閱讀:229來源:國知局
      一種表格抽取方法和裝置與流程
      本發(fā)明涉及網(wǎng)頁(Web)解析技術(shù),尤其涉及一種表格抽取方法和裝置。
      背景技術(shù)
      :表格作為一種重要的信息表現(xiàn)形式已廣泛地應(yīng)用于Web文檔中,據(jù)統(tǒng)計約有52%的Web頁面包含表格。對于表格而言,表格中的句法和語義概念是相互混合的,表格邏輯單元格以它的相對位置信息來獲得語義。因而,如何讓機器準確的地抽取表格信息,一直是一個具有挑戰(zhàn)性的難題。而且表格是一種重要的知識載體,并且表格相對完全無結(jié)構(gòu)的數(shù)據(jù)來說有著半結(jié)構(gòu)化的特點,如果能對表格進行正確的抽取對以后的結(jié)構(gòu)化知識的貢獻將會很大。目前,Web上的數(shù)據(jù)表格大部分還都是用HTML語言描述的,缺乏對數(shù)據(jù)本身的描述,不含清晰的語義信息,模式也不明確,使得Web表格抽取比傳統(tǒng)表格抽取更加困難。有監(jiān)督的方法利用Web結(jié)構(gòu)對數(shù)據(jù)進行處理,將Web解析成DOM樹,采用基于路徑模式的抽取方法抽取Web表格數(shù)據(jù);無監(jiān)督的方法采用自上而下受限的樹編輯距離方法,根據(jù)Web源碼編碼及解析樹的結(jié)構(gòu)特點,Web信息結(jié)構(gòu)差異采用自上而下的樹比較方法。在沒有標注數(shù)據(jù)或者標注數(shù)據(jù)不足的時候,有監(jiān)督的方法沒辦法訓練適當?shù)哪P?,所以不可取。在無監(jiān)督的方法中,如果僅僅根據(jù)Web源碼編碼及解析樹的結(jié)構(gòu)特點來進行表格抽取是不太科學的,因為很多表格的解析樹一致的時候,但是語義上并不一致。技術(shù)實現(xiàn)要素:為解決現(xiàn)有存在的技術(shù)問題,本發(fā)明主要提供一種表格抽取方法和裝置。本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:本發(fā)明提供一種表格抽取方法,該方法包括:讀取源表格的內(nèi)容,根據(jù)源表格的內(nèi)容存儲成至少一個二維表格;讀取源表格的表頭,根據(jù)表頭行數(shù)抽取表頭;按照抽取的表頭確定表頭項,根據(jù)所述至少一個二維表格建立表格處理模型;利用內(nèi)容相似度將表格處理模型中表內(nèi)容與表頭項對齊。上述方案中,所述讀取源表格的內(nèi)容,根據(jù)源表格的內(nèi)容存儲成至少一個二維表格,包括:讀取源表格的內(nèi)容,根據(jù)第一行源單元格所占的行數(shù)確定表頭行數(shù),按照表頭行數(shù)去掉表頭后,根據(jù)第一列的單元格所占行數(shù)確定所述源表格被拆分成二維表格的個數(shù),并按第一列的單元格所占行對源表格進行分塊,每個表格塊對應(yīng)一個二維表格,遍歷所有表格塊的內(nèi)容,確定對應(yīng)二維表格的行數(shù)和列數(shù),創(chuàng)建并初始化各二維表格,讀取各表格塊的表格空行標志的值,確定各表格塊是非正常表格還是正常表格,按照相應(yīng)的抽取規(guī)則抽取表格塊的源單元格內(nèi)容,存儲到對應(yīng)的二維表格中。上述方案中,所述讀取源表格的表頭,根據(jù)表頭行數(shù)抽取表頭,包括:讀取并記錄源表格的超文本標記語言HTML標簽里每個源單元格的行起始位置和所占行數(shù)和列數(shù),根據(jù)第一行源單元格所占的行數(shù)max確定表頭行數(shù),將表頭規(guī)范化成二維表格,按照表頭行數(shù)從所述二維表格中抽取每行源單元格中的標題。上述方案中,所述按照表頭行數(shù)從所述二維表格中抽取每行源單元格中的標題包括:表頭行數(shù)為1時,直接抽取第一行源單元格中的標題為表頭;表頭行數(shù)為2時,將第一行和第二行抽取為行標題和行子標題,并將行子標題全部以#連接到行標題后;表頭行數(shù)為3時,將第一行、第二行和第三行抽取為標題、子標題以及孫子標題,并將子標題全部以#連接到標題后面,孫子標題全部以*連接到子標題后面。上述方案中,所述按照抽取的表頭確定表頭項包括:當表頭只由一個表頭行組成時,將表頭中的每一個表單元格定義為一個表頭項;當表頭含有多個表頭行時,根據(jù)從上向下的層次順序拼接得到表頭項。上述方案中,所述根據(jù)所述至少一個二維表格建立表格處理模型包括:將表頭定義為向量H,表頭項定義為h,其中,一個表頭含有多個表頭項,表示為H=<h1,h2,...,hn>,其中n∈[1,表頭項個數(shù)];將表內(nèi)容定義為D,利用根據(jù)源表格的內(nèi)容形成的至少一個二維表格得到表內(nèi)容中的內(nèi)容部分,并按行劃分,每一行定義為d,將表內(nèi)容表示為D=<d1,d2,...,dn>,定義表內(nèi)容矩陣第i行第j列的矩陣格為dij,定義表內(nèi)容矩陣第i行di=<di1,di2,...,din>,其中n∈[1,表頭項個數(shù)]。上述方案中,所述利用內(nèi)容相似度將表格處理模型中表內(nèi)容與表頭項對齊包括:根據(jù)所述表格處理模型的表頭項個數(shù),查找表內(nèi)容矩陣中各矩陣行的規(guī)整表行,將規(guī)整表行對應(yīng)的表內(nèi)容與表頭項對齊;對于其余非規(guī)整表行,以對齊的規(guī)整表行為基準,以列為方向查找非規(guī)整表行中占用相同矩陣列寬的表內(nèi)容與表頭項對齊,將剩下的未對齊的表內(nèi)容與已對齊的表內(nèi)容進行相似度計算,找到相似度最高的表內(nèi)容,將所述表內(nèi)容對應(yīng)的表頭項作為對齊目標表頭項進行對齊,對剩下的未對齊的表內(nèi)容,迭代進行以列為單位的相似度計算,完成對齊。本發(fā)明還提供一種表格抽取裝置,該裝置包括:第一抽取模塊、第二抽取模塊、模型建立模塊、對齊模塊;其中,第一抽取模塊,用于讀取源表格的內(nèi)容,根據(jù)源表格的內(nèi)容存儲成至少一個二維表格;第二抽取模塊,用于讀取源表格的表頭,根據(jù)表頭行數(shù)抽取表頭;模型建立模塊,用于按照抽取的表頭確定表頭項,根據(jù)所述至少一個二維表格建立表格處理模型;對齊模塊,用于利用內(nèi)容相似度將表格處理模型中表內(nèi)容與表頭項對齊。上述方案中,所述第一抽取模塊,具體用于讀取源表格的內(nèi)容,根據(jù)第一行源單元格所占的行數(shù)確定表頭行數(shù),按照表頭行數(shù)去掉表頭后,根據(jù)第一列的單元格所占行數(shù)確定所述源表格被拆分成二維表格的個數(shù),并按第一列的單元格所占行對源表格進行分塊,每個表格塊對應(yīng)一個二維表格,遍歷所有表格塊的內(nèi)容,確定對應(yīng)二維表格的行數(shù)和列數(shù),創(chuàng)建并初始化各二維表格,讀取各表格塊的表格空行標志的值,確定各表格塊是非正常表格還是正常表格,按照相應(yīng)的抽取規(guī)則抽取表格塊的源單元格內(nèi)容,存儲到對應(yīng)的二維表格中。上述方案中,所述第二抽取模塊,具體用于讀取并記錄源表格的HTML標簽里每個源單元格的行起始位置和所占行數(shù)和列數(shù),根據(jù)第一行源單元格所占的行數(shù)max確定表頭行數(shù),將表頭規(guī)范化成二維表格,按照表頭行數(shù)從所述二維表格中抽取每行源單元格中的標題。上述方案中,所述第二抽取模塊,具體用于表頭行數(shù)為1時,直接抽取第一行源單元格中的標題為表頭;表頭行數(shù)為2時,將第一行和第二行抽取為行標題和行子標題,并將行子標題全部以#連接到行標題后;表頭行數(shù)為3時,將第一行、第二行和第三行抽取為標題、子標題以及孫子標題,并將子標題全部以#連接到標題后面,孫子標題全部以*連接到子標題后面。上述方案中,所述模型建立模塊,具體用于當表頭只由一個表頭行組成時,將表頭中的每一個表單元格定義為一個表頭項;當表頭含有多個表頭行時,根據(jù)從上向下的層次順序拼接得到表頭項。上述方案中,所述模型建立模塊,具體用于將表頭定義為向量H,表頭項定義為h,其中,一個表頭含有多個表頭項,表示為H=<h1,h2,...,hn>,其中n∈[1,表頭項個數(shù)];將表內(nèi)容定義為D,利用根據(jù)源表格的內(nèi)容形成的至少一個二維表格得到表內(nèi)容中的內(nèi)容部分,并按行劃分,每一行定義為d,將表內(nèi)容表示為D=<d1,d2,...,dn>,定義表內(nèi)容矩陣第i行第j列的矩陣格為dij,定義表內(nèi)容矩陣第i行di=<di1,di2,...,din>,其中n∈[1,表頭項個數(shù)]。上述方案中,所述對齊模塊,具體用于根據(jù)所述表格處理模型的表頭項個數(shù),查找表內(nèi)容矩陣中各矩陣行的規(guī)整表行,將規(guī)整表行對應(yīng)的表內(nèi)容與表頭項對齊;對于其余非規(guī)整表行,以對齊的規(guī)整表行為基準,以列為方向查找非規(guī)整表行中占用相同矩陣列寬的表內(nèi)容與表頭項對齊,將剩下的未對齊的表內(nèi)容與已對齊的表內(nèi)容進行相似度計算,找到相似度最高的表內(nèi)容,將所述表內(nèi)容對應(yīng)的表頭項作為對齊目標表頭項進行對齊,對剩下的未對齊的表內(nèi)容,迭代進行以列為單位的相似度計算,完成對齊。本發(fā)明提供了一種表格抽取方法和裝置,讀取源表格的內(nèi)容,根據(jù)源表格的內(nèi)容存儲成至少一個二維表格,讀取源表格的表頭,根據(jù)表頭行數(shù)抽取表頭,按照抽取的表頭確定表頭項,根據(jù)所述至少一個二維表格建立表格處理模型,利用內(nèi)容相似度將表格處理模型中表內(nèi)容與表頭項對齊;如此,與有監(jiān)督的方法相比,本發(fā)明的技術(shù)方案不需要訓練數(shù)據(jù);與無監(jiān)督的方法相比,本發(fā)明的技術(shù)方案不僅利用了表格的結(jié)構(gòu)信息,還利用了表格的內(nèi)容信息,這樣對結(jié)構(gòu)相同但語義不相同的表格,也能夠抽取正確。附圖說明圖1為本發(fā)明實施例提供的表格抽取方法的流程示意圖;圖2為本發(fā)明實施例提供的表格抽取裝置的結(jié)構(gòu)示意圖。具體實施方式由于知識庫的重要性正在日趨突出,很多知識都被人們希望轉(zhuǎn)化成三元組的形式存于知識庫中。人們在構(gòu)建知識庫的時候一個常用的手段是從表格中獲取知識,即對表格進行抽取,包括表頭的抽取和表內(nèi)容的屬性對齊。由于很多知識性表格在最初設(shè)計的時候并不是為了建立知識庫而創(chuàng)建的,所以很多方面都是不能直接利用到知識庫的。比如在最開始的時候,在百度百科、維基百科之類的以“眾包”形式積累知識的平臺中,表格是由各種各樣的用戶設(shè)計的,他們的表格也千差萬別,但是表格又是很多重要知識的一種很有力的表現(xiàn)形式,我們必須對它給予很高的關(guān)注。很多關(guān)系型數(shù)據(jù)庫的知識也是以表格的形式呈現(xiàn)的。例如在百度百科里面,很多演員的角色對應(yīng)關(guān)系都是通過表格的形式展現(xiàn)的,如果我們能夠正確的進行表格抽取的話,我們就能利用這些知識詞條。本發(fā)明實施例中,讀取源表格的內(nèi)容,根據(jù)源表格的內(nèi)容存儲成至少一個二維表格,讀取源表格的表頭,根據(jù)表頭行數(shù)抽取表頭,按照抽取的表頭確定表頭項,根據(jù)所述至少一個二維表格建立表格處理模型,利用內(nèi)容相似度將表格處理模型中表內(nèi)容與表頭項對齊。下面通過附圖及具體實施例對本發(fā)明做進一步的詳細說明。在本發(fā)明實施例中需要如下關(guān)鍵術(shù)語:源單元格內(nèi)容:包括源單元格所占行數(shù)、源單元格所占列數(shù)、源單元格文本內(nèi)容、源單元格的行索引、源單元格的列索引;二維表格:用于存儲源表格中的源單元格內(nèi)容,形式為n行,m列;原子單元格:二維表格中一個最小單元格;表格游標:用于存儲二維表格一行的內(nèi)容;表格空行標志:用于標記表格中是否超過兩行空行。本發(fā)明實施例實現(xiàn)一種表格抽取方法,應(yīng)用于服務(wù)器、PC等機器設(shè)備中,如圖1所示,該方法包括以下幾個步驟:步驟101:讀取源表格的內(nèi)容,根據(jù)源表格的內(nèi)容存儲成至少一個二維表格;具體的,讀取源表格的內(nèi)容,根據(jù)第一行源單元格所占的行數(shù)確定表頭行數(shù),按照表頭行數(shù)去掉表頭后,根據(jù)第一列的單元格所占行數(shù)確定所述源表格被拆分成二維表格的個數(shù),并按第一列的單元格所占行對源表格進行分塊,每個表格塊對應(yīng)一個二維表格,遍歷所有表格塊的內(nèi)容,確定對應(yīng)二維表格的行數(shù)和列數(shù),創(chuàng)建并初始化各二維表格,讀取各表格塊的表格空行標志的值,確定各表格塊是非正常表格還是正常表格,按照相應(yīng)的抽取規(guī)則抽取表格塊的源單元格內(nèi)容,存儲到對應(yīng)的二維表格中。步驟101可以包括:1)讀取源表格的內(nèi)容,根據(jù)源表格除表頭外第一列的單元格所占行數(shù)來確定所述源表格被拆分成二維表格的個數(shù),并按所述第一列的單元格所占行對源表格進行分塊,每個表格塊對應(yīng)一個二維表格,以表1為例,拆分成的規(guī)范化的二維表格個數(shù)為3;2)根據(jù)步驟1)中被拆分成的表格塊,遍歷所有表格塊的內(nèi)容,確定對應(yīng)二維表格的行數(shù)n和最大列數(shù)m,分別創(chuàng)建并初始化二維表格,如表1創(chuàng)建的三個二維表格依次為13行7列、4行4列、1行2列;3)判斷正?;蛘叻钦1砀瘢痪唧w的,針對步驟2)中被拆分成的表格塊,檢查表格塊中所有空行行數(shù),以確定表格塊是否是可處理的表格,所述檢查表格塊中所有空行行數(shù)可以是讀取表格空行標志的值,如果表格空行標志的值大于等于2,則認為所述表格塊的數(shù)據(jù)嚴重錯誤,不可處理,將其舍棄;如果表格空行標志值等于1,則認為所述表格塊為非正常表格,按照非正常表格規(guī)則抽?。蝗绻砀窨招袠酥镜扔?,則認為所述表格塊為正常表格,按照正常表格抽??;表14)表格內(nèi)容抽取及規(guī)范化處理。具體的,針對步驟2)中被拆分成的表格塊,對于所有正常表格執(zhí)行步驟5),實現(xiàn)表格內(nèi)容抽取及規(guī)范化處理;對于所有非正常表格執(zhí)行步驟6),實現(xiàn)表格內(nèi)容抽取及規(guī)范化處理;5)正常表格規(guī)范化處理步驟如下:5.1)讀取表格塊第一行的值,獲得源單元格內(nèi)容,根據(jù)源單元格所占行數(shù)和列數(shù),將獲取到的源單元格的內(nèi)容拆分成原子單元格的內(nèi)容,并將所述原子單元格的內(nèi)容填充到表格游標中原子單元格的內(nèi)容中;5.2)遍歷表格塊,并記錄每行行號,行號從零開始;每遍歷一行,將表格游標中的行索引屬性減一,以此獲取二維表格下一行的內(nèi)容;5.3)將步驟5.2)中表格游標中各原子單元格的內(nèi)容賦值給二維表格中對應(yīng)行的相應(yīng)位置;5.4)直至表格塊遍歷完畢,獲得一個完整的二維表格。6)非正常表格規(guī)范化處理步驟如下:6.1)遍歷表格塊,讀取每一行的每個源單元格的內(nèi)容;6.2)根據(jù)源單元格所占行數(shù)和列數(shù),將獲取到的源單元格的內(nèi)容拆分成原子單元格的內(nèi)容,并將所述原子單元格的內(nèi)容填充到游標中原子單元格的內(nèi)容中;如果遇到空行,則將上一行的內(nèi)容賦值到所述空行,將表格游標中的列索引屬性減一;如果遇到空值,則將表格游標中相應(yīng)行標、相應(yīng)列標處補空值;6.3)將6.2)中獲取的表格游標的值在二維表格中相應(yīng)位置進行填充;6.4)直至表格塊遍歷完畢,獲得完整的二維表格。根據(jù)以上步驟和表1,最終可以獲得以下二維表格,表2、表3、表4:表2表3臺港澳/國際漫游按照臺港澳國際漫游資費標準收取表4步驟102:讀取源表格的表頭,根據(jù)表頭行數(shù)抽取表頭;具體的,讀取Web中源表格的HTML標簽里每個源單元格的行起始位置和所占行數(shù)和列數(shù),并記錄這些信息,根據(jù)第一行源單元格所占的行數(shù)max確定表頭行數(shù),將表頭規(guī)范化成二維表格,按照表頭行數(shù)從所述二維表格中抽取每行源單元格中的標題。這里的將表頭規(guī)范化成二維表格可以采用步驟101的方法。其中,所述根據(jù)第一行源單元格所占的行數(shù)max確定表頭行數(shù)包括:當max>1時,max值即為表頭行數(shù);當max=1且第一行只有一個源單元格時,則將第二行源單元格所占的行數(shù)記為max’,表頭行數(shù)max的值為max’+1;當max=1且第一行有多個單元格時,則表頭行數(shù)為1。例如:表頭a規(guī)范化之后會變成表頭b:表頭a套餐類型套餐名稱開放地市開放對象辦理渠道辦理渠道套餐類型套餐名稱開放地市開放對象實體渠道電子渠道表頭b其中,表頭行數(shù)為1時,表頭的抽取為:如果表頭行數(shù)為1,表示表頭占一行,則直接抽取第一行源單元格中的標題為表頭,例如表c就只有“通信狀態(tài),資費標準”被抽為表頭。表c表頭行數(shù)為2時,表頭的抽取為:如果表頭行數(shù)為2,表示表頭占兩行,則將第一行和第二行抽取為行標題和行子標題,并將行子標題全部以#連接到行標題后;例如表d的表頭就會被抽為:“套餐名稱,開放對象,辦理渠道#實體渠道#電子渠道”。表d這里,判斷行標題和行子標題的方法是查看規(guī)范化的二維表格中每個單元格的右邊是否是相同的內(nèi)容,如果是相同的內(nèi)容則為同一標題,則將所述單元格下方的內(nèi)容抽取為標題的子標題。例如:表頭b的第1行的第5列的內(nèi)容為“辦理渠道”,右邊仍然為“辦理渠道”,而“辦理渠道”的下面兩個不同的單元格內(nèi)容為“實體渠道”和“電子渠道”,那么,把“實體渠道”和“電子渠道”抽取為“辦理渠道”標題的子標題。表頭行數(shù)為3時,表頭的抽取為:如果表頭行數(shù)為3,則表頭占三行,此時將第一行、第二行和第三行抽取為標題、子標題以及孫子標題,并將子標題全部以#連接到標題后面,孫子標題全部以*連接到子標題后面。例如表e就會被抽為“2007年非簽約產(chǎn)品神州行輕松卡系列資費營銷案(以BOSS實際上線資費為準)#名稱#資費*月租*本地主叫*本地被叫*17951長途(含本地電話接入費)*國內(nèi)漫游主叫*國內(nèi)漫游被叫#面值及有效期#備注”。表e步驟103:按照抽取的表頭確定表頭項,根據(jù)所述至少一個二維表格建立表格處理模型;首先要從第二階段的抽取完畢的表頭中解析出表頭項,并且明確對齊目標。在實際問題中表頭有兩種情形,一種是只包含一個表頭行;另一種是包含多個表頭行。這兩種情況要分別處理:當表頭只由一個表頭行組成時,將表頭中的每一個表單元格定義為一個表頭項,每個表頭項都是對它下面表格內(nèi)容的定義或者說明,因此,這種情況下表頭和表格內(nèi)容的對齊就是找到每個表頭單元格與表格內(nèi)容的對應(yīng)關(guān)系。當表頭含有多個表頭行時,表頭行之間就產(chǎn)生了含義上的層次關(guān)系。也就是說對于兩個相鄰的表頭行,位于上面的表頭行是對相應(yīng)下面表頭行的概括或者抽象,下面的表頭行是對相應(yīng)上面表頭行的具體化和明確化。由此可知,對于多表頭行的表頭,最下面一層的表頭行才是對相應(yīng)表格內(nèi)容的核心描述,從而根據(jù)從上向下的層次順序就可以拼接得到一個有意義的表頭項。因此,在這種情況下,表頭和表格內(nèi)容的對齊就體現(xiàn)在建立拼接后表頭項與表格內(nèi)容的對應(yīng)關(guān)系上。明確表頭項和對齊目標之后,建立表格處理模型如下:(1)將一個表格中的表頭定義為向量H,表頭項定義為h。其中,一個表頭含有多個表頭項,表示為H=<h1,h2,...,hn>,其中n∈[1,表頭項個數(shù)]。(2)將一個表格中的表內(nèi)容定義為D,利用根據(jù)源表格的內(nèi)容形成的至少一個二維表格得到表內(nèi)容中的內(nèi)容部分,并按行劃分,每一行定義為d,將表內(nèi)容表示為D=<d1,d2,...,dn>,定義表內(nèi)容矩陣第i行第j列的矩陣格為dij,定義表內(nèi)容矩陣第i行di=<di1,di2,...,din>,其中n∈[1,表頭項個數(shù)]。步驟104:利用內(nèi)容相似度將表格處理模型中表內(nèi)容與表頭項對齊;具體的,根據(jù)所述表格處理模型的表頭項個數(shù),查找表內(nèi)容矩陣中各矩陣行的規(guī)整表行,將規(guī)整表行對應(yīng)的表內(nèi)容與表頭項對齊,一條矩陣行對齊結(jié)果就是這一行中全部表頭項與表內(nèi)容的對應(yīng)關(guān)系,以第i行為例,對齊結(jié)果形式為{h1:dix,h2:diy,...hn:diz},其中x,y,z分別為與表頭項對齊后的矩陣格所在列號,x,y,z<=n;對于其余非規(guī)整表行,以對齊的規(guī)整表行為基準,以列為方向查找非規(guī)整表行中占用相同矩陣列寬的表內(nèi)容與表頭項對齊,將剩下的未對齊的表內(nèi)容與已對齊的表內(nèi)容進行相似度計算,找到相似度最高的表內(nèi)容,將所述表內(nèi)容對應(yīng)的表頭項作為對齊目標表頭項進行對齊,對剩下的未對齊的表內(nèi)容,迭代進行以列為單位的相似度計算,完成對齊。所述相似度計算可以是先將句子分詞,得到由單詞組成的句子向量,然后計算句子向量之間的余弦相似度。所述規(guī)整表行,即表內(nèi)容個數(shù)等于表頭中表頭項個數(shù)的矩陣行;非規(guī)整表行,即表內(nèi)容個數(shù)不等于表頭中表頭項個數(shù)的矩陣行。表格對齊具體步驟如下:步驟一:找到所有的規(guī)整表行,按所在列實現(xiàn)對齊。如表5的表頭項個數(shù)為4,其中棚網(wǎng)區(qū)域的表內(nèi)容個數(shù)與表頭項個數(shù)一致,可直接得到表頭項及表內(nèi)容的對應(yīng)關(guān)系,見表6。表5表6步驟二:以第一步找到的規(guī)整表行為基準,再以列為方向,將占用相同矩陣列寬的表頭項與表內(nèi)容對齊,如表7中加底紋區(qū)域:表7步驟三:將剩下的矩陣格按照內(nèi)容相熟度與表頭項對齊。將未對齊的表內(nèi)容和已對齊的表內(nèi)容進行相似度計算,找到相似度最高的表內(nèi)容所對應(yīng)的表頭項作為對齊目標表頭項。如表9中,沒有加底紋的區(qū)域?qū)?yīng)的表內(nèi)容將和表8中的每個表內(nèi)容計算相似度,選出相似度最高的,進行對齊,對剩下的未對齊的表內(nèi)容,迭代進行以列為單位的相似度計算,完成對齊工作。最終直至完成所有單元格與屬性的對齊,如表10所示。這里,一般采用從表格兩端向中間搖擺式對齊的方式,因為處于兩端的表內(nèi)容總是與兩端的表頭項相對應(yīng)的。表8表9表10為了實現(xiàn)上述方法,本發(fā)明還提供一種表格抽取裝置,如圖2所示,該裝置包括:第一抽取模塊21、第二抽取模塊22、模型建立模塊23、對齊模塊24;其中,第一抽取模塊21,用于讀取源表格的內(nèi)容,根據(jù)源表格的內(nèi)容存儲成至少一個二維表格;第二抽取模塊22,用于讀取源表格的表頭,根據(jù)表頭行數(shù)抽取表頭;模型建立模塊23,用于按照抽取的表頭確定表頭項,根據(jù)所述至少一個二維表格建立表格處理模型;對齊模塊24,用于利用內(nèi)容相似度將表格處理模型中表內(nèi)容與表頭項對齊。具體的,所述第一抽取模塊21讀取源表格的內(nèi)容,根據(jù)第一行源單元格所占的行數(shù)確定表頭行數(shù),按照表頭行數(shù)去掉表頭后,根據(jù)第一列的單元格所占行數(shù)確定所述源表格被拆分成二維表格的個數(shù),并按第一列的單元格所占行對源表格進行分塊,每個表格塊對應(yīng)一個二維表格,遍歷所有表格塊的內(nèi)容,確定對應(yīng)二維表格的行數(shù)和列數(shù),創(chuàng)建并初始化各二維表格,讀取各表格塊的表格空行標志的值,確定各表格塊是非正常表格還是正常表格,按照相應(yīng)的抽取規(guī)則抽取表格塊的源單元格內(nèi)容,存儲到對應(yīng)的二維表格中。對于正常表格,所述第一抽取模塊21,具體用于讀取表格塊第一行的值,獲得源單元格內(nèi)容,根據(jù)源單元格所占行數(shù)和列數(shù),將獲取到的源單元格的內(nèi)容拆分成原子單元格的內(nèi)容,并將所述原子單元格的內(nèi)容填充到表格游標中原子單元格的內(nèi)容中;遍歷表格塊,并記錄每行行號,行號從零開始,每遍歷一行,將表格游標中的行索引屬性減一;將表格游標中各原子單元格的內(nèi)容賦值給二維表格中對應(yīng)行的相應(yīng)位置;直至表格塊遍歷完畢,獲得完整的二維表格。對于非正常表格,所述第一抽取模塊21,具體用于遍歷表格塊,讀取每一行的每個源單元格的內(nèi)容,根據(jù)源單元格所占行數(shù)和列數(shù),將獲取到的源單元格的內(nèi)容拆分成原子單元格的內(nèi)容,并將所述原子單元格的內(nèi)容填充到游標中原子單元格的內(nèi)容中;如果遇到空行,則將上一行的內(nèi)容賦值到所述空行,將表格游標中的列索引屬性減一;如果遇到空值,則將表格游標中相應(yīng)行標、相應(yīng)列標處補空值;將獲取的表格游標的值在二維表格中相應(yīng)位置進行填充;直至表格塊遍歷完畢,獲得完整的二維表格。所述第二抽取模塊22,具體用于讀取Web中源表格的HTML標簽里每個源單元格的行起始位置和所占行數(shù)和列數(shù),并記錄這些信息,根據(jù)第一行源單元格所占的行數(shù)max確定表頭行數(shù),將表頭規(guī)范化成二維表格,按照表頭行數(shù)從所述二維表格中抽取每行源單元格中的標題。其中,所述根據(jù)第一行源單元格所占的行數(shù)max確定表頭行數(shù)包括:當max>1時,max值即為表頭行數(shù);當max=1且第一行只有一個源單元格時,則將第二行源單元格所占的行數(shù)記為max’,表頭行數(shù)max的值為max’+1;當max=1且第一行有多個單元格時,則表頭行數(shù)為1。其中,表頭行數(shù)為1時,所述第二抽取模塊22直接抽取第一行源單元格中的標題為表頭;表頭行數(shù)為2時,所述第二抽取模塊22將第一行和第二行抽取為行標題和行子標題,并將行子標題全部以#連接到行標題后;表頭行數(shù)為3時,所述第二抽取模塊22將第一行、第二行和第三行抽取為標題、子標題以及孫子標題,并將子標題全部以#連接到標題后面,孫子標題全部以*連接到子標題后面。所述模型建立模塊23,具體用于當表頭只由一個表頭行組成時,將表頭中的每一個表單元格定義為一個表頭項;當表頭含有多個表頭行時,根據(jù)從上向下的層次順序拼接得到表頭項;建立表格處理模型的處理為:(1)將一個表格中的表頭定義為向量H,表頭項定義為h,其中,一個表頭含有多個表頭項,表示為H=<h1,h2,...,hn>,其中n∈[1,表頭項個數(shù)]。(2)將一個表格中的表內(nèi)容定義為D,利用根據(jù)源表格的內(nèi)容形成的至少一個二維表格得到表內(nèi)容中的內(nèi)容部分,并按行劃分,每一行定義為d,將表內(nèi)容表示為D=<d1,d2,...,dn>,定義表內(nèi)容矩陣第i行第j列的矩陣格為dij,定義表內(nèi)容矩陣第i行di=<di1,di2,...,din>,其中n∈[1,表頭項個數(shù)]。在得到表格處理模型后,所述對齊模塊24具體用于根據(jù)所述表格處理模型的表頭項個數(shù),查找表內(nèi)容矩陣中各矩陣行的規(guī)整表行,將規(guī)整表行對應(yīng)的表內(nèi)容與表頭項對齊;對于其余非規(guī)整表行,以對齊的規(guī)整表行為基準,以列為方向查找非規(guī)整表行中占用相同矩陣列寬的表內(nèi)容與表頭項對齊,將剩下的未對齊的表內(nèi)容與已對齊的表內(nèi)容進行相似度計算,找到相似度最高的表內(nèi)容,將所述表內(nèi)容對應(yīng)的表頭項作為對齊目標表頭項進行對齊,對剩下的未對齊的表內(nèi)容,迭代進行以列為單位的相似度計算,完成對齊。本發(fā)明實施例所述表格抽取方法如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明實施例的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機、服務(wù)器、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-OnlyMemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。這樣,本發(fā)明實施例不限制于任何特定的硬件和軟件結(jié)合。相應(yīng)的,本發(fā)明實施例還提供一種計算機存儲介質(zhì),其中存儲有計算機程序,該計算機程序用于執(zhí)行本發(fā)明實施例的表格抽取方法。以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。當前第1頁1 2 3 
      當前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1