一種基于文本?標(biāo)簽密度的網(wǎng)頁核心內(nèi)容提取方法
【專利摘要】本發(fā)明涉及一種基于文本?標(biāo)簽密度的網(wǎng)頁核心內(nèi)容提取方法,其包括:網(wǎng)頁源代碼預(yù)處理、網(wǎng)頁核心內(nèi)容范圍預(yù)估、核心內(nèi)容邊界確定和刪除剩余標(biāo)簽四個(gè)階段。網(wǎng)頁源代碼預(yù)處理階段從原始網(wǎng)頁文本中提取標(biāo)題、摘要、描述等核心要素,并刪除原始網(wǎng)頁文本中與網(wǎng)頁核心內(nèi)容無關(guān)的標(biāo)簽,從而得到待處理文本;網(wǎng)頁核心內(nèi)容范圍預(yù)估階段,確定網(wǎng)頁核心內(nèi)容的大致范圍;核心內(nèi)容邊界確定階段分別確定網(wǎng)頁正文核心內(nèi)容精確的起止位置;刪除剩余標(biāo)簽階段取出核心內(nèi)容部分,并刪除多余標(biāo)簽,獲得便于分析處理的網(wǎng)頁核心內(nèi)容。本發(fā)明無需解析網(wǎng)頁文檔的DOM結(jié)構(gòu),也不限定網(wǎng)頁的主題和內(nèi)容,處理過程具有線性復(fù)雜度,能夠適用于各種網(wǎng)頁核心內(nèi)容提取、網(wǎng)頁去噪等技術(shù)應(yīng)用。
【專利說明】
一種基于文本-標(biāo)簽密度的網(wǎng)頁核心內(nèi)容提取方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及通信領(lǐng)域中互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體地,涉及一種基于文本-標(biāo)簽密度的 具有線性復(fù)雜度的網(wǎng)頁正文核心內(nèi)容的提取方法。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)的高速發(fā)展,萬維網(wǎng)(World Wide Web)已經(jīng)成為世界上最大的互聯(lián)網(wǎng) 資料庫。因此,如何有效地提取萬維網(wǎng)上的信息,已經(jīng)成為當(dāng)前的一個(gè)新的研究方向。這些 內(nèi)容涉及高速地收集、處理和提取網(wǎng)頁信息。
[0003] 然而,在現(xiàn)實(shí)中,網(wǎng)頁上除了有與主題相關(guān)的文本內(nèi)容之外,還會(huì)有大量無關(guān)的信 息。這些內(nèi)容包括徽標(biāo)、廣告、圖片、導(dǎo)航、邊欄等各種信息。盡管這些信息對(duì)于網(wǎng)頁瀏覽者 來說會(huì)起到輔助瀏覽的作用,但是,對(duì)于信息檢索、數(shù)據(jù)挖掘等眾多互聯(lián)網(wǎng)應(yīng)用來說,這些 信息多數(shù)情況卻并無作用。有時(shí),它們甚至還會(huì)對(duì)網(wǎng)頁的自動(dòng)處理程序產(chǎn)生嚴(yán)重的干擾,降 低了網(wǎng)頁數(shù)據(jù)分析處理的準(zhǔn)確性。
[0004] 為了提升各種針對(duì)網(wǎng)頁頁面信息獲取、檢索、挖掘應(yīng)用的效果,網(wǎng)頁內(nèi)容提取技術(shù) 被廣泛應(yīng)用于網(wǎng)頁正文內(nèi)容的提取。
[0005] 目前,網(wǎng)頁正文內(nèi)容提取的方法主要可以分為基于標(biāo)簽統(tǒng)計(jì)、基于標(biāo)簽D0M結(jié)構(gòu)、 基于網(wǎng)頁分塊模板等方法。
[0006] 基于標(biāo)簽統(tǒng)計(jì)的網(wǎng)頁正文內(nèi)容提取方法是通過尋找網(wǎng)頁中包含中文字符最多的 標(biāo)簽結(jié)點(diǎn)來提取網(wǎng)頁正文內(nèi)容。該方法一般先對(duì)網(wǎng)頁的D0M結(jié)構(gòu)做簡單分析,計(jì)算每個(gè)標(biāo)簽 節(jié)點(diǎn)內(nèi)的文本密度,通過比較各結(jié)點(diǎn)文本密度與給定域值的大小關(guān)系篩選正文文本。該方 法簡單有效,但往往需要對(duì)網(wǎng)頁標(biāo)簽的D0M結(jié)構(gòu)進(jìn)行專門的分析,有時(shí)還會(huì)受到樣式標(biāo)簽、 字體標(biāo)簽的干擾。
[0007] 基于標(biāo)簽D0M結(jié)構(gòu)的文檔提取技術(shù)是將網(wǎng)頁中的某些特定標(biāo)簽提取出來,再根據(jù) 特定的標(biāo)簽及內(nèi)容要求,確定每個(gè)標(biāo)簽所包含的主題是否與提取要求相符,從而判定正文 所在的標(biāo)簽,提取正文。這種方法對(duì)文檔的內(nèi)容和結(jié)構(gòu)要求較高,同時(shí)也要求預(yù)先處理網(wǎng)頁 的D0M結(jié)構(gòu),普適性不強(qiáng)。
[0008] 基于網(wǎng)頁分塊模板的方法假設(shè)網(wǎng)頁具有相似的特征和結(jié)構(gòu),針對(duì)具有一定結(jié)構(gòu)的 網(wǎng)頁制定相應(yīng)的"模板",以提取網(wǎng)頁內(nèi)容。由于模板在很大程度上依賴于網(wǎng)頁的具體結(jié)構(gòu), 一旦網(wǎng)頁結(jié)構(gòu)發(fā)生變化,需要重新設(shè)定學(xué)習(xí),通用性不強(qiáng)。
【發(fā)明內(nèi)容】
[0009] 本發(fā)明技術(shù)解決問題:針對(duì)現(xiàn)有技術(shù)上的不足,提供一種基于文本_標(biāo)簽密度提取 網(wǎng)頁正文內(nèi)容的方法,該方法無需解析網(wǎng)頁文檔的D0M結(jié)構(gòu),也不限定網(wǎng)頁的主題內(nèi)容,具 有線性復(fù)雜度,能夠適用于各種網(wǎng)頁核心內(nèi)容提取、網(wǎng)頁去噪等技術(shù)應(yīng)用。
[0010] 本發(fā)明技術(shù)解決方案:一種基于文本-標(biāo)簽密度的網(wǎng)頁核心內(nèi)容提取方法,包括: 網(wǎng)頁源代碼預(yù)處理、網(wǎng)頁核心內(nèi)容范圍預(yù)估、核心內(nèi)容邊界確定和刪除剩余標(biāo)簽四個(gè)階段。 其中:
[0011] 網(wǎng)頁源代碼預(yù)處理階段,從原始網(wǎng)頁文本中提取出核心要素,核心要素包括標(biāo)題、 關(guān)鍵詞和描述,并刪除原始網(wǎng)頁文本中與核心內(nèi)容無關(guān)的標(biāo)簽內(nèi)容,從而得到剩余的網(wǎng)頁 文本,稱該剩余文本為待處理文本;
[0012] 網(wǎng)頁核心內(nèi)容范圍預(yù)估階段,在待處理文本中,確定網(wǎng)頁核心內(nèi)容的大致范圍,即 分別獲得核心內(nèi)容預(yù)估區(qū)間的開始位置approxStart和結(jié)束位置approxEnd;
[0013]核心內(nèi)容邊界確定階段,基于核心內(nèi)容預(yù)估區(qū)間的開始位置approxStart和結(jié)束 位置approxEnd,確定網(wǎng)頁核心內(nèi)容大致的中心位置,然后再在該中心位置的前后,基于文 本-標(biāo)簽密度函數(shù),分別確定網(wǎng)頁文本正文核心內(nèi)容精確的起止位置,精確起止位置包括核 心文本的前邊界和后邊界;
[0014] 刪除剩余標(biāo)簽階段,基于核心內(nèi)容的前邊界和后邊界取出網(wǎng)頁核心內(nèi)容區(qū)域的文 本,并進(jìn)一步刪除該區(qū)域中的多余標(biāo)簽,最終獲得便于分析處理的網(wǎng)頁核心內(nèi)容。
[0015] 所述網(wǎng)頁源代碼預(yù)處理階段中,從原始網(wǎng)頁文本中提取出核心要素,即標(biāo)題、關(guān)鍵 詞和描述實(shí)現(xiàn)步驟如下:
[0016] (1)在網(wǎng)頁的〈head〉標(biāo)簽的范圍內(nèi),即以"〈head〉"為開始、以"〈/head〉"為結(jié)束的 字符串中,查找以"〈title〉"為開始、以"〈/title〉"為結(jié)束的字符串,并將這兩個(gè)標(biāo)簽"〈 title〉"和"〈/title〉"之間的文字作為網(wǎng)頁的標(biāo)題。在HTML文本中,〈head〉是頭部標(biāo)簽,〈 title〉是標(biāo)題標(biāo)簽。
[0017] (2)在網(wǎng)頁的〈head〉標(biāo)簽的范圍內(nèi),在所有的<meta>標(biāo)簽內(nèi),即以"〈meta"或"〈 META"為開始、以其后首個(gè)出現(xiàn)的"〉"為結(jié)束的字符串中,查找"name ="keywords" content =" XXXX""的字符串,XXXX表示英文引號(hào)中任何字符串,并將字符串XXXX中以","或"分隔 的文字分別作為該網(wǎng)頁的關(guān)鍵詞;在HTML文本中,name屬性定義了<meta>標(biāo)簽中名稱-值對(duì) 的名稱,keywords表示該名稱為關(guān)鍵字,content屬性定義了 <meta>標(biāo)簽中名稱-值對(duì)的值。
[0018] (3)在網(wǎng)頁的〈head〉標(biāo)簽的范圍內(nèi),在所有<meta>標(biāo)簽內(nèi),查找"name = " descriptions" content="YYYY""的字符串,YYYY表示英文引號(hào)中任何字符串,并將字符串 YYYY作為該網(wǎng)頁的描述。
[0019]所述刪除原始網(wǎng)頁文本中與核心內(nèi)容無關(guān)的標(biāo)簽內(nèi)容的實(shí)現(xiàn)方法如下:在網(wǎng)頁源 碼中,取出〈body〉標(biāo)簽范圍內(nèi)的字符串,即以"〈body〉"為開始、以"〈/body〉"為結(jié)束的字符 串,查找與核心內(nèi)容無關(guān)的標(biāo)簽、標(biāo)簽附帶內(nèi)容和特殊格式字符串,并刪除;與核心內(nèi)容無 關(guān)的標(biāo)簽包括"〈丨>"、7*. ??*/"、"〈script〉"或"〈SCRIPT〉"、"〈style〉"或"〈STYLE〉"、 "〈span〉" 或 "〈SPAN〉"、"<font>" 或 "〈FONT〉"、"<div>" 或 "<DIV>"、"<p>" 或 "<P>" ;特殊格式 字符串包括" "、"&" ;刪除后,剩余的網(wǎng)頁文本被稱為待處理文本;在HTML文本 中,〈body〉是文檔主體標(biāo)簽,〈script〉是腳本標(biāo)簽,〈style〉是樣式標(biāo)簽,〈span〉是行內(nèi)元素 標(biāo)簽,〈font〉是字體標(biāo)簽,〈div>是分區(qū)標(biāo)簽,〈p>是段落標(biāo)簽,〈!--...-->是注釋標(biāo) 簽,/*. . .*/是css或腳本語言的注釋標(biāo)簽, 和&表示文本特殊字符。
[0020]所述網(wǎng)頁核心內(nèi)容范圍預(yù)估階段實(shí)現(xiàn)為:對(duì)待處理文本中的每一個(gè)字符做標(biāo)記, 確定待處理文本中各個(gè)網(wǎng)頁標(biāo)簽及網(wǎng)頁內(nèi)容的起止區(qū)域;從待處理文本的起始位置開始, 以長度D為單位,逐個(gè)計(jì)算第k個(gè)區(qū)間[k*D,(k+1)*D-1 ]內(nèi)被標(biāo)示為網(wǎng)頁內(nèi)容的字符數(shù)量,并 判斷該區(qū)間內(nèi)網(wǎng)頁內(nèi)容的字符數(shù)量是否超過選定的閾值a*D,其中,0〈a〈 = l;如果某個(gè)區(qū)間
[k*D,(k+l)*D-l]內(nèi)的網(wǎng)頁內(nèi)容字符數(shù)超過a*D,則稱該區(qū)間為候選區(qū)間,并將該區(qū)間的標(biāo) 示變量Candidate[k]標(biāo)注為1;否則,如該區(qū)間中的網(wǎng)頁內(nèi)容字符數(shù)量少于等于a*D,則將該 區(qū)間的標(biāo)示變量Candidate [k]標(biāo)注為0;根據(jù)標(biāo)示數(shù)組Candidate,選擇最長的超出閾值的 多個(gè)連續(xù)區(qū)間作為核心內(nèi)容范圍的預(yù)估,如果有多個(gè)超出閾值的連續(xù)區(qū)間具有相同的最大 長度,則可根據(jù)整個(gè)區(qū)域的網(wǎng)頁內(nèi)容字符數(shù)量或隨機(jī)選擇一個(gè)區(qū)域作為核心內(nèi)容范圍的預(yù) 估;最后分別獲得核心內(nèi)容范圍預(yù)估的開始位置approxStart和結(jié)束位置approxEnd。
[0021 ]所述各個(gè)網(wǎng)頁標(biāo)簽中,一個(gè)網(wǎng)頁標(biāo)簽被定義為以字符"〈"為開始、以字符"〈"后首 個(gè)出現(xiàn)的字符"〉"為結(jié)束的字符串;一段網(wǎng)頁內(nèi)容被定義為包含在以字符"〉"為開始、以其 后首個(gè)"〈"字符為結(jié)束,兩個(gè)字符之間的字符串。
[0022]所述核心內(nèi)容邊界確定階段具體步驟如下:
[0023] ( 1 )根據(jù)確定的核心內(nèi)容范圍預(yù)估的開始位置app r 〇 x S t ar t和結(jié)束位置 approxEnd,計(jì)算核心內(nèi)容的預(yù)估中心M = (approxStar t+approxEnd) /2;
[0024] (2)對(duì)待處理文本從0到M中的任何一個(gè)位置x,根據(jù)下文本-標(biāo)簽密度公式計(jì)算區(qū) 間[0,M]以X為分界點(diǎn)的文本-標(biāo)簽密度:
[0026]其中,i表示待處理文本字符的位置,取值范圍為0到Lbti]表示待處理文本中第i 個(gè)位置的字符是否屬于某個(gè)網(wǎng)頁標(biāo)簽:如果第i個(gè)位置的字符屬于某段網(wǎng)頁內(nèi)容,則記b[k] =〇;否則,第i個(gè)位置的字符屬于某個(gè)網(wǎng)頁標(biāo)簽,記b[i] = l。
[0027]從這些結(jié)果中選擇一個(gè)使得該數(shù)值最大的位置x,將其作為核心內(nèi)容的前邊界; [0028] (3)對(duì)待處理文本從M到length( length表示待處理文本的字符長度)中的任何一 個(gè)位置y,根據(jù)下文本-標(biāo)簽密度公式計(jì)算區(qū)間[M,length]以y為分界點(diǎn)的文本-標(biāo)簽密度:
[0030] 從這些結(jié)果中選擇一個(gè)使得該數(shù)值最大的位置y,將其作為核心內(nèi)容的后邊界,返 回邊界x和y,即該網(wǎng)頁核心內(nèi)容的精確邊界。
[0031] 所述刪除剩余標(biāo)簽階段的實(shí)現(xiàn)為:按照前邊界x和后邊界y取出網(wǎng)頁待處理文本的 核心部分,刪除其中的</^>、〈81:1'01^>、〈131'>等多余標(biāo)簽,以及其中包含的圖片標(biāo)簽〈;[11^... >、錨文本超鏈接〈a href= ...>等非文本標(biāo)簽,進(jìn)而獲得最終的網(wǎng)頁核心內(nèi)容;在HTML文本 中,〈strong〉是強(qiáng)調(diào)文本標(biāo)簽,<img>是圖像標(biāo)簽,<br>是換行標(biāo)簽,<a>是超鏈接標(biāo)簽。
[0032] 本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于:本發(fā)明能夠自動(dòng)的高效去除網(wǎng)頁HTML頁面中 的噪聲代碼,自動(dòng)獲取網(wǎng)頁的標(biāo)題、關(guān)鍵詞及核心內(nèi)容,提高了網(wǎng)頁正文獲取的效率和準(zhǔn)確 度。該方法能夠適應(yīng)于多鐘類型頁面的正文提取,不需要特定類型的網(wǎng)頁制作和模板,提高 了正文識(shí)別的準(zhǔn)確率。此外,本發(fā)明不需要提取網(wǎng)頁文檔的D0M結(jié)構(gòu),無需要D0M解析器輔助 處理。因此,本發(fā)明實(shí)現(xiàn)簡單、高效,能夠有效地提取網(wǎng)頁HTML頁面的核心內(nèi)容。
【附圖說明】
[0033]圖1為本發(fā)明的實(shí)現(xiàn)流程圖;
[0034]圖2為本發(fā)明中獲得網(wǎng)頁文本的標(biāo)題、關(guān)鍵詞和摘要描述等網(wǎng)頁核心要素的過程 圖;
[0035] 圖3為本發(fā)明中確定待處理文本中各個(gè)網(wǎng)頁標(biāo)簽和網(wǎng)頁內(nèi)容起止區(qū)域的過程圖;
[0036] 圖4為本發(fā)明中的確定候選區(qū)間過程圖;
[0037] 圖5為本發(fā)明中的預(yù)估核心范圍過程圖;
[0038]圖6為本發(fā)明中的核心內(nèi)容邊界確定過程圖;
[0039] 圖7為本發(fā)明中的刪除剩余標(biāo)簽過程圖。
【具體實(shí)施方式】
[0040] 下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說明。
[0041] 本發(fā)明以網(wǎng)頁源碼為輸入,輸出包含標(biāo)題、關(guān)鍵詞、描述、核心內(nèi)容在內(nèi)的網(wǎng)頁核 心文本,其重點(diǎn)在于網(wǎng)頁核心內(nèi)容的獲取。
[0042] 如下圖1所示,本發(fā)明的處理過程包括:網(wǎng)頁源代碼預(yù)處理、網(wǎng)頁核心內(nèi)容范圍預(yù) 估、核心內(nèi)容邊界確定、刪除剩余標(biāo)簽等四個(gè)階段。
[0043]本發(fā)明具體通過以下技術(shù)方案實(shí)現(xiàn):
[0044] 一、網(wǎng)頁源代碼預(yù)處理階段
[0045] 預(yù)處理階段需要從原始網(wǎng)頁文本中提取出標(biāo)題、關(guān)鍵詞、描述等網(wǎng)頁核心要素,并 刪除網(wǎng)頁文本部分容易干擾網(wǎng)頁核心內(nèi)容提取的標(biāo)簽,產(chǎn)生網(wǎng)頁的待處理文本。具體方法 步驟如下:
[0046] 步驟1:獲得網(wǎng)頁文本的標(biāo)題、關(guān)鍵詞和摘要描述等網(wǎng)頁核心要素。步驟1的流程如 圖2所示,其具體方法如下:
[0047] 步驟1.1在網(wǎng)頁的〈head〉標(biāo)簽的范圍內(nèi)(以"〈head〉"為開始、以"〈/head〉"為結(jié)束 的字符串),查找以"〈title〉"為開始、以"〈/title〉"為結(jié)束的字符串,并將這兩個(gè)標(biāo)簽之間 的文字作為網(wǎng)頁的標(biāo)題。
[0048] 步驟1.2在網(wǎng)頁的〈head〉標(biāo)簽的范圍內(nèi),在所有<meta>標(biāo)簽內(nèi)(以"〈meta"或"〈 META"為開始、以其后首個(gè)出現(xiàn)的"〉"為結(jié)束的字符串),查找"name="keywords"content ="XXXX""的字符串(XXXX表示英文引號(hào)中任何字符串,其通常由","或"分隔),并將字符 串XXXX中以","或"分隔的文字分別作為該網(wǎng)頁的關(guān)鍵詞。
[0049] 步驟1.3在網(wǎng)頁的〈head〉標(biāo)簽的范圍內(nèi),在所有<meta>標(biāo)簽內(nèi)("〈meta"或"〈 META"為開始、以其后首個(gè)出現(xiàn)的"〉"為結(jié)束的字符串),查找"name =" descriptions" content="YYYY""的字符串(YYYY表示英文引號(hào)中任何字符串),并將字符串YYYY作為該網(wǎng) 頁的描述。
[0050] 步驟2:取出網(wǎng)頁〈body〉標(biāo)簽范圍內(nèi)的字符串(以"〈body〉"為開始、以"〈/body〉"為 結(jié)束的字符串),刪除與內(nèi)容無關(guān)的注釋、程序、字體格式設(shè)置等標(biāo)簽,獲得網(wǎng)頁的待處理文 本。具體方法如下:
[0051] 步驟2.1在網(wǎng)頁源碼中,取出〈body〉標(biāo)簽范圍內(nèi)的字符串,執(zhí)行步驟2.2;
[0052] 步驟2.2查找以"〈!一"為開始、以其后首個(gè)出現(xiàn)的"一>"為結(jié)束的所有字符串,刪 除這些字符串,并執(zhí)行步驟2.3;
[0053] 步驟2.3查找以"/*"為開始、以其后首個(gè)出現(xiàn)的"*/"為結(jié)束的所有字符串,刪除 這些字符串,并執(zhí)行步驟2.4;
[0054] 步驟2.4查找以"〈script"或"〈SCRIPT"為開始、以其后首個(gè)出現(xiàn)的"〈/script〉" 或"〈/SCRIPT〉"為結(jié)束的所有字符串,刪除這些字符串,并執(zhí)行步驟2.5;
[0055]步驟2.5查找以"〈style"或"〈STYLE"為開始、以其后首個(gè)出現(xiàn)的"〈/style〉"或 "〈/STYLE〉"為結(jié)束的所有字符串,刪除這些字符串,并執(zhí)行步驟2.6;
[0056] 步驟2 ? 6查找以"〈span"或"〈SPAN"為開始、以其后首個(gè)出現(xiàn)的"〈/span〉"或"〈/ SPAN〉"為結(jié)束的所有字符串,刪除這些字符串,并執(zhí)行步驟2.7;
[0057]步驟2.7查找以"〈font"或"〈FONT"為開始、以其后首個(gè)出現(xiàn)的"〉"為結(jié)束的所有 字符串,刪除這些字符串,并執(zhí)行步驟2.8;
[0058]步驟2.8查找以"〈div"或"〈DIV"為開始、以其后首個(gè)出現(xiàn)的"〉"為結(jié)束的所有字 符串,刪除這些字符串,并執(zhí)行步驟2.9;
[0059]步驟2.9查找以"<p"或"〈P"為開始、以其后首個(gè)出現(xiàn)的"〉"為結(jié)束的所有字符串, 刪除這些字符串,并執(zhí)行步驟2.10;
[0060] 步驟2.10刪除文檔中的" "、"& ;"等特殊格式字符串。
[0061] 步驟2的作用在于去除原始網(wǎng)頁文本中與核心內(nèi)容無關(guān)的標(biāo)簽內(nèi)容。這些內(nèi)容可 以由一些特殊的HTML標(biāo)簽識(shí)別(如步驟2中所涉及的標(biāo)簽)。上述描述是步驟2思想的一種實(shí) 現(xiàn),具體實(shí)現(xiàn)可以還可以包含一些其他的HTML標(biāo)簽,順序也并非一定按照上述順序執(zhí)行。但 這些實(shí)現(xiàn)都可以看做是步驟2思想的一種實(shí)現(xiàn)。
[0062] 結(jié)束步驟2后,剩余的網(wǎng)頁文本在本發(fā)明中被稱為待處理文本。
[0063]二、核心內(nèi)容范圍預(yù)估
[0064] 在對(duì)網(wǎng)頁源碼預(yù)處理后,本發(fā)明將在上一階段的結(jié)果一待處理文本中,確定網(wǎng)頁 核心內(nèi)容預(yù)估區(qū)間的開始位置和結(jié)束位置。具體方法步驟如下:
[0065]步驟3:對(duì)待處理文本中的每一個(gè)字符做標(biāo)記,確定待處理文本中各個(gè)網(wǎng)頁標(biāo)簽及 網(wǎng)頁內(nèi)容的起止區(qū)域。
[0066] 其中,一個(gè)網(wǎng)頁標(biāo)簽被定義為以字符"〈"為開始、以其后首個(gè)出現(xiàn)的字符"〉"為結(jié) 束的字符串(包含字符"〈"和">"),一段網(wǎng)頁內(nèi)容被定義為包含在以字符"〉"為開始、以其后 首個(gè)"〈"字符為結(jié)束,兩個(gè)字符之間的字符串(不包含"〉"和"〈"字符)。
[0067] 在步驟3的實(shí)現(xiàn)上,本發(fā)明采用記錄各段網(wǎng)頁內(nèi)容起止位置的方法標(biāo)記網(wǎng)頁待處 理文本中文本區(qū)域。記網(wǎng)頁待處理文本中第c段網(wǎng)頁內(nèi)容的起始位置和終止位置分別為 contentStart[c]和contentEnd[c]。本發(fā)明還用b[i]標(biāo)記待處理文本中第i個(gè)位置的字符 是否屬于某個(gè)網(wǎng)頁標(biāo)簽:如果第i個(gè)位置的字符屬于某段網(wǎng)頁內(nèi)容,則記b[i]=0;否則,第i 個(gè)位置的字符屬于某個(gè)網(wǎng)頁標(biāo)簽,記b[i] = l。其中,i和c都從0開始計(jì)數(shù)。
[0068] 步驟3的流程如圖3所示,其具體實(shí)現(xiàn)如下:
[0069] 步驟3.1記待處理文本的長度(全部字符的數(shù)量)為length,取i = 0、c = 0,執(zhí)行步 驟3.2〇
[0070]步驟3.2如果i> = length,執(zhí)行步驟3.5;否則,從位置i開始,找到第一個(gè)"〈"字符 的位置,標(biāo)記該位置為label Start,并執(zhí)行步驟3.3。
[0071 ]步驟3.3 如果i〈labelStart,則標(biāo)注contentStart [c ] = i、contentEnd[ c]= labelStart-1、c = c+l,并對(duì)所有的 j (i〈 = j〈labelStart)標(biāo)注b[ j] = 0,執(zhí)行步驟3.4;否 貝丨J,label Start = i,直接執(zhí)行步驟3 ? 4。
[0072] 步驟3.4從位置1&以15丨&^開始,找到第一個(gè)">"字符的位置,標(biāo)記該位置為 labelEnd(由于HTML網(wǎng)頁中標(biāo)簽字符"〈"和"〉"必然成對(duì)出現(xiàn),故一定可以找到"〉"字符),并 對(duì)所有的]_(1&匕613七31'1:〈 = ]_〈 = 13匕61£11(1)標(biāo)注13[]_] = 1,令1 = 13匕61£11(1+1,執(zhí)行步驟3.2。 [0073] 步驟3.5結(jié)束步驟3。
[0074]在執(zhí)行步驟3后,對(duì)于待處理文本中的每一位置i的字符,都可以根據(jù)b[i]判定其 屬于一個(gè)網(wǎng)頁標(biāo)簽,還是屬于一段網(wǎng)頁內(nèi)容。
[0075]步驟4:從待處理文本的起始位置開始,以長度D為單位,從k = 0開始,逐個(gè)計(jì)算第k 個(gè)區(qū)間[k*D,( k+1) *D-1 ]內(nèi)被標(biāo)示為網(wǎng)頁內(nèi)容的字符數(shù)量,并判斷該區(qū)間內(nèi)網(wǎng)頁內(nèi)容的字 符數(shù)量是否超過選定的閾值a*D。其中,0〈a〈 = 1。
[0076] 如果某個(gè)區(qū)間[k*D,(k+l)*D_l]內(nèi)的網(wǎng)頁內(nèi)容字符數(shù)超過a*D,則稱該區(qū)間為候選 區(qū)間,并將該區(qū)間的標(biāo)示變量Candidate[k]標(biāo)注為1;否則,如該區(qū)間中的網(wǎng)頁內(nèi)容字符數(shù) 量少于等于a*D,則將該區(qū)間的標(biāo)示變量Candidate[k]標(biāo)注為0。通常,D可以取100、200等整 百數(shù)字,a可取0.5到1之間的小數(shù),一般取a為0.7、0.8等。具體還可以根據(jù)實(shí)際情況,對(duì)參數(shù) D、a做適當(dāng)調(diào)整。
[0077]步驟4的流程如圖4所示,其具體實(shí)現(xiàn)如下:
[0078] 步驟4.1取k = 0,執(zhí)行步驟4.2。
[0079] 步驟4.2如果k*D〈length,執(zhí)行步驟4.3;否則,執(zhí)行步驟4.5。
[0080] 步驟4.3統(tǒng)計(jì)區(qū)間[k*D,(k+1 )*D-1 ]內(nèi)被標(biāo)示為網(wǎng)頁內(nèi)容的字符數(shù)量CharNum(如 果(k+l)*D超出待處理文本長度length,即(k+l)*D>length,則統(tǒng)計(jì)區(qū)間[i*D, length-1]內(nèi) 被標(biāo)示為網(wǎng)頁內(nèi)容的字符數(shù)量)。
[0081 ]步驟4 ? 4 如果CharNum>a*D,標(biāo)記Candidate[k] = 1;否則,標(biāo)記Candidate[k] = 0; 讓=1^+1,執(zhí)行步驟4.2。
[0082] 步驟4.5結(jié)束步驟4。
[0083]步驟4的意義在于確定網(wǎng)頁待處理文本中,長度為D的各個(gè)字符區(qū)間內(nèi),統(tǒng)計(jì)網(wǎng)頁 內(nèi)容字符的數(shù)量,并對(duì)超出閾值的區(qū)間在標(biāo)示數(shù)組Candidate中標(biāo)記。
[0084]步驟5:根據(jù)標(biāo)示數(shù)組Cand i date,選擇最長的超出閾值的多個(gè)連續(xù)區(qū)間作為核心 內(nèi)容范圍的預(yù)估。如果有多個(gè)超出閾值的連續(xù)區(qū)間具有相同的最大長度,則可根據(jù)整個(gè)區(qū) 域的網(wǎng)頁內(nèi)容字符數(shù)量或隨機(jī)選擇一個(gè)區(qū)域作為核心內(nèi)容范圍的預(yù)估。
[0085]例如,從第i個(gè)區(qū)間到第j個(gè)區(qū)間(j> = i)的網(wǎng)頁文本字符數(shù)量都大于a*D,而第i-1 個(gè)區(qū)間和第j+1個(gè)區(qū)間的網(wǎng)頁文本字符數(shù)都不大于a*D,則從第i個(gè)區(qū)間到第j個(gè)區(qū)間構(gòu)成一 個(gè)連續(xù)區(qū)域。如果從i到j(luò)的區(qū)間是所有超出閾值連續(xù)區(qū)間最大的一個(gè)區(qū)間,那么[i*D,(j+ 1 )*D-1 ]是核心內(nèi)容范圍的一個(gè)預(yù)估。
[0086] 步驟5的流程如圖5所示,其具體方法步驟如下:
[0087] 步驟5 ? 1 取k = 0,maxLength = 0,currentLength = 0,approxStart = approxEnd = 〇,執(zhí)行步驟5.2。
[0088] 步驟5.2如果k*D〈length,執(zhí)行步驟5.3;否則,執(zhí)行步驟5.5。
[0089] 步驟5 ? 3 如果Candidate[k] = 1,取currentLength = currentLength+l,k = k+l, 執(zhí)行步驟5.2;否則,執(zhí)行步驟5.4。
[0090] 步驟5 ? 4 如果 current Leng th>maxLength,取maxLength = currentLength, approxEnd = k氺D_1,approxStart= (k-maxLength)氺D〇令currentLength = 0,k = k+l,執(zhí) 步驟5.2。
[0091 ] 步驟5 ? 5 如果currentLength>maxLength,取maxLength = currentLength, approxEnd = 1 ength-1,approxStart = (k-maxLength)氺D,結(jié)束步驟 5 〇 [0092] 注:步驟5結(jié)束后,本發(fā)明將獲得兩個(gè)參數(shù)approxStart和approxEnd,它們分別是 網(wǎng)頁核心內(nèi)容預(yù)估區(qū)間的起止位置,并將在第三階段核心內(nèi)容邊界確定起作用。
[0093] 三、核心內(nèi)容邊界確定
[0094] 基于核心內(nèi)容預(yù)估區(qū)間的開始位置approxStart和結(jié)束位置approxEnd,確定網(wǎng)頁 核心內(nèi)容大致的中心位置。然后再在該中心位置的前后,分別基于不同的文本-標(biāo)簽密度函 數(shù),確定網(wǎng)頁文本正文核心內(nèi)容精確的起止位置。
[0095]步驟6:獲取到預(yù)估區(qū)間后,選擇區(qū)域的中點(diǎn)(或依據(jù)某種原則計(jì)算出來的任何一 中心點(diǎn))作為分割點(diǎn)M,并以此作為界限,分別計(jì)算前后區(qū)間的文本-標(biāo)簽密度。步驟6的流程 如圖6所示,其具體方法步驟如下:
[0096]步驟6.1根據(jù)步驟5確定的核心內(nèi)容預(yù)估區(qū)間的開始位置approxStart和預(yù)估結(jié) 束位置approxEnd,計(jì)算核心內(nèi)容的預(yù)估中心M = (approxStar t+approxEnd) /2,執(zhí)行步驟 6.2〇
[0097]步驟6.2對(duì)待處理文本從0到M中的任何一個(gè)位置x(通常,x從所有文本標(biāo)簽開始 的位置contents]中選擇),根據(jù)下公式計(jì)算區(qū)間[0,M]以x為分界點(diǎn)的文本-標(biāo)簽密度:
[0099] 從這些結(jié)果中選擇一個(gè)使得該數(shù)值最大的位置X,將其作為核心內(nèi)容的前邊界,執(zhí) 行步驟6.3。
[0100] 步驟6.3對(duì)待處理文本從M到length中的任何一個(gè)位置y(通常,y從所有文本標(biāo)簽 結(jié)束的位置contentEnd[c]中選擇),根據(jù)下公式計(jì)算區(qū)間[M,length]以y為分界點(diǎn)的文本-標(biāo)簽密度:
[0102]從這些結(jié)果中選擇一個(gè)使得該數(shù)值最大的位置y,將其作為核心內(nèi)容的后邊界,執(zhí) 行步驟6.4。
[0103]步驟6.4返回邊界x和y,即該網(wǎng)頁核心內(nèi)容的精確邊界。
[0104]步驟6.1是對(duì)文本中心點(diǎn)的一種估計(jì)方法,針對(duì)核心內(nèi)容中心點(diǎn)的其他估計(jì)方法 也應(yīng)視為本發(fā)明的一種變形。步驟6.2的作用在于在區(qū)間[0,M]中確定一個(gè)數(shù)值x,使得從位 置0到x-1的標(biāo)簽數(shù)量盡可能多,從x到M的正文數(shù)量盡可能多。步驟6.3的作用在于在區(qū)間 [M, length]中確定一個(gè)數(shù)值y,使得從M到y(tǒng)的正文字符數(shù)量盡可能多,從y+1到length的標(biāo) 簽數(shù)量盡可能多。
[0105]四、剩余標(biāo)簽刪除
[0106] 基于確定的前邊間x和后邊界y,取出核心內(nèi)容部分,并進(jìn)一步刪除多余標(biāo)簽,以獲 得便于分析處理的網(wǎng)頁核心內(nèi)容。具體方法設(shè)計(jì)如下:
[0107] 步驟7:按照邊界x和y取出網(wǎng)頁待處理文本的核心部分,刪除其中的〈/p>、〈str〇ng >等多余標(biāo)簽,以及其中包含的圖片標(biāo)簽〈img...>、錨文本超鏈接〈a href =...>等非文本 標(biāo)簽,獲得最終的網(wǎng)頁核心內(nèi)容。步驟7的流程如圖7所示,其具體方法如下:
[0108] 步驟7.1取出待處理文本中從位置x到y(tǒng)之間(包含x和y)的字符串,將其作為網(wǎng)頁 核心部分,執(zhí)行步驟7.2。
[0109] 步驟7.2在網(wǎng)頁核心部分中,查找以"</p"或"〈/P"為開始,以其后首個(gè)出現(xiàn)的"〉" 為結(jié)束的所有字符串,刪除這些字符串,并在刪除處添加一個(gè)回車字符"\n",執(zhí)行步驟7.3。
[0110] 步驟7.3查找以"〈strong"為開始,以其后首個(gè)出現(xiàn)的"〉"為結(jié)束的所有字符串, 刪除這些字符串,并執(zhí)行步驟7.4。
[0111] 步驟7.4查找以"〈img"為開始,以其后首個(gè)出現(xiàn)的"〉"為結(jié)束的所有字符串,刪除 這些字符串,并執(zhí)行步驟7.5。
[0112] 步驟7.5查找以"<a"為開始,以其后首個(gè)出現(xiàn)的"〉"為結(jié)束的所有字符串,刪除這 些字符串,并執(zhí)行步驟7.6。
[0113] 步驟7.6類似上述步驟,去除核心部分中其余多余的標(biāo)簽,如<br>標(biāo)簽等。
[0114] 步驟8:基于步驟7的文本結(jié)果,將多個(gè)連續(xù)的制表符"\t"或多個(gè)連續(xù)的回車換行 符號(hào)"\n"等分別替換為單個(gè)制表符或單個(gè)換行符。將步驟8剩余的文本作為網(wǎng)頁文本最終 的核心內(nèi)容。步驟8獲得的網(wǎng)頁核心內(nèi)容與步驟1獲得的網(wǎng)頁核心要素共同構(gòu)成了網(wǎng)頁文本 的主要內(nèi)容。
[0115] 應(yīng)該理解的是,本實(shí)施例只是該發(fā)明的一種優(yōu)選的實(shí)施方式。在不脫離本發(fā)明的 精神和原則的前提下,任何對(duì)本發(fā)明做出的等同替換或變化,都應(yīng)計(jì)入本發(fā)明的保護(hù)范圍 之內(nèi)。
【主權(quán)項(xiàng)】
1. 一種基于文本-標(biāo)簽密度的網(wǎng)頁核心內(nèi)容提取方法,其特征在于:網(wǎng)頁源代碼預(yù)處 理、網(wǎng)頁核心內(nèi)容范圍預(yù)估、核心內(nèi)容邊界確定和刪除剩余標(biāo)簽四個(gè)階段;其中: 網(wǎng)頁源代碼預(yù)處理階段,從原始網(wǎng)頁文本中提取出核心要素,核心要素包括標(biāo)題、關(guān)鍵 詞和描述,并刪除原始網(wǎng)頁文本中與核心內(nèi)容無關(guān)的標(biāo)簽內(nèi)容,從而得到剩余的網(wǎng)頁文本, 稱該剩余文本為待處理文本; 網(wǎng)頁核心內(nèi)容范圍預(yù)估階段,在待處理文本中,確定網(wǎng)頁核心內(nèi)容的大致范圍,即分別 獲得核心內(nèi)容預(yù)估區(qū)間的開始位置approxStart和結(jié)束位置approxEnd; 核心內(nèi)容邊界確定階段,基于核心內(nèi)容預(yù)估區(qū)間的開始位置approxStart和結(jié)束位置 approxEnd,確定網(wǎng)頁核心內(nèi)容大致的中心位置,然后再在該中心位置的前后,基于文本-標(biāo) 簽密度函數(shù),分別確定網(wǎng)頁文本正文核心內(nèi)容精確的起止位置,精確起止位置包括核心文 本的前邊界和后邊界; 刪除剩余標(biāo)簽階段,基于核心內(nèi)容的前邊界和后邊界取出網(wǎng)頁核心內(nèi)容區(qū)域的文本, 并進(jìn)一步刪除該區(qū)域中的多余標(biāo)簽,最終獲得便于分析處理的網(wǎng)頁核心內(nèi)容。2. 根據(jù)權(quán)利要求1所述的基于文本-標(biāo)簽密度的網(wǎng)頁核心內(nèi)容提取方法,其特征在于: 所述網(wǎng)頁源代碼預(yù)處理階段中,從原始網(wǎng)頁文本中提取出核心要素,即標(biāo)題、關(guān)鍵詞和描 述,實(shí)現(xiàn)步驟如下: (1) 在網(wǎng)頁的〈head〉標(biāo)簽的范圍內(nèi),即以"〈head〉"為開始、以"〈/head〉"為結(jié)束的字符 串中,查找以"〈title〉"為開始、以"〈/title〉"為結(jié)束的字符串,并將標(biāo)題標(biāo)簽"〈title〉"和 "〈/title〉"之間的文字作為網(wǎng)頁的標(biāo)題;在HTML文本中,〈head〉是頭部標(biāo)簽,〈title〉是標(biāo) 題標(biāo)簽; (2) 在網(wǎng)頁的〈head〉標(biāo)簽的范圍內(nèi),在所有的<meta>標(biāo)簽內(nèi),即以"〈meta"或"〈META"為 開始、以其后首個(gè)出現(xiàn)的"〉"為結(jié)束的字符串中,查找"name =" keywords" content =" XXXX""的字符串,XXXX表示英文引號(hào)中任何字符串,并將字符串XXXX中以","或分隔的 文字分別作為該網(wǎng)頁的關(guān)鍵詞;在HTML文本中,name屬性定義了<meta>標(biāo)簽中名稱-值對(duì)的 名稱,keywords表示該名稱為關(guān)鍵字,content屬性定義了 <meta>標(biāo)簽中名稱-值對(duì)的值; (3) 在網(wǎng)頁的〈head〉標(biāo)簽的范圍內(nèi),在所有<meta>標(biāo)簽內(nèi),查找"name=" descriptions" content="YYYY""的字符串,YYYY表示英文引號(hào)中任何字符串,并將字符串 YYYY作為該網(wǎng)頁的描述。3. 根據(jù)權(quán)利要求1所述的基于文本-標(biāo)簽密度的網(wǎng)頁核心內(nèi)容提取方法,其特征在于: 所述刪除原始網(wǎng)頁文本中與核心內(nèi)容無關(guān)的標(biāo)簽內(nèi)容的實(shí)現(xiàn)方法如下:在網(wǎng)頁源碼中,取 出〈body〉標(biāo)簽范圍內(nèi)的字符串,即以"〈body〉"為開始、以"〈/body〉"為結(jié)束的字符串,查找 與核心內(nèi)容無關(guān)的標(biāo)簽、標(biāo)簽附帶內(nèi)容和特殊格式字符串,并刪除;與核心內(nèi)容無關(guān)的標(biāo)簽 包括"〈丨一一>"、7*. ??*/"、"〈script〉"或"〈SCRIPT〉"、"〈style〉"或"〈STYLE〉"、"〈span〉" 或 "〈SPAN〉"、"<font>" 或 "〈FONT〉"、"<div>" 或 "<DIV>"、"<p>" 或 "<P>" ;特殊格式字符串包 括""、"&" ;刪除后,剩余的網(wǎng)頁文本被稱為待處理文本;在HTML文本中,〈body〉 是文檔主體標(biāo)簽,〈scr ipt>是腳本標(biāo)簽,〈style〉是樣式標(biāo)簽,〈span〉是行內(nèi)元素標(biāo)簽,〈 font〉是字體標(biāo)簽,〈div>是分區(qū)標(biāo)簽,〈p>是段落標(biāo)簽,〈!一...一>是注釋標(biāo)簽,/*...*/是 css或腳本語言的注釋標(biāo)簽, 和&表示文本特殊字符。4. 根據(jù)權(quán)利要求1所述的基于文本-標(biāo)簽密度的網(wǎng)頁核心內(nèi)容提取方法,其特征在于: 所述網(wǎng)頁核心內(nèi)容范圍預(yù)估階段的實(shí)現(xiàn)為:對(duì)待處理文本中的每一個(gè)字符做標(biāo)記,確定待 處理文本中各個(gè)網(wǎng)頁標(biāo)簽及網(wǎng)頁內(nèi)容的起止區(qū)域;從待處理文本的起始位置開始,以長度D 為單位,逐個(gè)計(jì)算第k個(gè)區(qū)間[k*D,(k+l)*D-l]內(nèi)被標(biāo)示為網(wǎng)頁內(nèi)容的字符數(shù)量,并判斷該 區(qū)間內(nèi)網(wǎng)頁內(nèi)容的字符數(shù)量是否超過選定的閾值a*D,其中,0〈a〈 = l;如果某個(gè)區(qū)間[k*D, (k+1 )*D_1 ]內(nèi)的網(wǎng)頁內(nèi)容字符數(shù)超過a*D,則稱該區(qū)間為候選區(qū)間,并將該區(qū)間的標(biāo)示變量 Candidate[k]標(biāo)注為1;否則,如該區(qū)間中的網(wǎng)頁內(nèi)容字符數(shù)量少于等于a*D,則將該區(qū)間的 標(biāo)示變量Candidate [k]標(biāo)注為0;根據(jù)標(biāo)示數(shù)組Candidate,選擇最長的超出閾值的多個(gè)連 續(xù)區(qū)間作為核心內(nèi)容范圍的預(yù)估,如果有多個(gè)超出閾值的連續(xù)區(qū)間具有相同的最大長度, 則可根據(jù)整個(gè)區(qū)域的網(wǎng)頁內(nèi)容字符數(shù)量或隨機(jī)選擇一個(gè)區(qū)域作為核心內(nèi)容范圍的預(yù)估;最 后分別獲得核心內(nèi)容范圍預(yù)估的開始位置approxStart和結(jié)束位置approxEnd。5. 根據(jù)權(quán)利要求4所述的基于文本-標(biāo)簽密度的網(wǎng)頁核心內(nèi)容提取方法,其特征在于: 所述各個(gè)網(wǎng)頁標(biāo)簽中,一個(gè)網(wǎng)頁標(biāo)簽被定義為以字符"〈"為開始、以字符"〈"后首個(gè)出現(xiàn)的 字符"〉"為結(jié)束的字符串;一段網(wǎng)頁內(nèi)容被定義為包含在以字符"〉"為開始、以其后首個(gè)"〈" 字符為結(jié)束,兩個(gè)字符之間的字符串。6. 根據(jù)權(quán)利要求1所述的基于文本-標(biāo)簽密度的網(wǎng)頁核心內(nèi)容提取方法,其特征在于: 所述核心內(nèi)容邊界確定階段的具體步驟如下: (1) 根據(jù)確定的核心內(nèi)容預(yù)估區(qū)間的開始位置approxStart和結(jié)束位置approxEnd,計(jì) 算核心內(nèi)容的預(yù)估中心M = (approxStar t+approxEnd) /2; (2) 對(duì)待處理文本從0到M中的任何一個(gè)位置x,根據(jù)下文本-標(biāo)簽密度公式計(jì)算區(qū)間[0, M]以x為分界點(diǎn)的文本-標(biāo)簽密度:其中,i表示待處理文本字符的位置,取值范圍為0到Lbti]表示待處理文本中第i個(gè)位 置的字符是否屬于某個(gè)網(wǎng)頁標(biāo)簽:如果第i個(gè)位置的字符屬于某段網(wǎng)頁內(nèi)容,則記b[k]=0; 否則,第i個(gè)位置的字符屬于某個(gè)網(wǎng)頁標(biāo)簽,記b[i] = l; 從這些結(jié)果中選擇一個(gè)使得該數(shù)值最大的位置x,將其作為核心內(nèi)容的前邊界; (3) 對(duì)待處理文本從M到1 ength中的任何一個(gè)位置y,根據(jù)下文本-標(biāo)簽密度公式計(jì)算區(qū) 間[M, length]以y為分界點(diǎn)的文本-標(biāo)簽密度:length表示待處理文本的字符長度,從這些結(jié)果中選擇一個(gè)使得該數(shù)值最大的位置y, 將其作為核心內(nèi)容的后邊界,返回邊界x和y,即該網(wǎng)頁核心內(nèi)容的精確邊界。7. 根據(jù)權(quán)利要求1所述的基于文本-標(biāo)簽密度的網(wǎng)頁核心內(nèi)容提取方法,其特征在于: 所述刪除剩余標(biāo)簽階段的實(shí)現(xiàn)為:按照前邊界x和后邊界y取出網(wǎng)頁待處理文本的核心部 分,刪除其中的</p>、〈strong>、〈br>等多余標(biāo)簽,以及其中包含的圖片標(biāo)簽〈img...>、錨文 本超鏈接〈a href =...>等非文本標(biāo)簽,進(jìn)而獲得最終的網(wǎng)頁核心內(nèi)容;在HTML文本中,〈 strong〉是強(qiáng)調(diào)文本標(biāo)簽,<img>是圖像標(biāo)簽,<br>是換行標(biāo)簽,<a>是超鏈接標(biāo)簽。
【文檔編號(hào)】G06F17/30GK106055667SQ201610390441
【公開日】2016年10月26日
【申請(qǐng)日】2016年6月6日
【發(fā)明人】蔣東辰, 閆藝鑫
【申請(qǐng)人】北京林業(yè)大學(xué)