기본 콘텐츠로 건너뛰기

방송대 방통대 오픈소스기반데이터분석 13강 - 반정형 데이터 분석 - 요약 노트 시험족보 예상문제 - 올에이클래스

오픈소스기반데이터분석 13강 - 반정형 데이터 분석

오픈소스기반데이터분석 13강 - 반정형 데이터 분석

이번 강의에서는 일정한 구조와 규칙을 가지는 반정형 데이터의 특성을 이해하고, 웹 페이지에서 텍스트를 수집·정제·분석하는 전체 흐름을 학습한다. Selenium과 lxml을 이용한 웹 스크래핑, XPath와 정규표현식, Kiwi 형태소 분석, 키워드 시각화와 대규모 언어 모델을 이용한 분류를 단계별로 살펴본다.

제1장 반정형 데이터의 개념과 특성

1. 반정형 데이터란 무엇인가

반정형 데이터는 완전한 정형 데이터는 아니지만 일정한 구조와 규칙을 가진 데이터이다. 관계형 데이터베이스의 테이블처럼 모든 행이 고정된 스키마를 따르지는 않지만, 태그·속성·키와 값·계층 구조 등을 통해 데이터의 의미와 관계를 표현한다.

월드와이드웹이 등장한 뒤 반정형 데이터는 웹의 기본 정보 표현 방식으로 자리 잡았다. 지난 수십 년간 인터넷상의 많은 정보가 반정형 형식으로 작성되었으며, HTML, XML, JSON이 대표적인 예이다.

핵심: 반정형 데이터는 “구조가 전혀 없는 데이터”가 아니다. 고정된 테이블 스키마 대신 태그나 키-값처럼 유연한 구조 표시를 사용한다.

2. 활용 분야

반정형 데이터는 웹 데이터 분석, 데이터 분석·과학 연구, 대규모 언어 모델의 훈련 데이터 구축 등에 활용된다. 특히 웹 문서에는 텍스트뿐 아니라 제목, 링크, 문단, 작성자, 날짜 등 다양한 정보가 태그와 속성으로 구분되어 있어 구조를 해석하면 필요한 항목을 선택적으로 수집할 수 있다.

3. 웹 페이지의 세 구성 요소

웹 페이지는 일반적으로 HTML, CSS, JavaScript의 세 요소로 구성된다. HTML은 제목·문단·표·링크 같은 문서 구조를 표현하고, CSS는 색상·배치·글꼴 같은 스타일을 담당하며, JavaScript는 클릭·입력·데이터 갱신과 같은 동작을 구현한다.

요소역할수집 관점
HTML문서의 내용과 구조태그와 속성을 분석해 원하는 값을 찾는다.
CSS표현과 스타일선택자와 화면 구조를 이해하는 단서가 된다.
JavaScript상호작용과 동적 동작실행 후 생성되는 데이터는 브라우저 자동화가 필요할 수 있다.

제2장 웹 스크래핑과 도구

1. 웹 스크래핑의 의미

웹 스크래핑은 웹 페이지를 내려받는 데서 끝나지 않고, 내려받은 페이지에서 원하는 데이터를 정확히 추출하는 과정이다. 분석 목적에 맞는 요소를 찾고 텍스트나 속성값을 가져와 이후 분석에 사용할 수 있는 형태로 저장해야 한다.

웹 페이지의 구조와 데이터 생성 방식에 따라 도구 선택이 달라진다. 서버가 보낸 HTML 안에 원하는 값이 이미 있다면 문서 파싱만으로 처리할 수 있지만, 브라우저에서 JavaScript가 실행된 뒤 값이 나타나거나 로그인·클릭이 필요하면 실제 브라우저를 제어해야 한다.

2. Selenium

Selenium은 웹 브라우저를 자동화하는 도구이다. 실제 브라우저를 실행하고 클릭, 입력, 페이지 이동 같은 사용자 행동을 모방할 수 있으므로 동적 웹 페이지나 로그인이 필요한 페이지에 효과적으로 접근한다.

Selenium의 주된 역할은 페이지에 접근하고 사용자의 상호작용이 필요한 절차를 자동으로 수행해 최종 HTML 상태를 얻는 것이다. 단순한 정적 문서 파싱 도구와 달리 브라우저 동작 자체를 제어한다.

