Mobile QR Code QR CODE : Journal of the Korean Society of Civil Engineers

  1. 종신회원 ․ 교신저자 ․ 고려소프트웨어 솔루션개발 이사 (Corresponding Author ․ Koryo Software Inc ․ klavier511@naver.com)
  2. 정회원 ․ 고려소프트웨어 대표이사 (Koryo Software Inc ․ krsoft1004@gmail.com)



5D BIM, WBS, CBS, 자연어처리, TF-IDF
5D BIM, WBS, CBS, NLP, TF-IDF

1. 서 론

건축분야를 필두로 국내에 도입된 BIM(Building Information Modelling)은 최근 토목분야에서도 입찰시 적용이 의무화되고 설계, 건설에서 유지관리에 이르기까지 그 적용 범위가 전 생애주기로 확대되고 있다. 하지만 선진 공사관리기법인 공정, 내역이 연계된 소위 5D BIM은 여전히 적용에 어려움이 있다. 이중 가장 큰 장애 요소로 작용하는 것이 CBS(Cost Breakdown Structure; 내역)의 WBS(Work Breakdown Structure; 공정)에 의한 분개이다. 이들 개수가 적을 때는 이론적인 WBS에 대한 CBS연계가 가능하지만(Park and Lee, 2011), 대개 단일 공사에서 WBS는 국토교통부에서 제정한 지침(KICT, 2017)에 의거 7레벨까지 단순화하더라도 수천 개가 존재하는데 어렵게 WBS를 분개하고 나면 개개의 WBS를 다시 수천 개의 CBS와 일일이 비교하며 연계해야 하는 문제(모두 수만개)에 봉착한다(Kim et al., 2023a).

Fig. 1. Different CBS Code according to Employers
../../Resources/KSCE/Ksce.2024.44.5.0719/fig1.png

이를 해결하기 위해 WBS에 표준화된 CBS를 연결한 셋트를 사전(事前)에 구성하고 신규 공사시 내역서(Bill of Quantities; BOQ) CBS를 표준화된 CBS와 매칭하게 되면 자동으로 WBS와 연계되는 방법을 생각할 수 있다. 표준화된 CBS는 공신력이 있고 내역입찰에서 의무 적용되고 있는 조달청 표준공사코드(Standard Construction Code; SCC)(PCCES, 2024)가 적절한 것으로 판단된다(Nam et al., 2017). 그러나 WBS코드체계와 연계된 표준화된 CBS(표준공사코드)에 내역서 CBS를 매칭시킬 때 문제가 발생한다. 각 공사마다 작성되는 내역서 CBS코드체계는 통일된 WBS코드체계와 달리 발주처따라 다르고(Fig. 1 참고) 입찰시 제출하는 내역서를 작성하는 견적 프로그램도 업체별로 다른 CBS코드를 쓰고 있어, 사실상 사람 눈으로 하나하나 내역서의 CBS명칭을 일일이 따져가며 표준공사코드와 매칭해야 한다.

이러한 작업은 다분히 휴먼 에러가 내재될 뿐더러 많은 시간을 요한다. 따라서 본 논문에서는 효율적인 WBS-CBS 자동연계를 위해 최신 인공지능 자연어 처리 방법을 이용한 기계적인 텍스트 유사도 측정으로 발주처마다, 견적 프로그램별로 다른 비표준화 CBS코드를 WBS와 기연계된 표준화 CBS코드(표준공사코드; SCC)로 매칭하는 방법을 제시한다. 앞으로 언급할 매칭(탐색) 성공률은 내역서 전체 비표준화 CBS코드 중에서 각각 해당하는 가장 유사한 표준화 CBS코드를 찾아내는 비율을 의미한다.

2. 단어벡터를 이용한 문자열 비교

2.1 종래의 내역 문자열 비교

예를 들어 내역서에 Table 1의 상단과 같은 내역이 있다고 가정하고 표준공사코드의 2개의 내역이 중간과 하단과 같다고 가정한다.

사람이 판별한다면, 상단의 내역서 공종/규격이 하단보다는 중간 내역과 일치한다고 판단하고 탐색하고자 하는 상단 BOQ의 CBS코드(???,???,???)가 중간에 위치한 표준공사코드1, 즉, ‘COD000312100’으로 직관적으로 판단할 수 있지만, 컴퓨터의 판단을 얻기 위해 공종/규격 안의 띄어쓰기를 없애고 문자열을 합치면 상단 내역은 \{철근콘크리트타설/펌프차S15,100m3이하(보통)\}이 되고 중간의 표준공사코드는 \{철근콘크리트타설/펌프카보통(S15,100m3이하)\}이 되어, 이에 대해 문자열 비교하게 되면 서로 다른 문자열로 판단하게 된다. 그 이유는 컴퓨터는 펌프차와 펌프카가 같다는 사실을 알지 못하고 문자열의 순서가 다르므로 2개의 전체 문자열이 다르다고 판단하므로 사람이 일일이 확인하는 작업이 불가피하다. 따라서 문자열 유사도 판단을 전통적인 기법보다 인공지능 자연어 처리 기법으로 문자열을 벡터화하여 보다 효율적인 방법으로 개선하는 것이 필요하다.

Table 1. CBS of BOQ (Bill of Quantities) and SCC (Standard Construction Code)

BOQ code

Item

Spec

???.???.???

placing con'c/pump vehicle

철근콘크리트타설/펌프차

S15, less than 100m3 (normal)

S15, 100m3 이하(보통)

SCC1

Item

Spec

COD000312100

placing con'c/pump car

철근콘크리트타설/펌프카

normal(S15, less than 100m3)

보통(S15, 100m3 이하)

SCC2

Item

Spec

COD000311140

placing con'c/pump car

철근콘크리트타설/펌프카

good(S15, less than 70m3)

양호(S15, 70m3 이하)

2.2 선행연구 조사

