최종산출물 · 도서자료 기계독해

2018년 소셜 빅데이터 기반 보건복지 이슈 동향 분석

uuid
9f04e2b0-5369-52c8-b128-fbc38a76a1b2
content_id
PCY_201908260556547681
doc_id
PCY_201908260556547681_4
발행기관
한국보건사회연구원
발행연도
2018
KDC
330
답변 불가 (is_impossible)
True
문맥 (context)
행정안전부는 종이증명서 발급에 따른 국민·기업의 불편과 사회적 비용을 획기적으로 줄이기 위하여 4차 산업혁명의 핵심 기술인 블록체인 기반의 전자증명서 발급·유통 플랫폼 구축에 나선다. 행정안전부는 2019년에는 전자증명서 발급·유통 플랫폼을 구축하고, 2019년 말에 시범서비스를 거쳐 2020년부터 전자증명서를 발급·유통할 계획이다(행정안전부 보도자료, 2018. 5. 16.). 이를 위해 2018년에는 블록체인 기반의 전자증명서 발급 및 유통센터, 전자문서지갑, 전자증명서의 진본성 확인 및 사용자 인증시스템 등에 대한 정보전략계획 등 전자증명서 발급·유통에 대한 청사진을 제시할 계획이다(행정안전부 보도자료, 2018. 5. 16.). 각 지방자치단체는 지역화폐를 발행하여 지역 경제를 부흥시키기 위해 노력하고 있다. 대전의 ‘두루’, 과천의 ‘품앗이’, 성남의 ‘성남누리’ 등이 이에 해당하며 행정구역 밖으로 자금이 유출되는 것을 막고 외부 자금이 행정구역 안으로 유입되는 것을 목적으로 사용된다. 빅데이터 시대에 이메일, 신문, 블로그 등의 데이터뿐만 아니라 소셜 네트워크 사이트 등에서 문서 데이터가 축적되는 속도는 기하급수적으로 증가하고 있다. 이에 따라 비정형 데이터인 텍스트 데이터를 분석하려는 텍스트마이닝에 대한 연구가 활발히 진행되고 있으며 이는 비정형 데이터 분석의 중요한 분야로 여겨지고 있다. 텍스트마이닝은 데이터마이닝의 한 분야로 비정형 데이터인 텍스트 데이터를 이용하여 특정한 정보를 추출하는 작업을 말한다. 문장과 문서에 대한 정성적 분석의 대안으로 활용할 수 있어 경영학, 경제학, 정책 선정 등 다양한 분야에서 활용되고 있다. 예를 들어 키워드 빈도 분석, 연관검색어 및 문서 추천, 키워드 트렌드 분석, 주제어 분석, 문서 요약 등의 분 석 방법은 텍스트마이닝의 한 종류이다. 텍스트마이닝 분석 절차는 일반적인 자료 분석 절차와 유사하다. 텍스트마이닝 분석에서 가장 먼저 해야 할 일은 해결해야 할 문제 혹은 목적으로 하는 문제를 정의하고 분석에 필요한 개념을 정립하는 일이다. 예를 들어 보건ㆍ복지 분야에서 텍스트마이닝을 이용한 분석을 하겠다고 하면 하위 개념의 세부 주제인 ‘보건ㆍ복지 분야에서의 신기술(블록체인) 활용 사례’가 분석 목적이 될 수 있다. 일반적으로 텍스트들의 사용 빈도, 시간에 따른 텍스트 출현의 추세, 연관 키워드 탐색으로 어떤 가설을 입증하거나 새로운 발견을 하려는 것이 텍스트 분석 목적이 된다. 텍스트 수집이 이런 텍스트 분석이 입증하려는 가설에 대한 통계적 증거가 되거나 새로운 사실 발견의 수단이 될 수 있어야 할 것이다. 즉 분석 목적을 구체화하는 과정에서 그 목적을 달성하기 위한 수단으로 텍스트를 이용한 정보 수집이 적절한지 면밀한 검토가 필요하다. 어떤 경우에는 대용량 텍스트 자료원에서 정보를 수집하는 것보다 과거의 문헌 조사가 적합할 수도 있다. 앞서 살펴보았듯이 텍스트마이닝 분석은 전통적인 자료 분석 방법과 절차적으로 유사하다. 반면 자료 수집의 기술적 측면에서 텍스트마이닝 분석은 기존에 사용하지 않았던 자료 수집 및 정제 기술을 요구한다. 먼저 데이터를 수집하기 위한 프로그래밍 도구가 필요하다. 잘 설계된 프로그램은 특정한 문서 도메인에서 자동적으로 텍스트 문서를 수집하고, 필요한 텍스트 부분을 추출한다. 주로 웹 문서를 수집하는 방법이 가장 많이 이용되지만, 경우에 따라서는 이미 수집된 PDF 파일에서의 정보 추출, 인트라넷 문서의 추출도 사용된다. 자료 정제와 관련하여 문서를 단어의 집합으로 바꾸는 자연어 처리 기법과 변경된 단어를 특징으로 추출하는 기술이 필요하다. 문서 내의 단어는 수천 가지에서 수백만 가지의 인자를 가지는 범주형 자료이며, 문장은 이런 단어의 열로 이루어진 집합이다. 즉 텍스트는 수집된 자료의 양에 비해 단어와 문서의 차원의 크기가 매우 큰 고차원 데이터이며, 이런 고차원 자료를 다루기 위해 정보를 효과적으로 저차원 공간으로 요약하고 추출하는 방법이 중요하게 다루어지고 있다. 웹 스크래핑 도구는 웹 관련 언어인 XML 혹은 html 등의 언어로 작성된 문서를 정해진 규칙에 따라 수집하는 기술이다. 문서 내의 구조적인 정보를 이용하여 텍스트를 추출할 수 있으며 파이썬(Python) 혹은 R 기반의 오픈소스 패키지를 이용하여 수행할 수 있다. 수집하려는 웹페이지의 특성에 맞도록 세부적인 프로그램 작성이 필요하기 때문에 다양한 페이지에서 웹 데이터를 수집하기 위해 코드 작성에 충분한 시간이 필요하다. 예를 들면 네이버에서 제공하는 뉴스들 중 네이버에서 편집되어 나온 텍스트들은 몇 개의 템플릿을 따라 변환되어 있기 때문에 통일된 방법으로 수집이 가능하다. 반면 각 인터넷 신문사들이 웹에 게시한 뉴스들은 각기 다른 템플릿으로 작성되었으며, 그 문서에 접근하는 방법 역시 다르기 때문에 문서가 저장된 자료원에 따라 맞춤형 프로그램 작성이 필요하다. 이는 자료원 수집 비용을 증가시키게 된다. 단어를 One hot encoding을 통해 벡터로 변환하는 방법은 다음과 같다. 전체 단어의 개수의 길이를 갖는 0 벡터를 생성하고 해당하는 단어의 위치에만 1을 할당하여 표현하는 방법이다. 각 단어를 위의 벡터로 변환할 수 있으므로 같은 방식을 문서에 적용하면 문서 또한 마찬가지로 벡터로 변환할 수 있으며, 이렇게 생성된 문서별 단어 벡터는 문서-단어 행렬(Document-Term matrix) 혹은 단어-문서 행렬(Term-Document matrix)로 표현할 수 있다. 문서-단어 행렬에서 행은 문서를 나타내며 열은 단어의 등장 빈도 혹은 출현 여부를 표현한다. 이를 통해 문서별로 어떤 단어가 몇 번 등장했는지를 쉽게 확인할 수 있다. 단어-문서 행렬은 문서-단어 행렬의 전치 행렬로 단어가 문서별로 몇 번씩 등장했는지 확인하기 용이한 행렬이다. 단어를 분석하는 많은 경우 단어들의 집합은 매우 크며, 결과적으로 One hot encoding이 주는 단어들의 특징 벡터들이 매우 높은 차원의 공간 위에서 정의된다. 데이터의 차원이 높은 경우 계산상의 어려움이 있을 뿐만 아니라, 더욱 중요한 것은 제한된 자료의 고차원 자료에서 추론이 매우 어렵다는 데 문제가 있다. 따라서 고차원 공간에서 표시된 단어들을 저차원으로 표현해 주는 것이 필요하고, 이에 대한 방법론을 단어 임베딩(word embedding)이라고 한다. 단어 임베딩에서 우리가 관심 있게 보아야 할 것은 ‘단어들 간의 어떤 정보의 손실을 가장 작게 하면서 단어 벡터의 차원을 줄여 나가는가’ 하는 것이다. 단어가 가진 정보를 개략적으로 설명하자면 ‘임의의 문장에서 단어들의 출현 패턴’이라고 할 수 있다. 구체적인 출현 패턴은 단어 임베딩마다 다르게 정의된다. 여기서 소개할 단어 임베딩 방법인 주성분 분석, CBOW, Skip-gram은 각각 다른 방법으로 단어들의 출현 패턴을 정의하고 있다. 이것은 여기서 소개하는 단어의 특징 추출 방법들이 범용성을 가졌다기보다는 사용 목적에 따라 제한적으로 사용될 수 있음을 의미한다. 주성분 분석에 대해 언급하기 전에 인코딩과 디코딩의 개념부터 소개한다. 인코딩은 고차원 벡터를 저차원 벡터로 변환하는 함수를 의미하며, 디코딩은 변환된 저차원 벡터를 고차원 벡터로 변환하는 함수를 의미한다. 일상적인 용어로는 인코딩이 데이터 압축, 디코딩이 압축 해제 혹은 압축 풀기라고 볼 수 있다. 동영상을 MPEG-4와 같은 형식으로 압축해서 저장하는 과정을 인코딩, 동영상 플레이어에 MPEG-4 디코더를 설치해 동영상을 재생하는 과정을 디코딩이라고 할 수 있다. 일반적으로 디코딩이 매우 빠르게 이루어지면서 동시에 압축된 데이터를 풀었을 때 원본의 정보 손실이 일어나지 않기를 바랄 것이다. 디코딩 과정을 선형 변환이라고 가정하면 원본의 복원 제곱 오차를 최소화하는 인코딩 역시 선형 변환이라는 것을 보일 수 있다. 이는 주성분 분석을 이용한 단어 임베딩의 기본 원리가 된다. 불용어를 제거한 뒤에는 문서 데이터에서 어절을 최소의 의미 단위인 ‘형태소’로 분해한 뒤, 각 ‘형태소’에 적합한 형태의 품사를 부여하는 자연어 처리 과정을 이용하여 문서를 정형 데이터로 변형한다. 이때 자연어 처리 과정에는 분해와 품사 부여를 위해 형태소 사전의 이용이 필요하다. 한글의 경우 R의 ‘KoNLP’ 패키지 내부의 사전을 이용할 수 있다(Jeon and Kim, 2016). 영문 문서의 경우 ‘tm’ 패키지의 stopword를 이용하여 불용어를 제거할 수 있다(Feinerer, 2018). 또한 영문 문서의 경우 띄어쓰기 단위로 문자를 나누고 주변 단어를 고려하여 단어를 확장할 수 있는 ‘n-그램(n-gram)’ 모형을 사용할 수 있다. n-gram 모형은 해당 단어를 기준으로 양옆 n개까지의 단어를 하나의 단어로 고려하는 모형으로 예를 들어 ‘I am a boy’라는 문장은 2-gram 모형을 사용하면 ‘I’, ‘am’, ‘a’, ‘boy’, ‘I am’, ‘am a’, ‘a boy’로 문장을 7개의 단어로 변환할 수 있다. 문서가 m개의 단어로 이루어져 있을 때 n-gram을 사용하면 mn-(n-1)n/2개의 복합어가 생성됨을 알 수 있다. 연관성은 단어의 출현 빈도를 이용하여 분석한다. 연관성 분석은 변수 간의 관계를 발견하기 위한 규칙 기반의 기계 학습 방법으로 하나의 단어에 대해 다른 단어가 등장하는 사건을 여러 측도로 수치화하는 방법이다 (Agrawal, Imielinski, and Swami, 1993). 측도는 크게 지지도(support), 신뢰도(confidence), 향상도(lift)로 나눌 수 있다. 지지도는 특정 단어가 얼마나 많은 문서에 포함되어 있는지를 나타내는 측도이다. 신뢰도는 검색어를 이용하여 검색했을 때 특정한 단어가 등장할 확률을 나타내는 측도이며 조건부 확률과 같은 개념으로 단어들 간의 연관성을 나타낸다. 향상도는 대분류 키워드로 검색된 단어의 빈도와 일반적으로 등장할 단어의 빈도의 비율을 나타내는 측도이다.
지시문 (instruction)
다음 문맥을 읽고 질문에 답하시오.
질문 (question)
텍스트마이닝 분석을 위해 웹 스크래핑 도구를 사용할 때, 파이썬(Python)과 R 중 어떤 언어가 더 효율적인가?
추론 과정 (compact_reasoning)
  1. 1과제 해석task_interpretation

    질문은 웹 스크래핑 도구 활용 시 파이썬과 R 언어 중 어느 것이 더 효율적인지에 대한 비교 우위를 묻고 있다.

  2. 2정보 추출information_extraction

    문맥에서 웹 스크래핑 도구와 관련하여 파이썬과 R이 언급된 부분을 추출한다.

    • 파이썬(Python) 혹은 R 기반의 오픈소스 패키지를 이용하여 수행할 수 있다.
  3. 3근거 선택evidence_selection

    문맥은 두 언어 모두 오픈소스 패키지를 통해 수행 가능하다는 사실만 명시할 뿐, 두 언어 간의 효율성을 비교하는 정보는 포함하고 있지 않다.

    • 파이썬(Python) 혹은 R 기반의 오픈소스 패키지를 이용하여 수행할 수 있다.
  4. 4논리 통합logical_integration

    제공된 정보를 종합하면 파이썬과 R이 모두 사용 가능하다는 점은 알 수 있으나, 어느 쪽이 더 효율적인지에 대한 비교 데이터나 기준은 문맥 어디에도 존재하지 않는다.

  5. 5결론 도출conclusion_formulation

    질문이 요구하는 '효율성 비교'에 대한 정보는 문맥에 명시되어 있지 않으므로 답을 결정할 수 없다.

  6. 6답변 생성answer_generation

    외부 지식을 사용하지 않고 주어진 문맥만으로는 답을 확인할 수 없음을 최종 답변으로 결정한다.

근거 (evidence)
  • 파이썬(Python) 혹은 R 기반의 오픈소스 패키지를 이용하여 수행할 수 있다.
최종 답변 (final_answer)
주어진 문맥만으로는 답을 확인할 수 없다.
분석 (analysis)
문맥에서는 웹 스크래핑을 위해 파이썬 혹은 R 기반의 패키지를 사용할 수 있다고 언급하고 있으나, 두 언어의 효율성을 비교하는 정보는 제공하지 않는다. 따라서 질문에 답하기 위해서는 언어별 성능에 대한 외부 지식이 필요하다.