3. lxml

lxml은 HTML이나 XML 문서를 파싱하고 원하는 데이터를 추출하는 라이브러리이다. 문서를 태그와 속성으로 구성된 트리 구조로 해석하며 XPath를 사용해 특정 요소를 선택적으로 가져올 수 있다.

웹 스크래핑 과정에서 Selenium이 웹 페이지를 열고 동작을 수행하는 역할이라면, lxml은 확보한 HTML 구조에서 실제 분석 대상 값을 찾는 역할을 맡는다. 두 도구는 경쟁 관계라기보다 서로 다른 단계를 담당한다.

도구주요 역할적합한 상황
Selenium브라우저 실행과 사용자 행동 자동화동적 페이지, 로그인, 클릭·입력 필요
lxmlHTML/XML 파싱과 요소 추출태그·속성·XPath로 구조화된 값 선택

제3장 XPath로 요소 선택하기

1. XPath의 개념

XPath는 XML과 HTML 문서에서 특정 요소를 선택하는 데 사용하는 경로 표현 언어이다. 문서가 트리 구조로 해석되면 XPath를 이용해 태그, 속성, 텍스트, 조건에 맞는 요소를 선택적으로 추출할 수 있다.

웹 페이지 안에 같은 태그가 여러 번 나타날 수 있으므로 단순히 태그 이름만 찾는 것으로는 원하는 값을 정확히 선택하기 어렵다. XPath는 문서 내 위치와 속성 조건을 함께 표현해 목표 요소를 구체적으로 지정한다.

2. 주요 XPath 문법

문법설명해석 예
/루트 요소부터 시작하는 절대 경로/html/body는 루트부터 차례로 접근한다.
//현재 위치에서 조건에 맞는 모든 하위 요소 선택//a는 문서 아래의 모든 링크 요소를 찾는다.
.현재 노드현재 선택 요소를 기준으로 탐색한다.
@속성 선택//a/@href는 링크의 주소 속성을 고른다.
text()요소의 텍스트 값 선택//h2/text()는 제목의 텍스트를 가져온다.
[ ]선택 조건 설정//div[@class='item']은 특정 클래스 요소를 고른다.
*모든 요소 선택//*는 문서의 모든 요소를 선택한다.

구분: /는 루트에서 시작하는 명확한 경로이고, //는 현재 범위 아래 어디에 있든 조건에 맞는 후손 요소를 찾는다.

제4장 정규표현식과 텍스트 정제

1. 정규표현식의 의미

정규표현식은 기호와 문자의 조합으로 특정 규칙을 가진 문자열을 찾는 체계이다. 문자를 선택하는 요소, 반복을 표현하는 요소, 문자 범위를 나타내는 요소 등을 조합해 원하는 패턴을 정의한다.

웹에서 수집한 텍스트에는 HTML 태그, 특수문자, 불필요한 공백과 개행이 포함될 수 있다. 정규표현식을 사용하면 이러한 노이즈를 일정한 규칙으로 찾고 제거하여 분석 가능한 텍스트로 정제할 수 있다.

2. 주요 정규표현식 패턴

패턴의미활용
[^a-zA-Z0-9가-힣\s]영문자, 숫자, 한글, 공백을 제외한 모든 문자분석에 불필요한 특수문자 제거
<[^>]*><로 시작하고 >로 끝나는 HTML 태그텍스트에 남은 태그 문자열 제거
\s스페이스, 탭, 개행 등의 공백 문자연속 공백 탐색과 정리

첫 번째 패턴의 대괄호 안에서 ^는 뒤에 열거된 문자 범위를 제외한다는 의미이다. 따라서 한글·영문·숫자·공백은 남기고 그 밖의 문자를 찾을 수 있다. 정제 시에는 분석 목적에 필요한 기호까지 제거하지 않도록 패턴을 신중하게 정해야 한다.

처리 목적: 정규표현식 정제는 모든 문자를 단순 삭제하는 것이 아니라, 분석에 필요한 내용은 보존하고 불필요한 노이즈만 규칙적으로 제거하는 과정이다.