자연어 처리 기법은 기계적으로 문자열을 서로 비교하거나 문자열 자체의 내용을 판단하는 방식으로, 감정어휘사전을 활용한 영화 리뷰의 감성분석(Jang et al., 2021), 사전학습 언어모델을 구축하여 토픽분류, 질의응답 등에 활용(Kim et al., 2022), 미리 작성된 금융 말뭉치 용어사전을 이용하여 거래 적요 텍스트를 자동분류하여 보다 특화된 금융서비스를 제공(Kim et al., 2023b), 및 향후 여러 분야로 확장을 위해 업계에서 사용되는 말뭉치를 단계별로 구분된 웹기반 사전형태로 구성(Jang et al., 2022)하는 등의 연구가 수행되었다. 하지만 이들 연구의 대부분은 언어학, 문헌정보학, 금융 등에 관련된 연구이며, 건설, 특히 토목분야의 용어에 대한 전처리 및 의미가 부여된 기계적인 처리과정이 다르기 때문에 이들 연구결과를 토목분야에 바로 적용하기엔 무리가 있다.

현재까지 자연어 처리 기법을 응용한 토목분야 연구는 토목분야 전문가들끼리의 의사소통 부재 및 용어의 비통일성을 해결하기 위해 국가건설기준의 구조설계기준문서 32개를 입력 데이터로 사용하여 용어가 어렵고 문장 구조가 복잡하여 일반인에게 난해한 설계기준문서를 자동으로 분석 및 시각화하는 툴인 Con-Talky이라는 플랫폼이 개발된 바 있지만, 기술문서 특성상 중요한 의미를 가진 수식이 모두 배제가 된 한계가 있다(Shim et al., 2021).

또한 건설 계약문서로부터 요구조건문장을 자동추출하여 요구조건간의 일관성을 확인하는 모델도 개발된 바 있으나(IITP, 2021), 지금까지 5D BIM 구성을 목적으로 WBS-CBS간 자동연계를 위한 내역서의 문자열 비교에 관한 시도는 이루어지지 않았다. 따라서 본 연구에서는 기존 자연어처리 분야를 토목분야로 확장하여 내역서 말뭉치 데이터셋 비교에 적용하여 효율적인 표준공사코드 탐색방법을 제안하고자 한다.

2.3 카운트 기반의 문자열 벡터 표현방법

2.3.1 BoW (Bag of Words) 및 DTM (Document-Term Matrix)

BoW란 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도에만 집중하는 텍스트 데이터의 수치화 표현 방법이다. Bag of Words를 직역하면 단어들의 가방이라는 의미이고 단어들이 들어있는 가방을 상상해보면, 갖고 있는 어떤 텍스트 문서에 있는 단어들을 가방에다가 전부 넣어, 그 후에는 이 가방을 흔들어 단어들을 섞는다. 만약, 해당 문서 내에서 특정 단어가 N번 등장했다면, 이 가방에는 그 특정 단어가 N개 있게 되며 또한 가방을 흔들어서 단어를 섞었기 때문에 더 이상 단어의 순서는 중요하지 않다.

DTM(문서 단어 행렬)이란 다수의 문서에서 등장하는 각 단어들의 빈도를 행렬로 표현한 것을 말하며, 쉽게 생각하면 각 문서에 대한 BoW를 하나의 행렬로 만든 것으로 생각할 수 있으며, BoW와 다른 표현 방법이 아니라 BoW 표현을 다수의 문서에 대해서 행렬로 표현하고 부르는 용어이다. 각 문서에서 등장한 단어의 빈도를 행렬의 값으로 표기하며, 문서 단어 행렬은 문서들을 서로 비교할 수 있도록 수치화할 수 있다는 점에서 의의를 갖게 되며, 만약 필요에 따라서는 형태소 분석기로 단어 토큰화를 수행하고, 불용어(stop words)에 해당되는 조사들 또한 제거하여 더 정제된 DTM을 만들 수도 있을 것이다(Yu and Ahn, 2024).

2.3.2 TF-IDF (Term Frequency-Inverse Document Frequency)

DTM에 불용어와 중요한 단어에 대해서 가중치를 줄 수 있는 방법이 TF-IDF이며, DTM 내에 있는 각 단어에 대한 중요도를 계산할 수 있는 TF-IDF 가중치에 대해서 알아보면, TF-IDF를 사용하여 기존의 DTM을 사용하는 것보다 많은 정보를 고려하여 문서들을 비교할 수 있다. TF-IDF가 DTM보다 항상 좋은 성능을 보장하는 것은 아니지만, 많은 경우에서 DTM보다 더 좋은 성능을 얻을 수 있다. TF-IDF는 단어의 빈도(TF)와 역 문서 빈도(IDF; 문서의 빈도에 특정 식을 취함)를 사용하여 DTM 내의 각 단어들마다 중요한 정도를 가중치로 주는 방법이다. 따라서 우선 DTM을 만든 후, TF-IDF 가중치를 부여한다. TF-IDF는 주로 문서의 유사도를 구하는 작업, 검색 시스템에서 검색 결과의 중요도를 정하는 작업, 문서 내에서 특정 단어의 중요도를 구하는 작업 등에 쓰일 수 있다(Yu and Ahn, 2024).

말뭉치(corpus)를 $D$, 문서를 $d$, 단어를 $t$, 문서의 총 개수를 $n$, $df(t)$를 특정단어 $t$가 등장한 문서 수라고 할 때, TF, IDF 및 TF-IDF의 정의는 각각 아래 식과 같다(Lane et al., 2020).

(1)
$tf(t,\: d)=\dfrac{count(t)}{count(d)}$
(2)
$idf(t,\: D)=\log\left(\dfrac{n}{1+df(t)}\right)$
(3)
$tf-idf(t,\: d,\: D)=tf(t,\: d)\times idf(t,\: D)$

따라서 TF-IDF가 불용어와 중요단어의 빈도수를 가중치로 고려한 방법으로서, 다른 많은 연구에서 텍스트 마이닝 기법을 적용할 때 쓰이고 있고(Park and Lee, 2021; Kim et al., 2022), 문자열의 벡터 표현방법 중 가장 합리적이라 판단되어 이 본 논문에서는 이를 채택하였다.

2.4 문자열 유사도 측정

문자열 유사도 측정은 앞의 표현방법에 의해 벡터화된 문자열간 거리를 구하는 것으로 귀결된다. 거리 측정의 가장 기본적인 방법으로 유클리드 거리(Euclidean distance)가 있으며 집합의 포함관계로 측정하는 자카드 유사도(Jaccard similarity)가 있다. 본 논문에서는 2개 벡터의 사잇각의 코사인 값으로 측정하는 코사인 유사도(cosine similarity)를 사용하였다.

2.5 단어벡터를 이용한 내역 문자열 비교 예시

