魏 然, 舒 賽, 余宏亮, 駱漢賓
(1. 華中科技大學(xué) 土木工程與力學(xué)學(xué)院, 湖北 武漢 430074; 2. 武漢科技大學(xué) 管理學(xué)院, 湖北 武漢 430081)
基于BIM(Building Information Modeling)的建筑專業(yè)施工圖合規(guī)性自動審查系統(tǒng)借助計算機(jī)和BIM技術(shù),利用建筑三維模型的先天優(yōu)勢,快、全、準(zhǔn)地檢查出BIM模型中的設(shè)計問題,改變了傳統(tǒng)的人工審圖模式,提高了審圖效率。其中,將自然語言編寫的建筑設(shè)計規(guī)范條文轉(zhuǎn)換為計算機(jī)可理解并執(zhí)行的格式,即提取規(guī)范條文的規(guī)則表達(dá)式是建立基于BIM的建筑專業(yè)施工圖合規(guī)性自動審查系統(tǒng)的關(guān)鍵步驟。近年來,我國在施工圖合規(guī)性自動審查領(lǐng)域也獲得了一些成果,而規(guī)范條文的規(guī)則表達(dá)式提取方法卻一直停留在人工處理或半自動化階段。由于我國現(xiàn)行的建筑設(shè)計規(guī)范條文數(shù)量龐雜、自然語言表達(dá)的復(fù)雜性,造成人工提取過程容易出錯、修正過程復(fù)雜且效率低下。對后續(xù)的計算機(jī)自動審查工作造成不利的影響。而將人工處理過程轉(zhuǎn)換為計算機(jī)執(zhí)行的自動提取過程可大大提高正確率和效率,特別在規(guī)范條文修訂后能自動生成相應(yīng)計算機(jī)可理解并執(zhí)行的規(guī)則。
國內(nèi)外專家學(xué)者對規(guī)范條文規(guī)則表達(dá)式提取問題展開了較深入研究。Lee H. 等[1,2]通過基于邏輯規(guī)則機(jī)制的管理系統(tǒng)KBimLogic,將自然語言規(guī)范條文轉(zhuǎn)化為計算機(jī)可執(zhí)行的規(guī)則集文件KBimCode;Lee J. M. 等[3,4]采用專家系統(tǒng)的模型,將每一條規(guī)范簡化成一個產(chǎn)生式規(guī)則形式(IF-THEN結(jié)構(gòu)),從而將規(guī)范條文構(gòu)建成知識庫;Uhm等[5]在自然語言的處理過程中部署了上下文無關(guān)文法,制訂了計算機(jī)解讀需求建議書(Request for Proposal,RFP)的規(guī)則;Guo等[6]建立了安全規(guī)范和BIM模型設(shè)計組件的編碼規(guī)則,根據(jù)編碼將自然語言規(guī)范和設(shè)計組件一一對應(yīng);Nawari[7]提出了一階邏輯(First-Order Logic,F(xiàn)OL)作為文本規(guī)則編碼的建模語言;Zhang J. 等[8]提出了一種基于語義,基于規(guī)則的自動信息提取(Information Extraction,IE)方法NLP(Natural language processing)和基于短語結(jié)構(gòu)語法(Phrase Structure Grammar,PSG),利用本體識別語義文本特征從而達(dá)成自然語言的自動化處理;Zhong B. T. 等[9]提出建筑質(zhì)量檢驗和評估元模型CQIEOntology,通過使用Protégé-OWL(Web Ontology Language)的“SWRLJessTab”插件將基于CQIEOntology中的SWRL(Semantic Web Rule Language)規(guī)范約束和OWL中的本體事實轉(zhuǎn)換為Jess規(guī)則。
國內(nèi)外專家學(xué)者在英文、韓文自然語言的規(guī)則表達(dá)式提取問題上已取得了豐富成果,但相較于英文、韓文,中文自然語言由于沒有固定的語法結(jié)構(gòu)和表達(dá)模式,上述針對英文、韓文的研究成果無法直接用于中文自然語言的處理上。而在中文自然語言規(guī)則表達(dá)式提取問題上,目前以基于本體的知識建模[10,11]和專家系統(tǒng)建模[12]為主。但兩種方法都需要領(lǐng)域?qū)<一ㄙM大量時間進(jìn)行本體推理或構(gòu)建模型,且面對復(fù)雜的本體推理與模型構(gòu)建,容易出現(xiàn)紕漏。因此,本文在相關(guān)研究的基礎(chǔ)之上,借助上下文無關(guān)文法對建筑設(shè)計規(guī)范條文進(jìn)行語法分析,從最小的語法單位“語素”中推導(dǎo)出提取規(guī)范條文規(guī)則表達(dá)式所需要的對象和方法,通過將對象(語素)構(gòu)建成語素庫,根據(jù)每條規(guī)范中語素的種類及數(shù)量自動判別并選取方法庫中所對應(yīng)的方法,實現(xiàn)無需人工參與的建筑設(shè)計規(guī)范條文規(guī)則表達(dá)式自動提取方法。
在建筑工程領(lǐng)域,我國已經(jīng)形成了包含標(biāo)準(zhǔn)化主管部門頒布的標(biāo)準(zhǔn)和工程建設(shè)標(biāo)準(zhǔn)在內(nèi)的完善的建筑規(guī)范體系[10],但由于規(guī)范知識的組織維度單一、約束內(nèi)容分散、各規(guī)范之間內(nèi)容互相引用以及規(guī)范不斷發(fā)展修改等特點導(dǎo)致難以全面地使用建筑規(guī)范。為了解決上述問題,本文按照建筑規(guī)范的適用建筑類型選取了包括GB 50352-2005《民用建筑設(shè)計通則》、GB 50096-2011《住宅設(shè)計規(guī)范》、GB 50763-2012《無障礙設(shè)計規(guī)范》等16篇規(guī)范作為研究基礎(chǔ),涵蓋了普通住宅、高層建筑、幼兒園、學(xué)校、醫(yī)院等建筑類型,避免了規(guī)范條文的重合,又保證了約束內(nèi)容的廣泛性。
提取規(guī)范條文規(guī)則表達(dá)式的關(guān)鍵在于從規(guī)范條文中推理出提取的方法[5]。在自然語言中謂語動詞是對動作或狀態(tài)進(jìn)行陳述說明,決定了一條語句的邏輯規(guī)則。由于中文復(fù)雜的表達(dá)習(xí)慣,同一個謂語動詞所處語境不同,其表示的關(guān)系也不同。如規(guī)范“車站應(yīng)設(shè)置無障礙電梯”和“單人病房應(yīng)設(shè)置四個窗戶”,前者“設(shè)置”表示存在關(guān)系;后者“設(shè)置”表示數(shù)量關(guān)系。因此本文根據(jù)謂語動詞所表示的關(guān)系來判斷推理以規(guī)范條文規(guī)則表達(dá)式的提取方法。
提取建筑設(shè)計規(guī)范條文規(guī)則表達(dá)式的最大挑戰(zhàn)是面對龐雜的中文建筑設(shè)計規(guī)范條文。面對數(shù)量如此龐大的規(guī)范條文,必然要對規(guī)范進(jìn)行分類。本文通過對動詞的分析,將規(guī)范按照動詞所表達(dá)關(guān)系的不同分為元素存在類、元素數(shù)量類、空間距離類、空間位置類及屬性約束類,從一個句子的規(guī)則表達(dá)式的提取推廣為這一類規(guī)范的提取方法,解決了建筑設(shè)計規(guī)范數(shù)量大的問題。
考慮到部分規(guī)范條文句子中含有不止一個設(shè)計規(guī)則,如GB 50352-2005《民用建筑設(shè)計通則》第6.8.1條規(guī)定3:單側(cè)排列的電梯不宜超過4臺,雙側(cè)排列的電梯不宜超過2×4臺;電梯不應(yīng)在轉(zhuǎn)角處貼鄰布置。本文首先將這些包含多個設(shè)計規(guī)則的規(guī)范條文篩選出來并人工進(jìn)行規(guī)范條文的預(yù)處理,使之成為僅含有一個設(shè)計規(guī)則的句子。
通過分析規(guī)范條文可以得出判斷依據(jù):一般地,除了單個句子中存在幾個條件的情況下,當(dāng)一個規(guī)范句子中出現(xiàn)兩個及以上的建筑構(gòu)件或建筑構(gòu)件屬性的自由組合時,那么這個規(guī)范句子包含兩個及以上的設(shè)計規(guī)則。
借助中文分詞系統(tǒng) (Instituteof Computing Technology,Chinese Lexical Analysis System,ICTCLAS)對文檔中的事實和關(guān)系識別、標(biāo)注,并利用文本工程通用框架(General Architecture for Text Engineering,GATE)進(jìn)行知識抽取[13],可實現(xiàn)規(guī)范條文的自動預(yù)處理。
此外,還存在部分表格形式的規(guī)范,這些表格的內(nèi)容已通過專業(yè)人士精煉且以計算機(jī)可理解的形式整理在表格中,故表格類的規(guī)范不作為本研究的規(guī)范條文基礎(chǔ)。
文法是語言語法的描述工具,是描述語言語法結(jié)構(gòu)的形式規(guī)則。Chomsky將文法分為:0型文法、1型文法、2型文法、3型文法。其中應(yīng)用最廣泛的是2型文法,即上下文無關(guān)文法。上下文無關(guān)文法是一種所定義的語法范疇(或語法單位)是完全獨立于這種范疇可能出現(xiàn)的環(huán)境的一種文法。本文使用此文法進(jìn)行語法分析,可避免中文句子中各詞之間相關(guān)聯(lián)而造成歧義的問題。且上下文無關(guān)文法擁有足夠強(qiáng)的表達(dá)力來表示絕大多數(shù)程序設(shè)計語言的語法,更利于后續(xù)的程序開發(fā)。
在完成規(guī)范條文的預(yù)處理后,本文借助上下文無關(guān)文法將規(guī)范條文進(jìn)行語法分析。如圖1所示,名詞“車站”和“無障礙電梯”是規(guī)則表達(dá)式所需要的對象,而動詞“設(shè)置”表示一種存在關(guān)系,情態(tài)詞“必須”表示語氣的強(qiáng)度。因此計算機(jī)可理解的該規(guī)范條文的知識內(nèi)容為:“車站”中必須存在“無障礙電梯”。
圖1 基于上下文無關(guān)文法的語法分析
通過查閱規(guī)范發(fā)現(xiàn),存在一類規(guī)范如“候梯廳深度不得小于1.50 m”缺少了謂語動詞。通常一個完整的句子結(jié)構(gòu)應(yīng)包含主語、謂語、賓語。一個句子若沒有謂語動詞,那么我們無法從該句子中分析出“方法”。為此,本文對規(guī)范“候梯廳深度不得小于1.50 m”構(gòu)建語法樹,結(jié)合規(guī)范的英文譯文,按照名詞、動詞、介詞等將中英文句子成分一一對應(yīng),如圖2所示。通過比較觀察可以發(fā)現(xiàn)除了動詞“be”沒有相對應(yīng)的中文詞語,其余中英文詞語皆可一一對應(yīng),可以得出省略掉的中文謂語動詞為“是”。
圖2 基于上下文無關(guān)文法的語法分析
該規(guī)范條文中,“候梯廳”“深度”“1.50 m”是規(guī)則表達(dá)式所需的對象,“不得”和“小于”分別表示否定語氣和比較關(guān)系,省略掉的動詞“是”表示屬性約束關(guān)系。因此該規(guī)范條文計算機(jī)可理解的知識內(nèi)容為:“候梯廳”的幾何屬性“深度”的數(shù)值不得小于“1.50 m”。
在語法分析的基礎(chǔ)上,本文將上下文無關(guān)文法分解產(chǎn)生的語素進(jìn)行詳細(xì)分析,包括名詞、情態(tài)詞、比較詞、形容詞和動詞,用于構(gòu)建對象(語素)庫和方法庫。
名詞是用來表示人或事物實體存在的詞。本文根據(jù)IFC(Industry Foundation Classes)標(biāo)準(zhǔn)并結(jié)合《建筑設(shè)計術(shù)語標(biāo)準(zhǔn)》將規(guī)范中的名詞分為空間(Space)、元素(Element)、屬性(Property)和數(shù)值(Value)。空間指實際上或理論上的一個領(lǐng)域或體積,如“房間”;元素指建筑物的結(jié)構(gòu)和空間分隔系統(tǒng),如“窗戶”;屬性指建筑構(gòu)件的屬性,如“深度”;數(shù)值則是由數(shù)字及單位所構(gòu)成,如“1.50 m”。
情態(tài)詞,用來表達(dá)人對這一動作或狀態(tài)的看法或主觀設(shè)想,是一個表示語氣的詞。由于中文規(guī)范的表達(dá)形式?jīng)]有統(tǒng)一標(biāo)準(zhǔn),加上中文的復(fù)雜性,不同語氣程度條件下的情態(tài)詞表現(xiàn)形式也有所不同。如宜、不宜等表示建議;應(yīng)該、不應(yīng)該表示要求;必須、禁止等表示命令。導(dǎo)致了情態(tài)詞的例子多不勝數(shù)。但在實際的規(guī)范檢查中,這些詞往往僅分為兩類:一是表達(dá)肯定,如宜、應(yīng)該、必須等都表達(dá)了肯定的、正確、允許的意味;二是表達(dá)否定,如不宜、不應(yīng)該、禁止等,雖然語氣輕重不一樣,但都表達(dá)了否定、錯誤、禁止的內(nèi)涵。通過分析,確定了表達(dá)肯定性質(zhì)的計算機(jī)可理解并執(zhí)行的情態(tài)詞表達(dá)為“=”;否定性質(zhì)的計算機(jī)可理解并執(zhí)行的情態(tài)詞表達(dá)為“!=”。
比較詞,用來表示二者的關(guān)系大小,常與數(shù)值連用。包括大于、等于、小于等。
形容詞,用來描寫或修飾名詞或代詞,表示人或事物的性質(zhì)、狀態(tài)、特征或?qū)傩?。在?guī)范句子中,修飾名詞形成專業(yè)名詞,在本研究中將形容詞與名詞所構(gòu)成的專業(yè)名詞作為名詞考慮。如無障礙電梯。
動詞是用來表示人或事物的動作或一種動態(tài)變化的詞。規(guī)范條文中的動詞連接了句子的主語和賓語,表現(xiàn)了主語的存在、主語與賓語的關(guān)系等。本文根據(jù)動詞所表現(xiàn)的關(guān)系不同,將動詞分為:元素存在類、元素數(shù)量類、空間距離類、空間位置類及省略了動詞“是”的屬性約束類。將動詞所表現(xiàn)的關(guān)系轉(zhuǎn)換為方法的方式主要有兩種:一是Boolean型,例如可以用“hasElement”方法檢查規(guī)范“車站必須設(shè)置無障礙電梯”,若空間“車站”中存在元素“無障礙電梯”,則函數(shù)返回“True”;若不存在,函數(shù)返回“False”。二是Long型,例如檢查規(guī)范“單人病房應(yīng)設(shè)置四個窗戶”,可以用“getNumberOfElement”方法,如果病房中窗戶的數(shù)量為4,則函數(shù)返回“True”,反之返回“False”。且兩種函數(shù)返回的結(jié)果“True”和“False”與施工圖審查結(jié)果“合規(guī)”和“不合規(guī)”高度符合。
在語法分析及語素分析的基礎(chǔ)之上,對各類別建筑設(shè)計規(guī)范條文規(guī)則表達(dá)式進(jìn)行推理。雖然五種類別分別包含大量的規(guī)則句子,但每種類別所依據(jù)的算法思路、所用到的關(guān)鍵方法函數(shù)都高度相似[14],只要能解決一種類別中的一個規(guī)則句子的規(guī)則表達(dá)式提取方法,那么這一類的規(guī)則表達(dá)式提取問題都能得以解決。
以屬性約束類規(guī)范 “候梯廳深度不得小于1.50 m”為例。省略掉的動詞“是”表示屬性約束關(guān)系,結(jié)合情態(tài)詞“不得”和比較詞“小于”的計算機(jī)可理解并執(zhí)行的表達(dá)“!=”和“<”,得出規(guī)則表達(dá)式為:Boolean(Depth!=<1.50 m);屬性“深度”不是單獨存在,而是用于描述元素“候梯廳”的幾何屬性,因此最終的規(guī)則表達(dá)式為:Boolean (Depth(Waiting Hall)!=<1.50 m);那么,屬性約束類規(guī)范的規(guī)則表達(dá)式為:Boolean (Property‘a(chǎn)’(Element‘b’) 表1 各類別規(guī)范的規(guī)則表達(dá)式 本文選取了GB 50352-2005《民用建筑設(shè)計通則》和GB 50763-2012《無障礙設(shè)計規(guī)范》中電梯相關(guān)規(guī)范條文作為一個案例,來闡述自然語言建筑設(shè)計規(guī)范條文規(guī)則表達(dá)式提取如何實現(xiàn)。 首先,本文將名詞按照元素、屬性、空間和數(shù)值四種類型,情態(tài)詞按照性質(zhì)肯定或否定及比較詞根據(jù)計算機(jī)可理解并執(zhí)行的表達(dá)構(gòu)建語素庫;其次,將五種類別的規(guī)則表達(dá)式及其自動判斷依據(jù)構(gòu)建方法庫;最后,導(dǎo)入的規(guī)范條文TXT文本通過調(diào)用方法庫,自動判別規(guī)范類別并調(diào)用該類別規(guī)則表達(dá)式,調(diào)用語素庫,實現(xiàn)表2到實體的映射,完成規(guī)范條文規(guī)則表達(dá)式的自動提取。 采用Java(hibernate框架)實現(xiàn)從類對象到數(shù)據(jù)庫的映射。以名詞為例,定義名詞類為類A,A中的成員變量有三個。第一個是pri,定義為String型,用來存儲Element,Property,Space,value;第二個變量是comp,是list集合類型的變量,用于存儲{候梯廳,電梯,...}、{深度,寬度,...}、{房間,住宅,...}、{1.50 m,60 cm,...};第三個變量是Translate集合類型的變量,與第二個一一對應(yīng),{Waiting Hall,Elevator,...}、{Depth,Width,...}、{Room,Resident,...}、{1.50 m,60 cm,...},并且構(gòu)造定義類的get和set方法,用于讀取數(shù)據(jù)和操作數(shù)據(jù)。 Public class A { Private String pri; Private ArrayList Private ArrayList Public long getPri() { 在高速公路瀝青路面施工過程中,考慮到道路上下層結(jié)構(gòu)的鋪設(shè)需要使用不同配比的瀝青材料,所以,上下層瀝青材料的生產(chǎn)過程必須分開進(jìn)行,為了提高施工效率,可以通過同時運轉(zhuǎn)2臺攪拌機(jī)來生產(chǎn)不同配比的瀝青材料,從而為高速公路瀝青路面的施工提供合格的施工材料,進(jìn)一步保障高速公路瀝青路面施工的質(zhì)量。 return pri; } Public void setPri(long pri){ this.pri=pri; } Public ArrayList Return comp; } Public void setComp(ArrayList this.comp=comp; } } 配置類與數(shù)據(jù)庫的映射。定義一個數(shù)據(jù)庫的表與類完成映射,X為表名,定義表中的屬性與類成員變量一一對應(yīng),其中pri變量對應(yīng)表的主鍵Prj。 定義一個初始化類,構(gòu)造一個初始化方法,完成寫庫操作,這里使用的數(shù)據(jù)庫為Oracle數(shù)據(jù)庫,客戶端使用的是Navicate,最終保存的數(shù)據(jù)庫如表2所示。 表2 數(shù)據(jù)庫X 在語素庫的基礎(chǔ)上,根據(jù)推理出的各類規(guī)范規(guī)則表達(dá)式及其判斷依據(jù)使用Switch語句來自動判斷規(guī)范條文的類別。 雖然規(guī)范條文各不相同,但每一類規(guī)范條文中的元素(E)、屬性(P)、空間(S)、數(shù)值(V)以及比較詞(C)的數(shù)量是一定的。因此通過判斷各類規(guī)范中元素、屬性、空間、數(shù)值以及比較詞的數(shù)量,間接判斷了規(guī)范的類別。首先設(shè)置表達(dá)式n(通常是一個變量)。如case屬性約束類,元素的數(shù)量為1;屬性的數(shù)量為1;空間的數(shù)量為0;數(shù)值的數(shù)量為1;比較詞的數(shù)量為1。其余的判斷依據(jù)如表1所示。隨后表達(dá)式的值會與結(jié)構(gòu)中的每個 case 的值做比較。如果存在匹配,則與該 case 關(guān)聯(lián)的代碼塊會被執(zhí)行。將五類判斷依據(jù)構(gòu)建至方法庫中,實現(xiàn)了規(guī)范條文規(guī)則表達(dá)式的自動判別與調(diào)用。 在已構(gòu)建的語素庫與方法庫的基礎(chǔ)上,通過將經(jīng)過預(yù)處理后的電梯相關(guān)規(guī)范條文TXT文本導(dǎo)入系統(tǒng),如圖3所示。 圖3 規(guī)范條文TXT文本的導(dǎo)入 系統(tǒng)根據(jù)規(guī)范條文中的元素(E)、屬性(P)、空間(S)、數(shù)值(V)以及比較詞(C)的數(shù)量,自動判別規(guī)范的類別,進(jìn)而得出每一條規(guī)范相對應(yīng)的規(guī)則表達(dá)式。通過調(diào)用數(shù)據(jù)庫,實現(xiàn)表到實體的映射,完成規(guī)范條文規(guī)則表達(dá)式的自動提取。導(dǎo)出結(jié)果如圖4所示。 圖4 規(guī)則表達(dá)式的導(dǎo)出 以規(guī)范條文“候梯廳深度不得小于1.50 m”為例,詳細(xì)介紹系統(tǒng)內(nèi)部處理過程。調(diào)用數(shù)據(jù)庫,通過判斷句子中各類詞的數(shù)量,得出該規(guī)范條文屬于“屬性約束類”,決定了最后的輸出規(guī)則表達(dá)式形式為Boolean (Property‘a(chǎn)’(Element‘b’) 圖5 系統(tǒng)處理流程 本文闡述了一種支持中文自然語言的建筑設(shè)計規(guī)范條文規(guī)則表達(dá)式自動提取方法。通過借助上下文無關(guān)文法對規(guī)范條文進(jìn)行語法分析,得出“屬性約束”類規(guī)范因表達(dá)習(xí)慣而省略的謂語動詞“是”,解決了該類規(guī)范沒有動詞無法進(jìn)行“方法”推理的問題;對語素進(jìn)行分析,將建筑設(shè)計規(guī)范條文分為了五類,推理出各類計算機(jī)可理解的規(guī)則表達(dá)式及其自動判別方法,并構(gòu)建了語素庫和方法庫,實現(xiàn)了建筑設(shè)計規(guī)范條文規(guī)則表達(dá)式的自動提取,尤其在規(guī)范條文增加或修訂后,僅需確認(rèn)是否需要向語素庫中添加新的語素,即可實現(xiàn)新增規(guī)范條文規(guī)則表達(dá)式的自動提取。3 應(yīng)用案例
3.1 構(gòu)建語素庫
3.2 構(gòu)建方法庫
3.3 規(guī)范條文規(guī)則表達(dá)式自動提取
4 結(jié) 語
——針對對外漢語語素教學(xué)構(gòu)想