제5장 형태소 분석과 Kiwi

1. 형태소 분석

형태소 분석은 텍스트를 문법적 의미를 가지는 최소 단위인 형태소로 분리하고 각 형태소의 품사를 파악하는 과정이다. 단순히 공백으로 문장을 나누는 것보다 언어의 문법 구조와 단어의 역할을 자세히 분석할 수 있다.

한국어는 어근에 조사와 어미가 결합해 다양한 의미와 문법 기능을 표현하는 교착어이다. 같은 핵심 단어도 조사나 어미에 따라 표면 형태가 달라질 수 있으므로 단어 빈도와 핵심어를 정확히 분석하려면 형태소 단위의 분리가 중요하다.

2. Kiwi 라이브러리

Kiwi는 한국어 형태소 분석을 위한 도구이다. 강의록에서는 KoNLPy 등 기존 라이브러리보다 빠르고 정확한 분석 결과를 제공하는 최신 도구로 소개한다. 실습에서는 문장의 핵심 의미를 담는 명사를 추출하는 목적으로 사용한다.

형태소 분석 결과에는 명사, 동사, 조사, 어미 등 여러 품사가 포함될 수 있다. 게시글 주제를 파악하는 키워드 분석에서는 명사를 선택하고, 의미 분석에 도움이 적은 불용어를 제거한 뒤 빈도를 계산한다.

3. 불용어 처리

불용어는 문서에 자주 등장하지만 분석 목적에서는 의미가 작거나 구분 능력이 낮은 단어이다. 형태소 분석 뒤 불용어를 제거하면 중요한 단어의 패턴이 더 분명하게 드러난다. 단, 어떤 단어가 불용어인지는 분석 대상과 목적에 따라 달라지므로 고정된 목록을 기계적으로 적용해서는 안 된다.

제6장 키워드 분석과 워드 클라우드

1. 단어 빈도 분석

단어 빈도 분석은 전처리한 텍스트에서 각 단어가 나타난 횟수를 계산하는 방법이다. 반복해서 등장하는 단어를 확인하면 문서 집합의 주요 주제와 관심사를 탐색할 수 있다.

웹에서 수집한 원문을 그대로 세면 같은 단어가 조사·어미·특수문자 때문에 여러 형태로 나뉠 수 있다. 따라서 정규표현식 정제, 형태소 분석, 품사 선택, 불용어 처리 뒤에 빈도를 계산하는 순서가 중요하다.

2. 주요 키워드 추출

빈도가 높은 단어를 정렬하면 주요 키워드 후보를 얻을 수 있다. 그러나 단순히 많이 등장했다는 이유만으로 분석 목적에 중요한 단어라고 단정할 수는 없다. 게시판의 공통 안내 문구처럼 모든 문서에 반복되는 표현은 불용어로 처리하고, 주제 구분에 도움이 되는 단어를 중심으로 해석해야 한다.

3. 워드 클라우드

워드 클라우드는 단어의 출현 빈도에 따라 글자의 크기를 다르게 표시하는 시각화 방법이다. 자주 등장한 단어가 크게 보여 전체 텍스트에서 두드러지는 키워드를 빠르게 파악할 수 있다.

워드 클라우드는 빈도 패턴을 직관적으로 보여 주지만 단어 사이의 문맥과 관계를 직접 설명하지는 않는다. 따라서 빈도표와 원문을 함께 검토해 의미를 해석해야 한다.

제7장 LLM을 활용한 게시글 분류

1. 텍스트 분류

텍스트 분류는 문서나 문장을 미리 정의한 카테고리로 나누는 작업이다. 게시판 글 제목을 주제별로 구분하거나 고객 문의를 유형별로 나누는 작업이 이에 해당한다.

대량의 텍스트를 사람이 직접 분류하면 많은 시간과 비용이 든다. 강의에서는 문맥을 이해하고 텍스트를 생성할 수 있는 딥러닝 기반 AI 모델인 대규모 언어 모델을 분류에 활용한다. LLM은 텍스트 분류뿐 아니라 요약, 번역, 질의응답 등 여러 자연어 처리 작업을 수행할 수 있다.

