텍스트 요소 단위별 분석 

문자 단어 구 단위 텍스트 분석과 Zipf's law에 대해 설명합니다. 

*3강 핵심 치워드 
- 어휘 표현, 구문 표현, 의미론적 표현 
- Tokenization, 불용어, 품사 태깅 
- Zipf's law 
- 텍스트 단위화 




3.1 텍스트 표현의 단위 

Text는 어휘적인 표현/구문적인 표현/의미론적인 표현이 있다. 


어휘(Lexical)표현 

 - 문자(문자 기반 n-gram, 순서열) 
어휘적 표현이란 
 - 문자 Level, 낱글자에서부터 단어, 구 이런 일련의 계층적인 구조로 되어있다. 문자는 어휘적 
인 표현에 있어서는 문자를 기반으로 한 n-gram, n-gram의 낱글자가 하나일 때에는 유니그램, 두  
개일 때에는 바이그램, 세개일 때에는 트라이그램 이렇게 된다. 이런 순서열에 의한 문자를 표현  
할 수 있다. 

 - 단어(불용어, 어간 추출, 원형 복원) 
단어는? 
 - 단어 Level에서 저희가 볼 수 있는 것은 불용어나 안이면 단어 Level에서 어간을 추출한다든 
지 원형을 복원한다든지 이런 것을 생각해볼 수 있다.  

 - 구(단어 기반 n-gram, proximity features) 
구는? 
구 Level에서는 연속된 단어의 합이다. 그래서 '명사구'라고 하면 연속된 명사구 아니면 형용사  
명사의 합이 명사구가 된다. 
이런 단어 기반으로 한 단어의 Sequence에 의해서 구를 형성할 수 있고 n-gram으로 품사적인 요 
소를 생각하지 않고 단순히 순차적인 순서만을 위해서는 n-gram을 볼 수 있다. 

 - 품사 태그(Part-of-speech(POS) tags) 
품사태그는? 
 - 구문 분석을 통한 구문표현이다. 여기에서는 Text를 Vector 공간 모형으로 변환할 수 있다.  
Vector space model은 주로 정보 검색이나 문헌 클러스터링, 추천에 쓰이는 기본적인 표현방법이 
다. 비정형 Text를 Vector 공간 모델로 바꾸어주는 작업이 중요한 작업이라고 할 수 있다. 








구문(Syntactic) 표현 
 - 벡터-공간 모델(Vector-Space Model) 정보 검색, 문헌 클러스터링에 쓰기는 기본적인 표현방 
법 
 - 언어 모델(Language Models) 통계적인 기법으로 주어진 문헌 집단에서 단어가 어떠한 분포도 
를 갖고 있는지를 언어 모델로 할 수 있다. 
 - 전체 구문 분석(Full-parsing) 문장을 하나의 비정형 Text의 요소로 봤을 때 그 문장이 문장 
나무구조로 변환될 수 있다. 

언어 모델은 통계적인 기법으로서 주어진 문헌집단에서 단어가 어떠한 분포도를 갖고 있는지를  
언어 모델로 할 수 있다. 
full-parsing이라는 것은 문장을 하나의 비정형 Text요소로 봤을 때 그 문장이 문장나무구조로  
변환될 수 있는 것을 말한다. 주어가 무엇인지, 목적어가 무엇이고 동사가 무엇인지, 그리고 이 
들관의 관계가 어떤지는 Full-parsing을 통해 알 수 있다. 






의미론적인 표현은 기계적인 방법으로 하기에는 아직까지 어려움이 있다. 때문에 주제 전문가들 
의 수작업이나 주제 전문가들의 의견이 필요하다. 이러한 것은 Ontology를 구축할 때 필요하다. 

의미론적 표현 
 - Collaborative tagging / Web2.0 
Collaborative tagging이나 Web 2.0은 주제 전문가들에게 의존하는 것이 아니라 일반 대중들의  
집합 지능을 이용하여 의미를 부여하는 것을 뜻한다. 
 - Templates / Frames 
Template baes라는 것은 예를 들어 동사 Frame이 있는데 동사 frame은 어떤 주어진 동사가 어떠 
한 문법 체계에서 어떠한 단어들과 함게 나타나는지 그리고 그것은 어떤 의미를 가지는지 수작업 
으로 구축하는 것을 말한다. 
 - Ontologies / First order theories 
Ontology는 어떤 단어의 상위개념이 뭐고 하위개념이 뭐고 반대어가 뭐고 유사어가 뭔지 이런 것 
을 알기 위해 사용하는 방법이다. 





3.2 Character 단위 분석 

어휘표현에 있어서 문자 

어휘(Lexical) 표현 
 - 문자(문자 기반 n-gram, 순서열) 
 - 단어(불용어, 어간 추출, 원형 복원) 
 - 구(단어 기반 n-gram, proximity features) 
 - 품사 태그(Part-of-speech(POS) tags) 