앞의 Table 1의 내역에 대해 문자열을 단어 벡터화하여 비교한 예시를 BoW 방법에 의해 one-hot 인코딩하여 DTM으로 나타내면 Table 2와 같다.(동의어 처리 및 특수문자 삭제).

이를 유클리드 거리로 문자열 유사도를 측정하면 아래와 같이 나타난다.

문자열 유사도(내역서 – 표준공사코드1):

../../Resources/KSCE/Ksce.2024.44.5.0719/e1.png

문자열 유사도(내역서 – 표준공사코드2):

../../Resources/KSCE/Ksce.2024.44.5.0719/e2.png

앞에 문자열 단순비교에서는 다르다고 판단했던 결과가 인간이 판단하는 것과 동일하게 내역서와 표준공사코드1이 일치한다고(유클리드 거리: 0) 나타났다. 따라서 내역서상의 내역에 해당하는 표준공사코드를 찾기 위해, 기구축된 WBS-CBS셋트의 표준공사코드로부터 일일이 수작업으로 문자열 비교하여 찾는 번거로운 작업보다 이러한 단어벡터를 활용한 문자열 비교방법을 적용하는 것이 보다 효율적인 방법으로 판단된다.

Table 2. Word Vectors of BOQ Code and SCC (Standard Construction Code)

구분

placing con'c

철근콘크리트타설

pump vehicle/pump car

펌프차/펌프카

S15

100m3

70m3

less than

이하

normal

보통

good

양호

BOQ

1

1

1

1

1

1

1

0

SCC1

1

1

1

1

1

1

1

0

SCC2

1

1

1

1

0

1

0

1

3. 실제 프로젝트 내역서 적용사례

양평-이천2공구 현장(한국도로공사 발주) 내역서의 2,067개의 내역을 대상으로 표준공사코드 매칭을 실시하였다. 본 현장은 터널 1개소, 교량 5개소(특허공법 적용 4개소)로서 토목 도로공사에서 나타나는 전형적인 구조물을 모두 포함하고 있고 특허공법이 적용된 교량은 조달청 표준공사코드와 오히려 쉽게 일치하지 않는 불리한 조건이 있어 선택하게 되었다.

3.1 토목용어사전(Civil Term Dictionary; CTD) 작성

자연어의 단어벡터화를 위해서는 단어의 분절 즉, 토크나이징(tokenizing)이 필수적이지만 일반적인 자연어 처리 프로그램에서의 토크나이징 라이브러리는 토목관련 단어를 인지하지 못한다. 즉, 자연어 처리에서 흔히 사용되는 python 프로그램에서 라이브러리로 NLTK, Spacy나 한글에 특화된 KoNLPy 등이 있지만 이들은 일반적인 문장에서의 띄어쓰기나 어간 및 조사 구분에 대한 토크나이징에는 효과적이나 토목용어에 대한 토크나이징은 불가능하다. 예를 들어, ‘법안처리과정’이나 ‘법안 처리과정’이나 ‘법안처리 과정’이라는 말뭉치가 있다면, 일반적인 문장 처리에 사용되는 라이브러리에서는 모두 띄어쓰기에 상관없이 ‘법안’, ‘처리’, ‘과정’으로 토크나이징된다. 이는 라이브러리에 이미 일반인이 사용하는 단어들이 내재되어 있기 때문이다.

하지만 토목업계에서 사용되는 특수한 용어인 펌프차, 유로폼과 같은 단어는 인지하지 못할 뿐만 아니라 토목기술자들이 같은 말뭉치라고 생각하는 ‘콘크리트타설’과 ‘콘크리트 타설공사’와 ‘콘크리트 공사’를 다른 단어로 인식하게 된다. 따라서 표준공사코드 내역과 일반 내역서의 내역의 문자열을 서로 비교하기 위해서는 토목용어사전의 정립이 필요하며, 이에 대한 과정을 그림으로 표현하면 Fig. 2와 같다.

Fig. 2. Establishing CTD (Civil Term Dictionary)
../../Resources/KSCE/Ksce.2024.44.5.0719/fig2.png

표준공사코드 내역과 내역서의 내역을 모두 합하여 python에서 제공하는 정규식(Regular Expression)을 이용하여 한글, 알파벳, 숫자 및 특정 특수문자(., *, ~, -)는 제외하고 모두 토크나이징하여 단어를 나열하고 약 5,000여개 단어를 확인하면서 수작업으로 토목용어사전(CTD)을 완성하였다. Table 3은 토목용어사전의 예시이다. 예를 들어 같은 단어로 인식될 수 있게 12, 12.0 및 12.00과 con’c(콘크리트) 및 concrete는 같은 값을 부여하였다.

Table 3. Examples in CTD in Real Project BOQ

Key

Value

Key

Value

Key

Value

100×100

100

118

134

waterfront 친수

3369

100×25

101

119

135

revetment 친호안

3370

100×40

102

12

136

grit chamber 침사지

3371

100×50

103

12.0

136

subsided pipe 침설관

3372

1000

104

12.00

136

precipitation reservoir 침전조

3373

1000×1000×100

105

12×12.7

137

permeation properties 침투성

3374

1000×1000×190

106

12×15.2

138

permeated water 침투수

3375

1000×1000×200

107

12.5

141

permeation type 침투식

3376

1000×500×200

108

12.7

142

subsidence 침하

3377

1000×550×390

109

120

143

con'c 콘크리트

3404

1000×600×3

110

120×110

144

concrete

3404

3.2 내역 상위 계층구조 고려

내역에는 공종과 규격이 있는데 이들 문자열에 대한 값만으로 비교할 때 정보의 불충분으로 인해 비교가 안되는 경우가 많이 있다. 예를 들어 내역서에 Table 4와 같은 수량내역이 있으면, 표준공사코드의 내역과 매칭 자체가 안되거나 엉뚱한 내역과 매칭되는 경우가 있다. 따라서 이들 내역의 상위 계층(hierarchy)을 살펴보면 각각 Table 5와 같이 되어, 수량을 포함한 내역에서 보여지지 않은 문자열이 나타나 이를 고려하면 각각 Table 6과 같이 내역서코드1-표준공사코드1, 내역서코드2-표준공사코드2로 각각 매칭된다. Table 5Table 6에서 볼드체로 표시된 문자는 탐색성공에 기여하는 공통문자이다.

