-
텍스트마이닝1- introduction텍스트마이닝 2022. 3. 14. 13:46
*본 포스팅은 22-1학기 연세대학교 일반대학원 텍스트마이닝(송민 교수님) 수업을 정리한 것입니다.
2주차: 텍스트 분석- 텍스트 요소 단위별 분석
<목차>
0. 들어가기 전에
(1) 텍스트를 분석하는 이유
(2) 텍스트 마이닝이란?
(3) 텍스트 분석이란 무엇인가?
1) 머신러닝과의 차이
2) 자연어 처리와의 차이
3) 데이터 마이닝과의 차이
4) 정보검색과의 차이
5) 시맨틱 웹과의 차이
(4) 텍스트 마이닝을 통해 할 수 있는 것?1. 텍스트 표현의 단위
(1) 어휘 표현: 문자/단어/구/품사
1) 문자 단위 텍스트 분석
- 문자 기반 언어 모델, 서픽스 배열
2) 단어 단위 텍스트 분석
- 토큰화, 불용어, 품사 태깅(규칙 기반/stocastic 기반)
3) 구 단위 텍스트 분석
- 텍스트 단위화(청킹), 태그(IOB, BOI)
4) 품사 태그(2) 구문 표현
1) 언어 모델
2) 벡터-공간 모델
3) 구문 분석
(3) 의미론적 표현
1) collaborative tagging/Web2.0
2) Templates/Frames
3) Ontologies/First order theories0. 들어가기 전에
(1) 텍스트를 분석하는 이유?
- 가장 궁극적인 혹은 모든 task의 가장 상위 task는 "텍스트 내용을 이해하기 위해서" 입니다.
-그러나 가장 상위 task를 한번에 수행하기에는 너무나 어려우므로, 보다 쉬운 sub-task를 먼저 수행해야 합니다.
(2) 텍스트 마이닝이란?
텍스트 마이닝은 다음과 같이 이야기됩니다.
“…finding interesting regularities in large textual datasets…” (adapted from Usama Fayad)
…where interesting means: non-trivial, hidden, previously unknown and potentially useful
“…finding semantic and abstract information from the surface form of textual data…”즉 대량의 텍스트 데이터셋 내에서 interesting한 규칙들을 찾는 것입니다. 이 interesting한 것들은 이전에 발견할 수 없었던, 숨어있지만 중요하고 쓸모있는 것들을 말합니다. 또한 텍스트 데이터의 표면형에서 의미적이고 추상적인 정보들을 찾는 것이기도 합니다.
그러나 텍스트 마이닝은 어렵습니다. 텍스트를 다루는 것이 생각보다 어렵기 때문입니다.
텍스트는 다음과 같은 특징들을 가집니다.
Abstract concepts are difficult to represent : 추상적인 개념들은 텍스트로 표현하기가 힘듭니다
“Countless” combinations of subtle, abstract relationships among concepts
: 텍스트 내에는 컨셉 간 매우 미묘하고 추상적인 관계들과 관계들의 조합들이 존재합니다 -_-
Many ways to represent similar concepts e.g. space ship, flying saucer, UFO
: 텍스트에는 비슷한 개념을 표현하는 매우 많은 방법들이 있습니다.
Concepts are difficult to visualize : 이 개념들은 시각화하기도 힘듭니다.
High dimensionality: 텍스트는 매우 높은 차원을 가집니다
Tens or hundreds of thousands of features: 아주아주아주 많은 feature들이 텍스트에 존재합니다.때문에 텍스트마이닝은 생각보다 어렵습니다 ~_~
(3) 텍스트 분석(Text Analytics)이란 무엇인가?
텍스트 분석 내에는 많은 연구분야들이 있습니다. 텍스트마이닝도 이에 속하며, 여러 연구분야와 밀접한 관계를 가지게 되는데, 다음의 분야들과 겹치게 됩니다.
1) 머신러닝(Machine Learning)
- 텍스트마이닝과 머신러닝은 동등하지 않습니다. 텍스트마이닝은 기본적으로 텍스트의 전처리 과정이 매우 중요한 요소이기 때문입니다. 텍스트마이닝 연구 방법으로 머신러닝 기법을 사용할 수는 있으나, 둘을 동등하게 놓고 보기는 힘듭니다.
2) 자연어 처리(Natural Language Processing)
- 텍스트 전처리 과정은 또 자연어 처리와 밀접한 연관을 가집니다.
-그러나 자연어 처리는 전산언어적 측면이 강합니다. 즉 텍스트의 언어적 특성(feature)이 주 연구 대상이 됩니다.
이에 비해 텍스트마이닝은 applied된 연구, 즉 application 측면에서의 연구가 많이 이루어집니다. 위에서도 언급했지만 텍스트 마이닝은 NLP 기반으로 머신러닝을 사용하여 연구를 진행하거나, 텍스트마이닝의 고유 기법을 사용하여 텍스트를 분석하는 응용 연구 성격이 강합니다.
3) 데이터 마이닝(Data Mining)
- 이름은 비슷하나, 데이터 마이닝은 정형화된 데이터(관계형 데이터 베이스 등)를 사용한다는 점에서 차이가 납니다. 데이터 마이닝에 속하는 것은 주로 association, clustering, classification 등이 있습니다.
- 텍스트마이닝이 주로 다루는 데이터는 비정형 데이터, 즉 텍스트입니다.
4) 정보 검색(Information Retrieval)
- 정보검색은 말 그대로 '검색'에 초점이 맞추어져 있습니다. 색인을 만든 후 크롤링한 데이터를 처리한 뒤 인덱스화를 합니다. 이 인덱스된 데이터에 대해 이용자(user)가 쿼리(query)를 요청하면, 이용자 쿼리와 인덱스를 매칭하여 결과를 내는 것을 주로 합니다.
- 때문에 정보 검색은 storage, retrieval에 초점이 맞추어집니다. 텍스트마이닝은 이에 비해 정보에 대해 추출(extraction)하는 측면이 더 강합니다.
5) 시맨틱 웹(Semantic web; Web2.0)
- 시맨틱 웹은 collaborative합니다. 즉 이용자 컨텐츠에 중심이 맞추어져 있습니다.
최근에 많이 이루어지는 연구는 NLP와 텍스트마이닝입니다. 이 둘은 인공지능 개발을 위해 연구가 이루어지는 분야입니다.
(4) 텍스트 마이닝을 통해 할 수 있는 것???
1. 텍스트 표현의 단위
텍스트 표현 단위는 크게 세 가지로 나누어집니다. 어휘(lexical) 표현, 구문(syntactic) 표현, 의미론적(semantic) 표현입니다. 어휘 표현이 가장 쉬운 영역이며, 구문 표현은 문법적으로 분석하는 것입니다. 의미를 가지고 표현하는 것은 의미론적 표현에 속합니다.
(1) 어휘(lexical) 표현: 문자/단어/구/품사
어휘 표현의 서브 유닛에는 문자, 단어, 구, 품사가 속합니다.
1) 문자(character)단위 텍스트 분석
① 문자는 글자인 것(character)과 글자가 아닌 구분 기호(punctuation: special character)로 나누어집니다.
가령 "John saw the pencil, and pick it up" 이란 문장에서 "J,o,h,n.."등은 글자, 공백이나 쉼표는 구분 기호입니다.
텍스트 마이닝에서는 전처리로 punctional word들을 날리고(!) 연구를 진행하나, 이 punctional word들이 중요할 떄도 있으므로 상황에 따르 취사선택이 필요합니다.
② 문자를 기반으로 task들이 수행됩니다. 크게 문자 기반 n-gram, 순서열(sequence)을 가지고 task들이 수행됩니다.
- 문자 단위 텍스트 분석에서는 문자를 어느 수준까지 볼 것인가에 대한 고민이 존재합니다.
문자를 무엇으로 보느냐는 곧 텍스트를 어떻게 accurate하게 볼 것인가와 관련되기 때문입니다.
-특히 한글의 경우 character를 어떻게 보느냐에 대한 견해 차이가 존재합니다. 논의된 견해는 자모, 초성-중성-종성 등이 있습니다.
-문자 순서열(sequence)은 수업 들으면서 처음 알게된 건데, 철자 교정 task 등에 사용될 수 있습니다.^^;
③ 문자 단위 텍스트 분석
i) 문자 기반 언어 모델(character based Language Model)
- 통계 기반 기법(probabilistic model)에 속합니다. 이에 따라 m개 단어를 문자 순서로 표현하고, 이 문자들에 확률을 부여하게 됩니다. (P(w_1,…,w_m))
- 이러한 확률 부여 과정이 반복될수록, 혹은 텍스트가 충분히 많아지면 규칙이 생기게 됩니다.
ii) 서픽스 배열(suffix array)
- 문자열의 접미사를 사전식 순서대로 인덱스화하여 나열한 배열을 뜻합니다.
-이를 위해 텍스트를 낱글자로 분해한 뒤 배열을 만들게 됩니다.
- 문헌 검색 등에서 쓰입니다.
2) 단어(word) 단위 텍스트 분석
- 가장 많이 쓰이는 텍스트 분석입니다.
- 단어 기반 task는 불용어, 어간 추출, 원형 복원이 있습니다.
① 단어의 특징
i) homonymy: 동일한 형식, 다른 의미
ex) 말(speak) vs 말(horse)
ii) polysemy: 동일한 형식 + 관련 의미
ex) 다리(책상의 다리) vs 다리(지게의 다리)
대부분은 polysemy에 대해 Word Sense Disambiguation을 수행하게 됩니다.
iii) Synonymy: 다른 형식+ 동일한 의미
ex) 가수 - 보컬
iv) hyponymy: 상하 관계
ex) 식사 - 아침식사
② 단어 단위 텍스트 분석의 중요성
- 단어 단위 텍스트 분석은 가장 보편적인 방법입니다. 단어 단위가 가장 보편적인 단위이기 떄문입니다.
- 품사 태깅도 단어에 적용이 가능하며, 개체명 인식도 단어에 적용 가능합니다.(물론 개체명은 구 레벨에도 적용 가능합니다. ex. White House)
③ 서양 언어 vs 동양 언어
- 서양 언어는 단어 분석이 용이합니다. 그냥 띄어쓰기 단위로 분절하면 되기 때문입니다.
- 그러나 동양 언어는 불가능합니다. 한국어의 경우 교착어이기 떄문에 단순히 띄어쓰기 단위 분절을 넘어 형태소 분석까지 들어가야 합니다.
④ Tokenization(토큰화)
- 어떻게 조각내는지에 대한 방법입니다.
- 즉 문헌 단위 문자열(sequence)이 주어졌을 때, 토큰들로 문자열을 조각내는 작업입니다.
- 영어의 경우 띄어쓰기로만으로도 토크나이징이 되나, ③과 같이 동양권 언어들은 토크나이징이 어렵습니다.
ex) 중국어: 绿茶冰淇淋加上蓝莓果酱,还有马卡龙杏仁饼。
▶위 중국어는 '녹차 아이스크림에 블루베리 시럽이랑 마카롱 하나 얹어주세요.'란 뜻입니다.딱 봐도 띄어쓰기가 없습니다(...)
▶때문에 중국어에 대한 토크나이징은 조각난 것을 끊는게 아니기에 의미적 구분인 segmentation이라 부르기도 합니다.- 토큰화를 어떻게 하느냐에 따라 분석 양상이 매우 달라지기도 합니다.
실제로 한국어도 어절 단위 토큰화보다 형태소 분석 토큰화를 했을 때 보편적으로 모델들의 성능이 더 좋습니다.
⑤ 용어구분: word, term, token, type
넷이 너무 비슷해i) word: 어떤 구분자로 인해 구분된 character의 sequence를 말합니다. 가장 많이 쓰입니다.
ii) term: word와 거의 동일하나, 대소문자, 형태, 철자 등이 normalized 되었다는 점에서 다릅니다. 즉 소문자로 전부 통일 되거나(donald trump), lemmatizing, temming 된 상태를 말합니다.
iii) token: 분석하고자 하는 의미 있는 단위 혹은 일련의 sequence를 뜻합니다. 역시 word와 비슷합니다.
iv) type: 구분자로 구분된 문자열이 표현하는 class를 뜻합니다. 즉 토큰의 대표형이라 볼 수 있습니다.
가령 Entity type으로 묶을 경우 인명만을 모은 PERSON이라는 묶음 아래에는 사람 이름들이(트럼프, 왓슨...) 옵니다. 토큰 타입을 어떻게 규정하느냐에 따라 얼마든지 다양한 타입이 존재할 수 있습니다.
⑥ 불용어(stop word)
- 정보를 전달하지 않는 단어로, 텍스트 분석 시 더 나은 결과를 위해 의도적으로 배제가 되는 단어입니다.
- 기능적인 역할을 한다고 말할 수 있습니다.
- 주로 영어에서는 the, a, in, about과 같이 관사, 전치사 등이 빠지고, 한국어에서는 조사, 어미, '있/않/없-'과 같은 어간이 빠지기도 합니다.
⑦ 품사 태깅(POS tagging)
- 문장 level에서 각 단어에 해당하는 품사로 레이블링 하는 작업입니다.
-좀 더 정확히는 문장을 토크나이징한 후, 각 단어(토큰)들이 어떤 품사를 가지는지 살펴보는 방법론이라 할 수 있습니다.
- 단어~문장을 아우르기 때문에 lexical~syntactic representaion에 걸쳐있습니다. 이는 문장 내 단어/토큰에 대한 형태소들의 품사를 파악하고, 문장의 구조도 동시에 파악할 수 있기 때문입니다.
-POS는 매우 중요한 feature라 볼 수 있습니다.
i) 규칙 기반 기법
-POS 태깅 시 미리 규칙을 만들어 놓고 이에 따라 품사를 태깅할 수 있습니다.
- 규칙은 수작업으로 만들어진 대량의 규칙(!!)을 따릅니다ㅠㅠ 규칙 만드려면 진짜 힘들듯.........
-이는 한 품사가 여러 품사 태그를 가지는(ex. 한국어의 '일곱'은 수사(NR), 수관형사(MMN) 모두에 해당) 경우 사전 규칙에 따라 처리하기 위함입니다. 가령 '일곱' 뒤에 조사가 붙는다면 수사로 처리하고, '일곱' 뒤에 명사류가 온다면 수관형사로 처리하는 식입니다.
- 추가로 한국의 품사 태그는 세종 태그를, 영어의 품사 태그는 Penntree list를 따릅니다.
ii) Stocastic 기반(통계+머신러닝 방법)
- 단어의 품사 결정을 학습된 데이터에 의한 확률로 결정하는 방법입니다.
-주로 히든 마르코프(hidden Markov) 모델을 사용합니다.
히든 마르코프 모델은 머신러닝 중 supervised learning에 속합니다. supervised learning은 sequetial classification, normal classificaton에 따라 구분이 되는데, 히든 마르코프 모델은 이 중에 sequential classification에 속합니다. 즉, 문자열도 sequence이므로 히든 마르코프로 다룰 수 있습니다.
- 히든 마르코프 모델을 통해 모든 가능한 태그 sequence 중, input 단어에 대해 가장 가능성이 높은 태그열을 prediction합니다. 이처럼 확률을 기반으로 하기에 히든 마르코프 모델은 probablistic model에 속하기도 합니다.
3) 구(phrase) 단위 텍스트 분석
- 구 단위에는 단어 기반 n-gram, proximity features를 수행할 수 있습니다.
① 텍스트 단위화(Text Chunking-shallow parsing)
- 텍스트를 어휘적으로 상호 관련 있는 단어들로 나누는 자연어 처리의 기법입니다(Ramshaw and Marcus, 1999)
-트리 구조를 만들어 구 단위로만 청킹하고 자르는 것이 특징입니다.
-품사에 따라 단위화되기도 합니다.
+ Noun group: 명사구입니다. 명사구는 동사의 주체/객체가 될 수 있는 요소입니다.
+ Verb-gourp: 동사구입니다. 동사구는 조동사, 동사 수식어들을 포함하는 요소입니다.
-텍스트 표현 방법: 크게 2가지가 있습니다.
i) tree 구조: 각 단어에 품사태깅을 한 후, 그것을 바탕으로 텍스트를 단위화 합니다. full-parsing과 연결됩니다.
ii) 태그: IOB, BOI 방식 (inside-outside-beginning)
(Ramshaw and Marcus, Text Chunking using Transformation-Based Learning, 1995)
- 품사 태그를 통해 규칙을 만들어 청킹하는 방법입니다.
- 개체명 인식에서 다음과 같이 사용됩니다. O를 제거할 경우 NER에 유의미한 단어만이 남습니다.
Alex I-PER
is O
going O
to O
Los I-LOC
Angeles I-LOC
in O
California I-LOC<Outside filtering>
Alex I-PER
Los I-LOC
Angeles I-LOC
California I-LOC② N-gram
- N-gram은 주어진 텍스트나 음석의 연속된 sequence를 말합니다.
텍스트 분석에서는 연속한 단어. 혹은 문자열과 관련되어 있습니다.
- N은 사용한 term의 개수로 정해집니다. 이에 따라 하나의 단어는 단어 uni-gram, 두 개 단어는 단어 bi-gram으로 이야기됩니다.
-N-gram은 특히 언어 모델링에 적합한 텍스트 분석 방법입니다.
4) 품사 태그(Part-Of-Speech, POS)
-품사 태그는 lexical과 syntactic 표현에 걸쳐있는 것입니다.
- 각 태그는 어휘적일 수도 있으나 문법적일 수도 있기 때문입니다.
- 앞 전의 2)-⑦에서 설명했으므로 넘어갑니다~
(2) 구문(syntactic) 표현
1) 언어 모델(Language Models): 언어 모델은 매우 중요합니다. 가령 BERT같은 경우 NLP에서 Sota를 찍은 이후 계속 사용되고 있는 언어 모델입니다. 다만 이번 수업에서는 BERT 이전의 언어 모델을 배우게 됩니다.
2) 벡터-공간 모델(Vector-Space Model): 특정 단어들이 존재하는 문장, 문헌 등을 벡터 공간에 표상할 수 있습니다.
vectorization과 거의 동일합니다.
3) 구문 분석(Full-parsing 혹은 parsing)
- 구문 분석은 shallow parsing과 full parsing으로 나뉩니다.
-shallow parsing에는 chunking이 속합니다.
-full parsing 혹은 그냥 parsing은 자연어 문장을 tree 구조로 표상하는 것을 말합니다.
(3) 의미론적 표현
1) Collaborative tagging / Web2.0
-이용자(user)들이 본인들의 인지적 판단 등에 따라 태그, 북마킹을 시도하는 것을 말합니다.
-이에 따라 굉장히 individual한 성격을 가집니다.
2) Templates / Frames
- 품사별로 의미를 파악하고 definition을 지정합니다. 또한 유사한 단어들을 연결시켜주는 것을 말합니다.
- 품사별이므로 Noun Frame, Verb Frame 등이 존재합니다.
3) Ontologies / First order theories
- 가장 많이 쓰입니다. tree structure로 구조화된 것을 말합니다.
'텍스트마이닝' 카테고리의 다른 글
TextRank: Bringing Order into Texts (0) 2022.07.01 토픽 모델링, LDA (0) 2022.06.30