[AI 모델 탐험기] #13 Neural Search를 이용하여 제작된 법률 QA 검색 시스템, Legal QA

AI Network
11 min readJul 23, 2021

--

[편집자주] 본 글은 커먼컴퓨터에서 Developer Relations Engineer를 맡고 있는 백동훈님이 오픈소스 AI모델을 정리하고 인사이트를 공유하는 글로 시리즈로 기획돼 발행되고 있습니다. 열세 번째 글은 Neural Search를 이용하여 제작된 법률 QA 검색 시스템 Legal QA입니다.

제가 오늘 소개해드릴 프로젝트는 haven-jeon님의 Legal QA입니다. SKT에서 리서치 엔지니어로 활동하고 계시는 haven-jeon님은 KoBERT, KoGPT2 등 SKT에서 발표한 주요 모델들의 개발에 참여하셨습니다. 또한 haven-jeon님은 무료법률 QA 데이터셋, SentenceKoBART 그리고 Jina를 이용하여 입력한 텍스트에 대해 가장 유사한 법률 QA를 검색해주는 Legal QA를 공개하셨습니다.

프로젝트를 확인하고 싶으신 분들은 아래 링크를 참조해주세요!

Demo : https://link.ainize.ai/2UEmuwK

API : https://link.ainize.ai/3BtGvqB

Github : https://link.ainize.ai/2UC9uaX

드라마 또는 영화에 나오는 아찔한 범죄 장면들을 보면서 “영화가 아니라 현실이었으면 등장인물 잡혀가겠는데?” 같은 생각을 해본 적이 있나요? 저는 이런 생각을 가진 적이 자주 있는데요, 이러한 궁금증을 해소하기 위해 이번 글의 마지막 부분에서는 드라마 “펜트하우스”의 장면에 대한 Legal QA Demo 결과까지 한 번 확인해보겠습니다.

Jina와 Neural Search

Legal QA는 Neural Search 프레임워크인 Jina를 이용하여 만들어졌습니다. Jina를 이용하면 텍스트, 이미지, 문서 등 다양한 종류의 데이터에 대한 Neural Search 프로젝트를 제작할 수 있습니다. 여기서 Neural Search는 무엇일까요? 간단한 예시를 통해 살펴보겠습니다.

어느 날 핫도그가 먹고 싶어져서 인터넷에 핫도그를 검색하려고 합니다. 네이버, 구글과 같은 검색엔진에 “핫도그”라고 검색을 하면 “핫도그 맛집”, “핫도그 만들기”와 같이 핫도그와 관련된 문서들을 검색 결과로 얻을 수 있습니다. 검색 과정을 간단하게 살펴보면 입력한 텍스트(query)와 유사한 문서들을 찾고, 문서들의 순위를 매기는 과정을 거칩니다. 이러한 과정에서 Neural Network를 이용하는 것이 Neural Search입니다. 그렇다면 Neural Search가 구체적으로 어느 과정에서 사용되는 걸까요? 문서들의 순위를 매기는 과정에도 사용될 수 있지만, 대체적으로 텍스트에 대한 임베딩 벡터를 얻는 과정에 사용됩니다.

텍스트를 어떻게 표현할까?

임베딩(Embedding)이란 컴퓨터가 텍스트를 처리할 수 있도록 텍스트들을 벡터화(Vectorization)하는 작업을 말합니다. 임베딩이 성공적으로 이루어지면 비슷한 텍스트들은 비슷한 벡터값을 가지게 되는데, 이는 텍스트의 의미적, 문법적 정보가 하나의 임베딩 벡터로 잘 표현된 것이라 볼 수 있습니다.

또한 임베딩 벡터는 Dense Vector(밀집 벡터)이므로 차원은 사용자가 설정한 값으로 가지고, 모든 원소들은 실수 값을 가지게 됩니다.

임베딩 벡터의 간단한 예시를 살펴보겠습니다. 벡터의 원소 값들은 임의로 설정하였습니다.

< 문장 임베딩 > - 차원을 3으로 설정
I have a pen => [0.4, 0.2, 0.6]
I have a pineapple => [0.4, 0.3, 0.8]