결국 내역 자체 비교에서 나타나지 않은 문자열이 상위 계층까지 고려할 때 탐색이 성공하는 경우가 많으며, 이를 미고려시 매칭 성공률이 45.85 %(948개 내역 매칭성공)인데 반해, 상위 계층 고려시 58.92 %(1,218개 내역 매칭성공)까지 상승하는 것으로 나타났다.

Table 4. CBS of BOQ without Hierarchy

BOQ code1

Item

Spec

XXX.XXX.XXX

line part

직선부

BOQ code2

Item

Spec

YYY.YYY.YYY

backfill

뒷채움부설

less than 25mm

25mm 이하

Table 5. CBS of BOQ with Hierarchy

BOQ code1

Item

Spec

upper hierarchy

earth work batter board

토공규준틀

slope

비탈

XXX.XXX.XXX

line part

직선부

BOQ code2

Item

Spec

upper hierarchy

retaining wall work

옹벽공사

reinforced earth retaining wall

보강토옹벽

YYY.YYY.YYY

backfill

뒷채움부설

less than 25mm

25mm 이하

BOQ code1 Item Spec upper hierarchy earth work batter board 토공규준틀 slope 비탈 XXX.XXX.XXX line part 직선부 BOQ code2 Item Spec upper hierarchy retaining wall work 옹벽공사 reinforced earth retaining wall 보강토옹벽 YYY.YYY.YYY backfill 뒷채움부설 less than 25mm 25mm 이하
Table 6. Standard Construction Codes Matched with BOQs

SCC1

Item

Spec

upper hierarchy

quality control cost

품질관리비

survey & inspection cost

측량 및 검측비

CAD240310000

earth work batter board/slope batter board

토공규준틀/비탈규준틀

SCC2

Item

Spec

upper hierarchy

soil improvement work

지반개량공사

specific retaining wall

특정옹벽

CCG111020000

reinforced earth retaining wall/bock type

보강토옹벽/블록식

backfill & compaction

뒷채움 및 다짐

Table 7. CBS of BOQ Code and Standard Construction Code Example 1

BOQ code

Item

Spec

XXX.XXX.XXX

excavation(blasting rock)

땅깎기(발파암)

precise excavation

정밀깎기

SCC

Item

Spec

CDD300200000

cutting(blasting rock)

흙깎기공/발파암

precise vibration-controlled blasting

정밀진동제어발파

3.3 불용어 처리, 표준공사코드내역 전처리 및 키워드 변경

일반적인 자연어 처리에서 불용어란 문장에서 자주 출현하나 전체적인 의미에 큰 영향을 주지 않는 단어를 말한다. 불용어 처리를 하려면 불용어 사전을 따로 정의해야 하는데, 자연어에서 영어의 관사나 한글의 조사 따위가 대표적인 불용어로서 python 프로그램에서는 영어는 NLTK, 한글은 KoNLPy 라이브러리에서 처리한다.

그런데 본 연구에서는 일반적인 문장이 아닌 토목공사 내역의 문자열 비교이므로 관사나 조사보다는 문자열에서 내역이 나타내는 의미와 크게 상관이 없는 단어을 추출하고 이들 단어에 대한 불용어 사전을 따로 설정해야 한다. 이를 조사한 결과, 공사 내역서에서는 ‘(표준시장)’, ‘(원가)’, ‘(신설)’ 등의 단어와 표준공사코드는 ‘성토의 부대공’, ‘흙깎기의 부대공’, ‘절토의 부대공’ 등의 단어로 나타났다.

내역의 국가표준이라 할 만큼 공신력이 있는 조달청 표준공사코드임에도 불구하고 많은 오류(오타 등)가 발견되어 이로 인해 올바른 문자열 비교가 이루어지기 힘들어 전처리 작업이 필요하다. 절토에 해당되는 단어인 ‘흙깎기’가 ‘흙깍기’로 잘못 기재되어 있거나 ‘부체도로’가 ‘부채도로’로 잘못 표시되는 등 오타가 많아 잘못된 단어도 올바른 철자의 단어와 같은 값(value)으로 토목용어사전에 등재하였다.

사용자 정의 토목용어사전 생성시 무조건 최소단위로 나누거나 많이 사용되는 용어라고 해서 최소단위끼리 결합된 형태로 문자열 비교를 할 때 오류가 발생할 수 있다. 즉, Table 7과 같이 내역서와 표준공사코드 내역이 있다고 할 때, 용어사전의 키워드가 자주 사용되는 용어로 간주되어 ‘정밀깎기’로 되어 있다면 내역서 규격의 ‘정밀깎기’와 표준공사코드 규격의 ‘정밀진동제어발파’가 같은 의미로 분류가 되지 않아 유사도 분석에서 다른 용어로 판단되는 오류가 발생한다. 따라서 이런 경우는 ‘정밀깎기’에서 ‘정밀’이라는 용어를 분리시키면 내역서와 표준공사코드 내역의 규격에서 ‘정밀’이라는 단어가 토크나이징되어 올바른 문자열 비교가 가능해진다. 또한 Table 8과 같이 내역서와 표준공사코드 내역이 있다고 할 때, 내역서에서는 ‘(신설)’이라는 단어가 불용어이므로 생략되어 ‘토사’만 남고 표준공사코드에서 사용자 정의 토목용어사전에 ‘폐토사’라는 용어가 아니라 ‘폐(廢)’ 및 ‘토사’로 단어가 등재되어 있다면, ‘토사’라는 단어가 공통으로 인식되어 문자열 유사도를 100 %로 판단하는 오류가 발생한다. 물론 이와 같은 오류는 내역서는 유용토 운반이라는 상위계층에 대한 정보와 표준공사코드는 폐기물 처리라는 정보가 누락된 이유도 있어 용어사전에 ‘폐토사’를 새로 등재하고 상위계층 정보를 고려하면 내역 명칭은 [‘유용토’, ‘운반’, ‘불도저’, ‘운반’, ‘토사’]로, 표준공사코드는 [‘토공사’, ‘유용토’, ‘운반’, ‘도쟈’, ‘운반’, ‘토사’]로 각각 토크나이징되어 유사도 점수 95.9 %로서 올바른 비교가 가능해진다. 상기를 고려할 때 Table 8 상단 내역(YYY.YYY.YYY)은 Table 9의 표준공사코드(CDI21211N000)와 매칭된다.