문자는 문자를 기반으로 한 n-gram이 있다. 문자 기반 n-gram 또는 문자열 Sequence는 문자를 낱 
글자로 보아 철자 오류를 판별하는데 많이 쓰인다. 

문자는 텍스트 분석의 첫번째 단위이다. 문자는 글자와 글자를 구분하는 구문 기호(,.스페이스  
등)로 나뉜다. 

문자 단위의 텍스트 분석의 대표적인 예 
 - 문자 기반 언어 모델(Language model) 
   - 통계 기반 기법으로 확률분포를 이용해서 m개의 단어를 문자 순열로 표현하고 이에 확률을  
부여하는 기법이다. 

낱글자 문자를 사용해서 필요한 처리를 한다. 
문자 단위의 Text 분석의 대표적인 예) 철자교정 
철자교정은 
1. 문자 sequence, 문자 n-gram을 가지고 하는 방법 
2. 단어 sequence, 단어 n-gram을 가지고 하는 방법 
으로 나뉜다. 

 - 서픽스 배열(suffix array) - suffix tree를 이용 
   - 일련의 문자열의 접미사를 사전식 순서대로 나열한 배열 
   - 문자열 검색이나 전문 검사 정보검색에서 색인 작업이나 텍스트 마이닝의 전처리 과정 등에 
서 쓰인다. 

서픽스 어레이는 정보검색, 전문의 정보 검색이나 색인 작업에 많이 쓰인다. 
이 때 suffix tree를 이용한다. suffix array는 일련의 문자열을 tree라는 자료구조를 통해서 사 
전식 순서대로 배열을 한 다음에 빠른 방법으로 tree기반으로 해서 배열을 한 다음에 빠른 방법 
으로 찾아나가는 기법이다. 때문에 정보검색과 색인작업에 많이 쓰인다. 



3.3 단어 단위 분석 


어휘(Lexical) 표현 
 - 단어(불용어, 어간 추출, 원형 복원) 

텍스트 분석에서 가장 많이 쓰이는 단어, 단어구 level. 한글은 어미어간 추출을 많이 쓰인다. 

단어의 특징 
 - Homonymy: 동일한 형식, 다른 의미 
말(言)-말(馬) 
 - Polysemy: 동일한 형식, 관련 있는 의미 
다리(책상)-다리(지게) 
이 Homonymy와 Polysemy를 구분하지 않고 그냥 Polysemy에 합쳐서 단어의 의미 중의성 해소(Word  
Sense Disambiguation)을 해소하는 text mining기법을 연구할 때 사용한다.  


단어의 특징 
 - Synonymy: 다른 형식, 동일한 의미 (유사어) 
가수 - 보컬 
언어는 자유로운 지역적인 특성이 있고 문화적인 특성이 있기 때문에 같은 의미를 다른 단어를  
써서 표현하기 때문이다. 

 - Hyponymy: 상하 관계 
식사 - 아침 식사 
포괄적인 개념과 그 아래의 하위개념. 


단어 단위의 텍스트 분석은 가장 보편적인 방법으로 여겨져 왔고 수많은 기법들이 단어를 기반으 
로 해서 고안되었다. 

서양 언어는 단어 단위로 분석하기 적합함 
 - 한국어는 의미 단위의 다른 개념을 가짐 
Tokenization이 space를 기준으로 해서 단어가 끊어지기 때문에 서양언어는 단어 분석이 용이. 
한글은 space로 끊어도 단어에는 의미가 들어가 있기 때문이다. 어떻게 어미를 자를지 고민. 
중국어는 띄어쓰기가 없어서 어렵다. 

Tokenization 
 - 문헌 단위의 문자열이 주어졌을 때 token들로 문자열을 조각 내는 작업 
 - 구두점 등 불필요한 글자들을 제외하기도 함 
 - 영어는 단어에 조사가 붙지 않아 한글보다 tokenization이 쉬움 
영어는 tokenization이 훨씬 쉽다. 

용어 정의 

 - word 
구분된 문자열 

 - term 
normailized된 단어(대소문자, 형태, 철자 등을 하나로 통일) 
word와 동일하게 쓰이기도 함 

 - token 

유용한 의미적 단위로 함께 모여지는 일련의 문자열 
구분 기호 사이의 글자 시퀀스 

 - type 
같은 문자열을 포함하고 있는 모든 token들을 표현하는 클래스 


불용어(stop word) 
 - 정보를 전달하지 않는 단어 
 - 기능적인 역할을 함 
 - 텍스트 분석을 할 때 더 나은 결과를 내기 위해 불용어를 삭제함 

각 정치, 금융, 기업마케팅 등, 각각의 filed나 domain에 따라서 불용어 리스트가 달라진다. 