Neural Network를 이용하면 텍스트에 대한 임베딩 벡터를 구할 수 있는데요, 임베딩 단위가 단어면 “단어 임베딩”, 문장이면 “문장 임베딩”, 문서면 “문서 임베딩”이라고 부릅니다.

코사인 유사도(Cosine similarity)

두 임베딩 벡터가 있으면 벡터사이의 유사도를 측정할 수가 있습니다. 유사도 측정 방법에는 코사인 유사도(Cosine similarity), 유클리드 거리(Euclidian distance), 맨하탄 거리(Manhattan distance) 등등 여러 가지 방법들이 있지만, 그 중 Legal QA에 사용된 코사인 유사도에 대해 알아보겠습니다.

코사인 유사도는 두 벡터의 유사도를 측정하는 대표적인 방법으로, 두 벡터 사이의 각도에 대한 코사인 값을 나타냅니다. 아래 사진에서 cosθ의 값이 두 임베딩 벡터의 유사도가 됩니다.

출처 : Wasserstein Distance and Textual Similarity

코사인 유사도는 코사인 값의 범위인 -1 ~ 1사이의 값을 가집니다. -1에 가까울 수록 서로 반대되고, 0에 가까울 수록 서로 독립이고, 1에 가까울 수록 서로 유사하다고 판단합니다. 즉, 코사인 유사도는 두 벡터가 가리키는 방향이 얼마나 유사한지를 나타냅니다.

유사도 계산에서 어떤 임베딩 벡터를 사용하느냐에 따라 다양한 비교가 가능합니다. 단어 임베딩 벡터 사이의 유사도를 계산하면 단어 사이의 유사도를 측정할 수 있고, 문서 임베딩 벡터 사이의 유사도를 계산하면 문서 사이의 유사도를 측정할 수 있습니다.

검색과정에서 query와 관련된 문서들을 찾기 위해서는 query와 전체 문서 각각에 대한 임베딩 벡터를 구해야 합니다. 이후 query와 각 문서들의 임베딩 벡터에 대한 유사도를 계산할 수 있으므로 이들이 얼만큼 유사한지 측정할 수 있기 때문입니다.

출처 : information retrieval using word2vec based vector space model

Neural Search의 장점은?

구글은 대규모 언어모델인 BERT를 자체 검색 알고리즘에 사용하여 검색 성능을 향상시켰다고 알려져 있습니다. 최근에는 네이버 역시 자체 검색 알고리즘에 BERT를 사용할 것이라고 발표하였습니다. 이렇듯 Neural Search를 적용하는 기업들이 점점 많아지고 있는데요, Neural Search가 기존의 검색 방법과 비교했을 때 가지는 장점은 무엇이 있을까요? 이를위해 기존의 검색 방법을 살펴보겠습니다.

기존에는 query에 대해서 키워드 위주의 검색이 이루어졌습니다. 따라서 오타, 줄임말 등등 발생할 수 있는 다양한 경우들에 대한 규칙(rule)들을 작성해 줘야 했습니다. 하지만 아무리 많은 규칙을 작성해도 모든 경우들에 대한 규칙을 작성하는 것은 사실상 불가능하고, 결과적으로 검색 시스템이 취약하고, 유지보수 또한 어렵다는 단점을 가지고 있습니다.

출처 : WHAT IS NEURAL SEARCH, AND WHY SHOULD I CARE?

이와달리 BERT 등을 적용한 Neural Search에서는 query에 대한 전체적인 문맥(context)을 파악할 수 있기 때문에 query에 오타, 줄임말 등이 있어도 알맞은 검색이 이루어질 수 있습니다.

구글에서 발표한 하나의 예시를 살펴보면 “브라질 → 미국”에 대한 내용이 query로 입력됐습니다. 해당 query에 대해서 BERT를 적용하기 전에는 query와 관련이 적은 “미국 → 브라질”에 대한 내용이 잘못 검색되었지만 BERT를 적용한 후에는 “브라질 → 미국”에 대한 내용이 정확히 검색이 된 것을 확인할 수 있습니다.

출처 : Understanding searches better than ever before

그렇다면 Legal QA에서는 어떤 모델을 이용하여 Neural Search를 적용했을까요?

SentenceKoBART