따라서 키워드 변경(최적화)전 매칭 성공률이 47.76 %(987개 내역 매칭성공)인데 반해, 변경하면 55.85 %(1,154개 내역 매칭성공)까지 증가하는 것으로 나타났다.

Table 8. CBS of BOQ Code and Standard Construction Code Example 2

BOQ code

Item

Spec

YYY.YYY.YYY

soil(new)

토사(신설)

SCC

Item

Spec

CAD150080000

wasted soil

폐토사

Table 9. Standard Construction Code Matched with BOQ

SCC

Item

Spec

CDI21211N000

soil to be used/transportation by dozer

유용토/도쟈운반

soil

토사

3.4 표준공사코드 매칭 예시

이제, 앞절에서 언급한 방법을 이용하여 간단한 예시를 들고자 한다. 내역서 중 Table 10과 같은 3개의 내역에 대해, 표준공사코드 내역(Table 11)을 탐색하여 표준공사코드를 매칭할 때, 미리 모든 내역 명칭을 토크나이징하여 토목용어사전(CTD)을 Table 12와 같이 준비한다.

전절에서 언급된 상위계층까지 고려하여 토크나이징한 결과는 Table 13과 같다.

이를 토목용어사전에 의해 key에 대한 (value, 빈도수)로 표시하여 DTM으로 나타내면 Table 14와 같다.

이를 python의 gensim 라이브러리를 이용하여 TF-IDF 벡터로 나타내고 코사인 유사도를 구하면 Table 15와 같다.

Table 10. CBS of BOQ Example

BOQ code

Item

Spec

XXX.XXX.XXX

breaking reinforced concrete

철근콘크리트깨기

less than T=30cm(machine)

T=30cm 미만(기계)

YYY.YYY.YYY

breaking plain concrete

무근콘크리트깨기

less than T=30cm(machine)

T=30cm 미만(기계)

ZZZ.ZZZ.ZZZ

breaking concrete pavement

콘크리트포장깨기

machine

기계

Table 11. CBS of Standard Construction Code Example

SCC

Item

Spec

CDC111100000

breaking reinforced concrete/less than T=30cm

철근콘크리트 깨기/T=30cm 미만

good

양호

CDC111100500

breaking reinforced concrete/less than T=30cm

철근콘크리트 깨기/T=30cm 미만

poor

불량

CDC111200000

breaking reinforced concrete/greater than T=30cm

철근콘크리트 깨기/T=30cm 이상

good

양호

CDC111200500

breaking reinforced concrete/greater than T=30cm

철근콘크리트 깨기/T=30cm 이상

poor

불량

CDC121100000

breaking plain concrete/less than T=30cm

무근콘크리트 깨기/T=30cm 미만

good

양호

CDC121100500

breaking plain concrete/less than T=30cm

무근콘크리트 깨기/T=30cm 미만

poor

불량

CDC121200000

breaking plain concrete/greater than T=30cm

무근콘크리트 깨기/T=30cm 이상

good

양호

CDC121200500

breaking plain concrete/greater than T=30cm

무근콘크리트 깨기/T=30cm 이상

poor

불량

CDC210100000

breaking concrete pavement

콘크리트포장 깨기

less than T=30cm

T=30cm 미만

CDC211100000

breaking concrete pavement/less than T=30cm

콘크리트포장 깨기/T=30cm 미만

good

양호

Table 12. CTD Example

Key

Value

Key

Value

existing 기존

0

less than 미만

9

structure 구조물

1

machine 기계

10

demolition 철거공

2

pavement 포장

11

reinforced 철근

3

greater than 이상

12

concrete 콘크리트

5

asphalt 아스팔트

13

breaking 깨기

6

poor 불량

14

plain 무근

7

good 양호

15

T=30cm

8

Table 13. Tokenized Texts of BOQ and Standard Construction Code Example

Source

Tokenizing

BOQ

['existing', 'structure', 'demolition', 'reinforced', 'concrete', 'breaking', 'T=30cm', 'less than', 'machine']

['기존', '구조물', '철거', '철근', '콘크리트', '깨기', 'T=30cm', '미만', '기계']

['existing', 'structure', 'demolition', 'plain', 'concrete', 'breaking', 'T=30cm', 'less than', 'machine']

['기존', '구조물', '철거', '무근', '콘크리트', '깨기', 'T=30cm', '미만', '기계']

['existing', 'pavement', 'breaking', 'existing', 'structure', 'demolition', 'concrete', 'pavement', 'breaking', 'machine']

['기존', '포장', '깨기', '기존', '구조물', '철거', '콘크리트', '포장', '깨기', '기계']

SCC

['existing', 'structure', 'demolition', 'reinforced', 'concrete', 'breaking', 'T=30cm', 'less than', 'good']

['기존', '구조물', '철거', '철근', '콘크리트', '깨기', 'T=30cm', '미만', '양호']

['existing', 'structure', 'demolition', 'reinforced', 'concrete', 'breaking', 'T=30cm', 'less than', 'poor']