2. 강의의 LLM 구축 환경

강의 실습에서는 vLLM 라이브러리로 모델을 로드하고, Hugging Face의 모델 저장소에서 LG가 개발한 EXAONE 3.5 2.4B 모델을 사용한다. 이 모델은 한국어 처리 능력이 우수하며 Google T4 GPU 환경에서도 구동할 수 있는 모델로 소개된다.

구성 요소역할
vLLM대규모 언어 모델을 로드하고 추론 환경을 구성
Hugging Face사용할 모델을 제공하는 모델 저장소
EXAONE 3.5 2.4B게시글 분류에 활용하는 한국어 처리 가능 LLM
T4 GPU실습에서 모델을 구동하는 연산 환경

3. 분류 결과 시각화

LLM이 각 게시글을 미리 정한 범주로 분류하면 범주별 개수나 비율을 집계해 시각화할 수 있다. 시각화는 게시판의 주제 분포와 반복되는 관심사를 파악하고 분석 결과에서 인사이트를 도출하는 데 도움을 준다.

제8장 학과게시판 분석 실습

1. 실습 목표

실습 프로젝트는 방송통신대학교 학과게시판의 글 제목을 수집하고 분석하는 과정이다. 웹 스크래핑으로 반정형 웹 데이터를 가져오고, 텍스트 전처리와 키워드 분석을 수행한 뒤 LLM 분류 및 시각화까지 연결한다.

2. 단계별 처리 과정

단계주요 내용결과
1. 데이터 수집 및 전처리Selenium으로 페이지에 접근하고 lxml로 HTML을 파싱하여 게시글 제목을 추출분석 대상 제목 목록
2. 텍스트 데이터 전처리정규표현식으로 특수문자를 제거하고 형태소·품사를 분석하며 불용어 처리분석 가능한 단어 목록
3. 키워드 분석단어 빈도를 계산하고 워드 클라우드를 만들며 주요 키워드를 추출빈도표와 키워드 시각화
4. 텍스트 분류 및 시각화LLM으로 게시글을 분류하고 결과를 시각화범주별 게시글 분포와 인사이트

3. 단계 간 연결

각 단계는 독립적이지 않다. XPath가 잘못되면 다른 요소가 수집되고, 정규표현식이 필요한 문자까지 제거하면 형태소 분석 결과가 왜곡된다. 불용어를 적절히 처리하지 않으면 워드 클라우드가 공통 표현으로 채워지며, 입력 텍스트의 품질이 낮으면 LLM 분류 결과도 신뢰하기 어렵다.

전체 흐름: 웹 접근 → HTML 파싱과 제목 추출 → 특수문자 제거 → 형태소·품사 분석 → 불용어 제거 → 단어 빈도와 워드 클라우드 → LLM 분류 → 결과 시각화.

핵심 개념 정리

  • 반정형 데이터는 완전한 정형 데이터는 아니지만 태그·속성·키-값 등 일정한 구조와 규칙을 가진다.
  • 웹 페이지는 HTML의 구조, CSS의 스타일, JavaScript의 동작으로 구성된다.
  • Selenium은 실제 브라우저를 자동화하고, lxml은 HTML/XML을 파싱해 XPath로 요소를 추출한다.
  • XPath의 /, //, @, text(), [], *의 의미를 구분해야 한다.
  • 정규표현식은 특수문자·HTML 태그·공백 등 규칙에 맞는 문자열을 찾아 텍스트를 정제한다.
  • Kiwi는 한국어 형태소와 품사를 분석하며, 핵심 명사 추출과 불용어 처리에 활용된다.
  • 단어 빈도와 워드 클라우드는 주요 키워드를 탐색하고 시각화하는 방법이다.
  • vLLM과 EXAONE 3.5 2.4B 같은 LLM을 이용해 게시글을 자동 분류하고 결과를 시각화할 수 있다.

최종 정리: 반정형 데이터 분석은 웹 문서의 구조를 이해하는 것에서 시작해 필요한 값을 정확히 추출하고, 텍스트를 정제·형태소화한 뒤 키워드와 분류 결과를 해석하는 과정이다. 수집 도구, XPath, 정규표현식, 형태소 분석, LLM은 각각 다른 단계를 담당하며 앞 단계의 품질이 뒤 단계의 결과를 결정한다.

