Text normalization 이란?
테스트를 처리할때 텍스트를 편리한 표준 형식으로 변환하는 것을 포함한다.
Text normalization 과정
- 텍스트 전체를 문장으로 분할
- 문장들을 단어들로 분할(Tokenization)
- 단어 형식을 표준화
단어 Tokenization 알고리즘
- Regular Expression-based 접근 방식(정규식 기반)
- 정규식을 사용하여 토큰화를 진행하면 토큰화 속도가 매우 빠르다.
- Penn Treebank 토큰화(펜트 트리뱅크)
- 하이픈으로 연결된 단어를 하나의 토큰으로 유지
- 구두점을 별도의 토큰으로 유지
- Linguistic Data Consortium 에서 배포하는 많은 기본 데이터 세트를 토큰화에 사용
- 하위 단어 토큰화 e.g. Byte-Pair Encoding(BPE)
- 하위 단어를 생성하는 토큰화 접근법이며 인코더의 토큰 학습자 부분은 특정한 말뭉치에 대한 하위 단어를 계산한다. 토큰 분할자는 해당 어휘를 사용하여 텍스트를 토큰으로 변환한다.
- BPE Step 과정
- 데이터 집합의 개별 문자들로 구성된 어휘 (토큰) 로 시작한다.
- 데이터 집합에서 가장 인접한 두개의 심볼들을 (e.g. E & R) 선택하고 병합된 문자를 새 심볼로 추가한다. (e.g. ER)
- 위의 과정을 k 단계 반복 수행하며, k 는 실행되는 계산량을 제어하는 데 사용한다.
- 알 수 없는 단어들을 토큰으로 나타낼 수 있으나 최악의 경우 문자 수준의 토큰으로 표시될 수 있다.
- 만약 k 가 충분히 크다면, 원본 테스트의 모든 단어들을 표현할 수 있다.
Normalizing word formats 단어 형식 표준화
- 모든 문자를 소문자로 매핑하기
- 모든 문자가 소문자화 되기 때문에, 어휘 (단어 즉, 토큰) 의 크기는 줄어든다.
- 예외: Sentiment Analysis (감정 분석) 과 같은 일부 응용 프로그램에서는 바람직하지 않다.
Stemming 이란?
- Stemming 은 Inflected (굴절) 된 단어들을 동일한 단어 stem (줄기) 나 root (어근, 형태학적 어근은 아니다) 로 변환하는 것을 말한다.
Porter Stemmer 란?
- Porter Stemmer 는 nltk 에서도 구현되어 있는 유명한 알고리즘이다.
- 예시
- 'apple' 을 'appl' 로, 'eating' 을 'eat' 로 stem 한다.
- 'universal', 'university', 'universe' 를 'univers' 로 stem 할 수 있지만 이는 Overstemming 이라고 볼 수 있다.
- 'alumnus' 를 'alumnu', 'alumni' 를 'alumni', 'alumna' 혹은 'alumnae' 를 'alumna' 로 stem 할 수 있지만 Understemming 이라고 볼 수 있다.
Stemming 의 문제
- 위에서 설명한 것과 같이 Overstemming 과 Understemming 이 있다.
- 실제 단어들에서 유래된 단어들이 아니라 잘리거나 조잡하게 단축된 단어이기 때문에 텍스트를 읽기 어렵게 만든다. 만일 이러한 상황이 발생되면 Modeling 을 할때 Modeling 의 일부로 텍스트를 검토해야할 수도 있다.
Lemmatization 이란?
- Lemmatization 은 Stemming 보다 더 정교한 단어 형식 표준화 접근법이다. Lemma 로 알려진 단어의 기본 또는 사전 형태의 단어를 반환한다.
- Lemma 들은 WordNet 과 같은 어휘 지식을 기반으로 구현된다.
- 텍스트의 결과는 Stemming 와 다르게 읽을 수 있다.
단점
- 일반적으로 Lemmatization 은 말하는 언어 (구어) 의 부분을 특정하게 지정해야 한다. 그렇지 않으면 데이터베이스에서 처리할 명사를 찾지 못했을때 변경하거나 Lemmatize 하지 못한다.
- Lemmatization 은 알려지지 않은 단어를 다룰 수 없다. 예를 들어 Forter stemmer 는 iPhone 과 IPhone 을 모두 iphon 으로 변경하는 반면에 WordNet 은 두 단어 모두 그대로 둔다.
더 복잡한 형태학을 가진 언어들은 Stemming 과 Lemmatization 으로 부터 많은 이익을 얻는다.
Stemming 과 Lemmatization 의 정밀도 VS Recall
- Lemmatization 는 Stemming 보다 좋은 Precision 을 가지는 반면에, Stemming 은 Lemmatization 보다 낮은 Recall 을 가지고 있다.
참고
- Recall: Recall 은 알고리즘이 동일한 'root' 에 매핑될 수 있는 모든 단어를 얼마나 잘 검색할 수 있는지에 대한 척도
- Precision: Precision 은 알고리즘이 단어의 의미를 얼마나 잘 보존하는지를 나타낸다.
- 즉 Lemmatization 은 단어의 의미를 더 잘 보존하며, Stemming 은 동일한 'root' 로부터 모든 단어를 더 잘 검색할 수 있다.
- 또한 Lemmatization 과 Stemming 모두, Recall 을 늘리고 Precision 을 기존의 텍스트보다 상대적으로 낮추는 성향을 가지고 있다.
Sentence Segmentation 시 발생하는 문제
- 문장의 끝과 약어를 명확하게 만드는 것이 어렵기 때문에 다음과 같은 접근 방법을 사용한다.
- 단어들의 모든 부분들이 어떤 기간, 범위를 가지고 있는지 결정해야한다.
- 규칙, 사전 검색 dictionary lookup 혹은 머신러닝을 이용하여 결정한다.
- 문장들의 끝의 범위가 얼마나 남았는지 가정한다.
- 때로는 두가지 규칙이 존재할 수 있다는 것을 명심한다. 예를 들어 축약은 문장의 마지막이 될 수 있다. 그렇기 때문에 단어와 문장의 tokenizer 들은 조정이 필요하다.
Edit Distance Overview 란?
- Edit Distance 는 두 문자열의 유사성 Similarity 를 정량화 하는 방법이다.
- 자동 수정: 철자가 잘못된 단어들을 자동으로 수정할때 수정할 대상을 파악하기 위해 사용
- 상호 참조: 상호 참조를 위해 사용 e.g. San Jose State President 와 San Jose State University President 가 같은 대상으로 참조되어 있는지 확인할 때
- Minimum Edit Distance (MED): 연산들에 대한 최소 횟수
- e.g. 하나의 문자열을 다른 것으로 변환할때 삽입, 삭제, 대체의 연산수를 의미한다.
- Levenshtein Distance (LD): 각 연산이 같은 가중치 wight 를 가지고 있는 MED 알고리즘이다.
- e.g. 각각의 비용이 1이고 intention 과 execution 은 5 를 가진다.
'AI Master Degree > Natural Language Processing' 카테고리의 다른 글
Model Evaluation란? 모델 평가란? (1) | 2022.10.08 |
---|---|
N-Gram language models 이란? 엔 그램 언어 모델들이란? (2) | 2022.10.07 |
Words 에 대해서? (0) | 2022.10.06 |
Regular Expressions 이란? 정규식이란? (0) | 2022.10.06 |
NLP 란? Natural Language Processing 자연어 처리란? (1) | 2022.10.05 |