['기존', '구조물', '철거', '철근', '콘크리트', '깨기', 'T=30cm', '미만', '불량'

['existing', 'structure', 'demolition', 'reinforced', 'concrete', 'breaking', 'T=30cm', 'good']

['기존', '구조물', '철거', '철근', '콘크리트', '깨기', 'T=30cm', '양호']

['existing', 'structure', 'demolition', 'reinforced', 'concrete', 'breaking', 'T=30cm', 'poor']

['기존', '구조물', '철거', '철근', '콘크리트', '깨기', 'T=30cm', '불량']

['existing', 'structure', 'demolition', 'plain', 'concrete', 'breaking', 'T=30cm', 'less than', 'good']

['기존', '구조물', '철거', '무근', '콘크리트', '깨기', 'T=30cm', '미만', '양호']

['existing', 'structure', 'demolition', 'plain', 'concrete', 'breaking', 'T=30cm', 'less than', 'poor']

['기존', '구조물', '철거', '무근', '콘크리트', '깨기', 'T=30cm', '미만', '불량']

['existing', 'structure', 'demolition', 'plain', 'concrete', 'breaking', 'T=30cm', 'greater than', 'good']

['기존', '구조물', '철거', '무근', '콘크리트', '깨기', 'T=30cm', '이상', '양호']

['existing', 'structure', 'demolition', 'plain', 'concrete', 'breaking', 'T=30cm', 'greater than', 'poor'],

['기존', '구조물', '철거', '무근', '콘크리트', '깨기', 'T=30cm', '이상', '불량']

['concrete', 'pavement', 'existing', 'structure', 'demolition', 'concrete', 'pavement', 'breaking', 'T=30cm', 'less than']

['콘크리트', '포장', '기존', '구조물', '철거', '콘크리트', '포장', '깨기', 'T=30cm', '미만']

['concrete', 'pavement', 'existing', 'structure', 'demolition', 'concrete', 'pavement', 'breaking', 'T=30cm', 'less than', 'good']

['콘크리트', '포장', '기존', '구조물', '철거', '콘크리트', '포장', '깨기', 'T=30cm', '미만', '양호']

Table 14. DTM of BOQ and Standard Construction Code Example

Source

DTM

BOQ

[(0, 1), (1, 1), (2, 1), (4, 1), (5, 1), (6, 1), (8, 1), (9, 1), (10, 1)]

[(0, 1), (1, 1), (2, 1), (7, 1), (5, 1), (6, 1), (8, 1), (9, 1), (10, 1)]

[(0, 2), (1, 1), (2, 1), (11, 2), (6, 2), (5, 1), (10, 1)]]

SCC