예상문제 20선

1. 반정형 데이터에 관한 설명으로 가장 적절한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
반정형 데이터는 고정 테이블 스키마 대신 태그·속성·키-값처럼 유연한 구조 표시를 사용한다.

2. 대표적인 반정형 데이터 형식의 조합은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
HTML, XML, JSON은 태그나 키-값 등을 이용해 일정한 구조를 표현하는 대표적인 반정형 형식이다.

3. 웹 페이지에서 문서의 구조를 담당하는 요소는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
HTML은 제목, 문단, 링크 같은 문서 구조를 정의하고 CSS는 스타일, JavaScript는 동작을 담당한다.

4. 웹 스크래핑의 의미로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
웹 스크래핑은 페이지 다운로드를 넘어 문서 구조에서 분석에 필요한 정보를 찾아 추출하는 작업이다.

5. 동적 웹 페이지나 로그인이 필요한 페이지에서 클릭·입력 행동을 자동화하는 도구는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
Selenium은 실제 브라우저를 자동화하여 사용자 행동과 동적 페이지 실행을 처리한다.

6. lxml의 주된 역할은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
lxml은 HTML/XML 문서를 트리 구조로 해석하고 XPath를 통해 목표 요소를 선택한다.

7. XPath에서 루트 요소부터 시작하는 절대 경로를 나타내는 기호는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
XPath의 /는 루트부터 시작하는 절대 경로이며 //는 하위의 모든 위치를 탐색한다.

8. XPath에서 요소의 속성을 선택하는 기호는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
@는 속성을 선택하므로 //a/@href는 링크 요소의 주소 속성을 추출한다.

9. XPath의 text()가 선택하는 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
text()는 선택한 요소 내부의 텍스트 값을 가져올 때 사용한다.

10. 정규표현식의 주된 용도는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
정규표현식은 문자 범위와 반복 규칙을 표현하여 특수문자, 태그, 공백 같은 패턴을 찾는다.

11. 정규표현식 \s가 의미하는 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
\s는 스페이스, 탭, 개행처럼 텍스트의 공백으로 취급되는 문자를 나타낸다.

12. 형태소 분석에 관한 설명으로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
형태소 분석은 문법적 의미를 가진 최소 단위로 문장을 분리하고 명사·조사·어미 등의 품사를 식별한다.

13. 한국어 텍스트에서 형태소 분석이 특히 중요한 이유는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
한국어 단어는 조사와 어미 결합으로 여러 표면 형태를 가지므로 형태소 단위로 분리해야 핵심 의미를 정확히 분석할 수 있다.

14. 강의에서 한국어 형태소 분석과 명사 추출에 사용하는 라이브러리는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
Kiwi는 한국어 형태소와 품사를 분석하며 실습에서 핵심 의미를 담는 명사를 추출하는 데 사용한다.

15. 불용어 처리의 목적으로 가장 적절한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
불용어를 제거하면 주제 구분에 도움이 되는 핵심 단어의 빈도와 패턴이 더 잘 드러난다.

16. 워드 클라우드에 관한 설명으로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
워드 클라우드는 빈도가 높은 단어를 크게 표현해 주요 키워드를 직관적으로 보여 준다.

17. 텍스트 분류의 의미로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
텍스트 분류는 내용과 문맥을 바탕으로 문서나 문장을 사전에 정한 범주에 배정하는 작업이다.

18. 강의의 LLM 구축 환경에 관한 설명으로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
강의에서는 vLLM과 Hugging Face의 EXAONE 3.5 2.4B 모델을 이용한 한국어 게시글 분류 환경을 제시한다.

19. 학과게시판 분석 실습의 올바른 처리 순서는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
먼저 게시글을 수집하고 정제한 뒤 키워드를 분석하며, 마지막으로 LLM 분류 결과를 시각화한다.

20. 실습 단계와 사용 도구의 연결로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
lxml은 HTML을 파싱하고 XPath는 원하는 요소를 선택하므로 게시글 제목 추출 단계에 해당한다.

댓글