불용어는 대부분이 기능적인 역할을 하고 기능어이다. 불필요한 단어이거나 아니면 일반적인 단 
어이다. ex) 영어: the, a, in, about... 한국어: 있, 않, 없... 

필드나 도메인에 관계없이 일반적인 불용어는 560~565개 있다. 

불용어 제거는 text분석에서 기본적이고 중요한 절차이다. 
전처리 단계에서 불용어 제거를 한다. 

언어권별로 불용어가 다르다. 
영어: 관사, 전치사, 대명사 등 
한글: 조사, 어미 등 



품사 태깅(POS tagging) 
 - 문장에서 각각의 단어를 해당하는 품사로 레이블링하는 작업 
 - 하나의 단어가 여러 품사를 갖는 모호성을 가질 수 있으며 이러한 품사의 모호성을 해소하는  
과정 
 - 문장에 사용된 형태소들의 품사를 파악하고 문장의 구조도 파악할 수 있음 
 - 규칙 기반 기법 
   - 사전을 사용해서 각각의 단어에 그 단어가 가질 수 있는 품사 리스트를 부여 
   - 수작업으로 만든 대량의 규칙을 이용해서 품사의 리스트에서 해당 단어에 맞는 하나의 품사 
를 선택 

단어가 동사인지, 명사인지 판별하는 것은 그 문장에서 그 단어가 어느 단어 전에 왔는지, 어느  
단어 다음에 왔는지를 보고 판별하게 된다. 

full-parsing은 문장을 나무구조로 만드는 것인데 여기서 노드들이 단어가 된다. leaf node는 어 
느 위치에 존재하는지는 대부분의 경우에는 품사 태깅에 따라서 단어의 잎이 되는 단어의 위치가  
결정된다. 


첫번째는 사전 또는 규칙 기반으로 품사 태깅을 하게 된다. 
대량의 사전을 구축을 해서 사전에 있는 단어들이 어떤 품사인지 수작업으로 대량의 규칙을 만들 
어서 그 규칙에 맞게 주어진 input text에서 단어들의 품사를 결정한다. 
한글의 경우 세종 말뭉치라는 것을 이용해서 품사들을 품사별로 사전을 구축한 것을 이용하면 된 
다. 
두번재는 기계학습 또는 stochastic을 기반으로 한 방법이다. 
가장 많이 쓰는 방법은 히든 마르코프 모델 혹은 conditional random field라는 분류기를 써서  
품사 태깅을 한다. 
단어의 전 후가 어떤 state이냐를 학습한 다음에 그것을 hidden state라고 부르고 그 보여지는  
문장에서 나오는 단어들을 observed variable이라고 하는데 그런 observed variable에 각각에 부 
여된 hidden state를 보고 학습을 한 다음에 새로운 문장이 들어오면 그것을 가지고 예측을 하는  
것이 히든 마르코프 모델을 통한 stochastic한 방법이다. 




3.4 Zipf's법칙 

Zipf's의 법칙이라는 것은 pareto distributions의 한 질의이다. 
모든 단어들의 사용 빈도는 해당 단어들의 순위와 반비례 관계가 있다는 것이다. 
사용빈도가 가장 높은 단어는 두번째 높은 단어에 비해 약 2배가 높고 세번째 단어보다는 세배가  
높다는 경험적 관찰이 있다. 
예시) Brown Corpus의 The라는 정관사. 



"공식 추가 필요" 



3.5 구 단위 분석 

구 단위의 분석은 n-gram, proximity features를 주로 이루어진다. 

*텍스트 단위화(Text Chunking) 
 - 텍스트를 어휘적으로 상호 관련 있는 단어들로 나누는 자연어 처리의 한 기법 
 - 명사구는 동사의 주체나 객체가 될 수 있는 요소임 
 - 동사구는 조동사, 동사 수식어들을 포함하는 요소임 
 - 텍스트 표현 방법 
   - 트리 구조: 각각의 단어에 품사 태깅을 하고 그것을 바탕으로 텍스트를 단위화함 
   - 태그 : IOB 또는 BOI 방식 (Beginning, intermediate, other) 

Text chunking은 명사구, 동사구, 형용사구 라는 구를 추출하는 것이다. 

shallowparsing은 문장을 구 단위로 인식하는 것을 말한다. 

동사구 - 영어에서 전치사에 따라 동사구의 의미가 달라지기 때문에 전치사도 중요하다. 
명사구는 개념을 추출할 때 중요. 

* N-gram 
 - 주어진 텍스트나 음석의 연속된 일련의 열 
 - N은 사용한 term의개수를 기준으로 함 
   - Uni-gram: 1 term 
   - Bi-gram: 2 terms 
   - Tri-gram: 3 terms 
 - N-gram은 언어 모델링에 쓰일 때 적합 






3.6 단어 단위 분석 실습 (자바 실습) 
3.7 구 단위 분석 실습 (자바 실습) 

+ Recent posts