[[(0, 1), (1, 1), (2, 1), (4, 1), (5, 1), (6, 1), (8, 1), (9, 1), (15,1)]

[(0, 1), (1, 1), (2, 1), (4, 1), (5, 1), (6, 1), (8, 1), (9, 1), (14,1)]

[(0, 1), (1, 1), (2, 1), (4, 1), (5, 1), (6, 1), (8, 1), (15,1)]

[(0, 1), (1, 1), (2, 1), (4, 1), (5, 1), (6, 1), (8, 1), (14,1)]

[(0, 1), (1, 1), (2, 1), (7, 1), (5, 1), (6, 1), (8, 1), (9, 1), (15,1)]

[(0, 1), (1, 1), (2, 1), (7, 1), (5, 1), (6, 1), (8, 1), (9, 1), (14,1)]

[(0, 1), (1, 1), (2, 1), (7, 1), (5, 1), (6, 1), (8, 1), (12, 1), (15,1)]

[(0, 1), (1, 1), (2, 1), (7, 1), (5, 1), (6, 1), (8, 1), (12, 1), (14,1)]

[(5, 2), (11, 2), (0, 1), (1, 1), (2, 1), (6, 1), (8, 1), (9, 1)]

[(5, 2), (11, 2), (0, 1), (1, 1), (2, 1), (6, 1), (8, 1), (9, 1), (15,1)]

Table 15. TF-IDF and Cosine Similarity of BOQ and Standard Construction Code Example
../../Resources/KSCE/Ksce.2024.44.5.0719/tb15.png
Table 16. Final Results of Finding Standard Construction Code (Example)

Initial BOQ 당초 내역서

Found SCC 탐색된 표준공사코드

Code

Item

Spec

Code

Item

Spec

XXX.XXX.XXX

breaking reinforced concrete

철근콘크리트깨기

less than T=30cm(machine)

T=30cm 미만(기계)

CDC111100000

breaking reinforced concrete/

less than T=30cm

철근콘크리트 깨기/

T=30cm 미만

good

양호

YYY.YYY.YYY

breaking plain concrete

무근콘크리트깨기

less than T=30cm(machine)

T=30cm 미만(기계)

CDC121100000

breaking plain concrete/

less than T=30cm

무근콘크리트 깨기/

T=30cm 미만

good

양호

ZZZ.ZZZ.ZZZ

breaking concrete pavement

콘크리트포장깨기

machine

기계

CDC210100000

breaking concrete pavement

콘크리트포장 깨기

less than T=30cm

T=30cm 미만

Table 15 왼쪽에서 내역서와 표준공사코드 내역의 모든 말뭉치 13개를 입력했기 때문에 ‘기존’, ‘구조물’, ‘철거’, ‘철근’, ‘콘크리트’와 같이 반복되는 단어는 TF-IDF 벡터 생성 규칙에 의해 생략되었고, 내역서 마지막(3번째) 내역 말뭉치에서 ‘포장’이라는 단어만 남은 것은 다른 단어는 13개 전체 내역에 걸쳐 반복되는 단어이고 ‘포장’ 단어만 반복이 안되기 때문에 남은 것이다. 이제 내역서와 표준공사코드간 TF-IDF 벡터의 문자열 유사도를 계산하여 비교하면 Table 15 오른쪽과 같다.

따라서 당초 내역서중 3개의 내역에 대해 가장 유사한 표준공사코드의 매칭 결과를 나타내면 Table 16과 같다.

내역서의 마지막 내역(3번째) ‘콘크리트포장깨기/기계’에 대한 표준공사코드 매칭결과를 살펴보면 완전히 문자열이 일치하는 것은 없지만 ‘콘크리트포장 깨기/ T=30cm미만/양호’보다 단순한 문자열인 ‘콘크리트포장 깨기/T=30cm미만’이 더 유사(코사인 유사도 값이 높음)한 것으로 나타났다.

3.5 내역서 전체 매칭 결과

양평-이천 2공구 내역서의 전체 2,067개의 내역에 대해 전처리, 키워드 변경 및 상위계층 고려/미고려 등의 다양한 조건에서 표준공사코드와 내역 텍스트가 유사하다고 판단하는 기준값을 62 %로 설정했을 때 약 68.26 %(1,411개 내역 매칭성공)의 매칭 성공률(Hit Rate)이 나타났다. 이 기준값 62 %는 너무 낮게 잡으면 유사하지 않은 내역을 유사하다고 판단하는 오류가 생길 수 있고 너무 높게 잡으면 반대의 경우가 나타날 수 있다. 따라서 유사도 임계치의 최적값 확립이 필요한데, 많은 시도와 수작업에 의한 확인 끝에 62 % 정도가 최적값임을 확인하였다. Table 17은 매칭이 성공된 내역의 일부를 보여준다.

전체 내역의 약 25 % 정도는 표준공사코드에 없는 내역으로 확인되었다. 나머지 약 7 % (= 100 % - 25 % - 68.26 %)의 내역은 단어의 분절이나 미처 단어사전에 동의어로 등재하지 못한 경우로서 이를 조정/보완하면 표준공사코드에 없는 내역이 제외된 나머지 전체, 약 75 %를 모두 탐색할 수 있다. 또한 첫 번째 시도후 실패한 이유를 항목별로 분류하여 단어의 분절(토크나이징)과 이에 따른 토목용어사전을 개정하여 두 번째 시도를 하는 일련의 과정을 자동화하면 단 한번에 75 %를 모두 찾을 수 있을 것으로 사료된다. 전체 내역서에 대해 수작업으로 비교하는 시간이 5일 정도(약 40시간 = 8시간 × 5일) 소요되는데 반해, 프로그램의 러닝 타임이 약 1분 정도 소요되므로 작업 효율이 비약적으로 향상됨을 확인할 수 있다.

Table 17. Part of Final Results of Finding SCC (Yangpyeong-Icheon 2nd Section)

No.

BOQ (Yangpyeong-Icheon 2nd)

Pass/

Fail

Text

Similarity

Consider

Hierarchy

PPS Standard Construction Code

Item

Sepc

Item

Spec

Code

1

Breaking Construction Waste(100M/M)

건설폐기물파쇄

(100M/M)

Loading/

Transportation

적재및운반

Pass

0.9527

No

Breaking Construction Waste

건설폐기물파쇄

100mm

CDC800000000

2

Farm section(T=20CM)

답구간(T=20CM)

Pass

0.7727

Yes

Soil removal/Farm section

표토제거/답구간

T=20cm

CDB100000000

3

Diameter 16-25M/M

직경 16-25M/M

Pass

0.6806

Yes

Special Coupler/

Screw Coupler

특수한이음/나사식이음

Diameter 16-25mm

직경 16-25mm

CEE710030000

4

Less than H=30M

H=30M 미만

Crane

크레인

Pass

0.714

Yes

Rebar Lifting Work

철근인상작업

Less than H=30m

H=30m 미만

CEE730010000

5

Less than H=30M-60M

H=30M-60M 미만

Pass

0.693

Yes

Rebar Lifting Work

철근인상작업

Greater than H=30m

H=30m 이상

CEE730020000

6

Timber post

목재동바리

Deckfinisher type

DECKFINISHER용

Pass

0.9215

No

Timber post/

Deckfinisher type

목재동바리/ DECKFINISHER용

4 times

4회

CAA320300000

7

Pipe post

강관동바리

Horizontal Connection (3months)

수평연결재(3개월)

Pass

0.8696

No

강관동바리/

수평연결재

H=0-3.5m, 3Months

H=0-3.5m, 3개월

CAA320510000

8

Wood form(3times)

합판거푸집(3회)

Complex, 22m-25m

복잡,

22m 초과-25m 이하

Pass

0.7494

No

Form/Smooth Finish

거푸집/매끈한마감

Wood 3times, 22m-25m

합판 3회,

22m 초과-25m 이하

CED300070000

9

Backfill

되메우기

Compaciton

다짐

Pass

0.8813

No

Backfill/Soil

되메우기/토사

Compaction, Machine

다짐, 기계

CDH110000000

10

Dealing of Surplus Soil

잔토처리

Human Labor

인력

Pass

0.9001

No

Dealing of Surplus Soil

잔토처리

Soil

토사

CDF310000000

11

Derinator

데리네이터

Guard Rail O-type (section)

가드레일O형

(단면)

Pass

0.9299

No

Derinater

데리네이타

Guard Rail O-type

가드레일용/O형

CLH230218000

12

Derinator

데리네이터

Retaining Wall (Section)

옹벽용(단면)

Pass

0.8339

No

Derinater

데리네이타

Retaining Wall

옹벽용

CLH230204000

13

Form

거푸집

Euroform, Simple, 0-7m

유로폼, 간단, 0-7m

Pass

0.915

No

Euroform

유로폼

Simple, 0-7m

간단, 0-7m

CED402010000

4. 결 론

공정(4D)관리 BIM을 내역(5D)관리 BIM으로 확장하려면 각 BIM 객체의 WBS 최하위 분류에 매핑되는 CBS의 수량 분개가 필요하고, 시스템 구축시 WBS 및 CBS 데이터베이스 작업이 수반되는데, CBS데이터베이스의 필수적인 고유한 키(key)가 되는 CBS코드가 현재 발주처별, 내역작성 프로그램별로 모두 달라 데이터베이스 작업이 거의 불가능한 실정이다. CBS코드를 조달청의 표준공사코드로 표준화하여 통일한다면 이러한 문제점을 해결할 수 있고 지속 가능한 관리가 가능해진다. 왜냐하면 표준공사코드가 현재 내역입찰시 작성하는 공내역서에 사용되고, 법제화하여 관리되고 있는 표준시장단가와 연관이 있기 때문이다. 따라서 WBS와 CBS(표준공사코드)의 연결셋트를 미리 구성하고 신규공사 내역서의 내역코드를 표준공사코드로 매칭시키면 간단하게 5D가 구현될 수 있다. 그러나 이를 위해 사람이 수작업으로 일일이 비교해가며 표준공사코드를 찾아야 하는데, 내역서의 평균 CBS 개수가 2,000여개인 점을 감안하면 매우 번거로운 작업이고 작업이 완료되더라도 휴먼 에러가 내재될 가능성이 크다.

따라서 최근 화두가 되고 있는 인공지능 자연어 처리 기법을 적용하여 실제 공사(양평-이천2공구) 내역서의 2,067개의 내역에 대하여 표준공사코드 탐색시, 불용어 삭제, 내역의 상위계층 고려/미고려 및 키워드 최적화 등의 작업을 통해 유사도가 가장 높은 경우를 선정한 결과, 최종 탐색성공률은 68.26 %(1,411개 내역 매칭성공)로 나타났다(표준공사코드 데이터 기준일: 2024.1.2.). 또한 일반 내역서로부터 표준공사코드 탐색시 유사도가 성립하는 기준값, 즉 임계치(threshold)는 다양한 시행착오 끝에 62 % 정도가 최적값임을 확인하였다. 결과적으로 기계적인 텍스트 유사도 판단으로 거의 70 %의 상당한 분량의 표준공사코드를 자동으로 탐색할 수 있었고, 획기적으로 휴먼 에러도 줄일 수 있었다.

한편, 조달청 표준공사코드 내역이 일반 공사내역서의 내역을 포함하고 있지 않은 경우도 더러 있다. 이번 사례 내역서의 경우 약 25 % 정도가 이에 해당되었다. 예를 들어 현재 표준공사코드에서‘철근콘크리트타설/펌프차’ 내역은 타설높이별로 구분되어 있지 않고 ‘띠장설치철거’는 설치깊이별로 구분되어 있지 않다. 또한 발주처가 한국도로공사이므로 고속도로에 특화된 내역이나 특허공법관련 내역들은 표준공사코드 내역에 존재하지 않는다. 따라서 이런 경우는 탐색 자체가 불가능해지므로 더욱 정확한 매칭을 위해 유관기관과 협조하여 표준공사코드 내역이 계약시점 공사 내역서의 내역을 기준으로 전부 포함하도록 지속적으로(매월) 갱신되어야 하고, 더 나아가 발주처별, 내역작성 프로그램별로 CBS 코드체계의 표준화된 통일은 5D BIM 정착을 위해 반드시 필요한 것으로 판단된다.

본 연구는 도로공사에서 발주한 일반적인 고속도로 프로젝트 1개 현장을 대상으로 수행된 것으로서, 향후 본 내역코드 탐색기법의 전체 토목공사 영역으로 확장을 위해, 장대터널이나 특수교량 등 전문공종에 특화된 내역서나, 보다 다양한 발주처나 공종(댐, 항만, 단지 등)의 내역서를 대상으로 탐색성공률이나 매칭성공 기준값의 변화 및 검증 등 추가 연구가 필요할 것으로 사료된다.

Acknowledgements

The research was supported by MOLIT (Ministry of Land, Infrastructure and Transport) and KAIA (Korea Agency for Infrastructure Technology Advancement), through ‘Smart Construction Technology Development (RS-2020-KA158708)’ led by Korea Expressway Corporation.

References

1 
"Institute for Information & Communications Technology Promotion (IITP) (2021). Digitalizing construction project requirements using artificial intelligence and natural language processing (in Korean)."URL
2 
"Jang, Y., Choi, J., Park, S., Kang, Y., Kang, H. and Kim, H. (2021). “Movie corpus emotional analysis using emotion vocabulary dictionary.” Proc. of the 33rd Annual Conference on Human and Cognitive Language Technology, pp. 379-383."URL
3 
"Jang, S., Kim, H., Kim, S., Choi, W., Jeong, J. and Lee, Y. (2022). “Development of online fashion thesaurus and taxonomy for text mining.” Journal of the Korean Society of Clothing and Textiles, KSCT, Vol. 46, No. 6, pp. 1142-1160, https://doi.org/10.5850/JKSCT.2022.46.6.1142."DOI
4 
"Kim, S., Cha, G., Cho, M. and Park, S. (2022a). “Text mining based analysis of construction accident causes and risk factors.” Proc. of the 2022 Spring Conference of the Korea Academia-Industrial Cooperation Society, pp. 272-273."URL
5 
"Korea Institute of Civil Engineering and Building Technology (KICT) (2017). WBS (Work Breakdown Structure) List, Available at: https://www.kict.re.kr/board.es?mid=a10501040000&bid=archv&tag=&act=view&list_no=12369 (Accessed: July 25, 2024)."URL
6 
"Kim, H., Nam, J., Kim, Y. and Ryu, I. (2023a). “Methods for quantitative disassembly and code establishment of CBS in BIM for program and payment management.” Journal of the Computational Structural Engineering Institute of Korea, COSEIK, Vol. 36, No. 6, pp. 381-389, https://doi.org/10.7734/COSEIK.2023.36.6.381."DOI
7 
"Kim, Y., Park, K., Choi, S., Jang, Y., Yeom, Y., Lee, B. and Shin, H. (2023b). Apparatus and method for analysis of transaction brief data using corpus for machine learning based on financial MyData and computer program for the same, Available at: https://doi.org/10.8080/1020220069779 (Accessed: July 25, 2024)."DOI
8 
"Kim, D., Lee, D., Park, J., Oh, S., Kwon, S., Lee, I. and Choi, D. (2022b). “KB-BERT: Training and application of Korean pre-trained language model in financial domain.” Journal of Intelligence and Information Systems, KIISS, Vol. 28, No. 2, pp. 191-206, http://dx.doi.org/10.13088/jiis.2022.28.2.191."DOI
9 
"Lane, H., Hapske, H., Howard, C. and Ryu, K. (translator) (2020). Natural language processing in action, JayPub (Manning) pp. 109 (in Korean)."URL
10 
"Nam, J., Jo, C. and Park, S. (2017). “A study on applying information framework for BIM based WBS - Focusing on civil construction.” Journal of the Korea Academia-Industrial Cooperation Society, KAIS, Vol. 18, No. 11, pp. 770-777, https://doi.org/10.5762/KAIS.2017.18.11.770."DOI
11 
"Park, K. and Kim, H. (2021). “Analysis of seasonal importance of construction hazards using text mining.” Journal of Civil and Environmental Engineering Research, KSCE, Vol. 41, No. 3, pp. 305-316, https://doi.org/10.12652/Ksce.2021.41.3.0305."DOI
12 
"Park, H. and Lee, B. (2011). “EVMS database system Implementation for interworking of WBS & CBS based management in construction works.” Journal of the Korea Academia-Industrial Cooperation Society, KAIS, Vol. 12, No. 6, pp. 2851-2858, https://doi.org/10.5762/KAIS.2011.12.6.2851."DOI
13 
"PCCES (Public Construction Cost Estimation System) (2024). Standard Construction Code, Available at: https://npccs.g2b.go.kr (Accessed: January 2, 2024)."URL
14 
"Shim, M., Park, C., Hur, Y. and Lim, H. (2021). “Con-Talky: Information extraction and visualization platform for com- munication of construction industry.” Proc. of the 33rd Annual Conference on Human and Cognitive Language Technology, pp. 476-481."URL
15 
"Yu, W. and Ahn, S. (2024). Introduction to NLP using deep learning, Available at: https://wikidocs.net/22650, https://wikidocs.net/24559, https://wikidocs.net/31698 (Accessed: July 25, 2024)."URL