Legal QA에서는 SentenceKoBART라는 모델을 이용하였습니다. 이는 KoBART에 Sentence-BERT의 학습 방법을 적용한 것입니다. 여기서 Sentence-BERT는 문장 간 유사도를 비교하는데 많은 계산이 필요하다는 BERT의 한계점을 siamese/triplet 네트워크를 이용하여 개선시킨 모델입니다.

그렇다면 SentenceKoBART를 통해 문장 임베딩 벡터를 구하는 과정을 살펴보겠습니다. 먼저 SentenceKoBART에 토큰화 된 문장을 입력으로 넣게 되면 입력 토큰 각각에 대한 벡터 값들을 구할 수 있습니다. 그리고 입력 토큰들의 임베딩 벡터에 대해서 평균을 취하고, Linear 레이어를 통과시켜 얻은 벡터를 문장 임베딩 벡터로 사용합니다.

Demo 사용해보기

지금부터 Jina Legal QA Demo의 사용법을 알아보겠습니다. Demo는 링크에서 사용하실 수 있습니다.

Demo 페이지에 있는 Title에 원하는 텍스트를 입력하고 Search 버튼을 누르면, 입력한 텍스트와 가장 유사하다고 계산된 질문-답변 쌍이 반환됩니다. Legal QA는 법률적으로 효력이 없으므로 재미로만 보시면 좋을 거 같습니다!

  • API 사용하기

이번에는 Ainize에서 제공하는 API를 사용하여 결과를 확인해보겠습니다. API에 관한 내용은 링크에서 확인할 수 있습니다.

curl 명령어에서 top_k와 data 부분을 수정하여 API를 요청할 수 있습니다.

드라마 “펜트하우스” 장면에 대한 결과는?

이번에는 현재 방영 중인 드라마 “펜트하우스”에 나오는 장면의 설명을 Legal QA의 입력으로 넣어보겠습니다.

출처 : “가해자가 아니라면 피해자는 없나요”…‘펜트하우스’가 꼬집은 ‘학폭’ [SW시선]

극 중에 등장하는 “천서진”은 “교사로서 학교폭력이 발생했을때 피해자를 보호하는게 의무지만 그러지 않고 방관하거나 가해자들을 감싸거나 피해자들을 악랄하게 괴롭히는 등 학교폭력에 적극 가담”하는 행동을 합니다. 이에 대한 Legal QA의 결과는 어떻게 나올까요?

해당 장면에 대한 결과를 보면 교사는 아니지만 학교폭력 가해자의 부모들의 책임에 대한 상담 내용이 연관 내용으로 검색이 되었습니다.

지금까지 Legal QA에 대해 알아보고, 드라마 “펜트하우스” 속 장면에 대한 결과까지 확인해보았습니다. 혹시 다른 드라마나 영화의 내용, 직접 겪었던 일 등등… 입력해보고 싶은 내용들이 있으신가요? 그렇다면 Legal QA Demo에서 결과를 확인해보세요! 그리고 재밌는 결과를 얻었다면 댓글을 통해 다른 사람들과 공유해보세요!

레퍼런스

AI 네트워크는 블록체인 기반 플랫폼으로 인공지능 개발 환경의 혁신을 목표로 하고 있습니다. 수백만 개의 오픈 소스 프로젝트가 라이브로 구현되는 글로벌 백엔드 인프라를 표방합니다.

최신 소식이 궁금하시다면 아래 커뮤니케이션 채널을 참고해주시기 바랍니다. 다시 한 번 감사합니다.

AI네트워크 공식 홈페이지: https://ainetwork.ai/

공식 텔레그램: telegram.com/ainetwork_kr

아이나이즈(Ainize): https://ainize.ai

유튜브: https://www.youtube.com/channel/UCnyBeZ5iEdlKrAcfNbZ-wog

페이스북: https://www.facebook.com/ainetworkofficial/

포럼: https://forum.ainetwork.ai/

AIN Price chart: https://coinmarketcap.com/currencies/ai-network/onchain-analysis/

--

--

AI Network
AI Network

Written by AI Network

A decentralized AI development ecosystem built on its own blockchain, AI Network seeks to become the “Internet for AI” in the Web3 era.

No responses yet