Natural language processing(NLP)

출처: https://en.wikipedia.org/wiki/Natural_language_processing


1. 정의


NLP는 컴퓨터 과학, 인공지능(AI), 컴퓨터 언어학(computational linguistics)의 한 분야로 인간들이 사용하는 자연언어와 컴퓨터 사이의 상호작용과 관련 있으며,  특히, 거대한 자연 언어 말뭉치를 성과적으로 처리하기 위한 프로그래밍 컴퓨터와 관련이 있다. NLP의 과제는 종종 자연언어이해, 자연언어생성(종종 형식적이고 컴퓨터로 해독가능한 논리적 형식으로부터), 언어와 기계 인식의 연결, 대화형 음성 인터페이스 시스템, 또는 이들의 조합을 포함한다. 


2. Statistical natural language processing(SNLP)


흔히 1980년대 후반에서 1990년대 중반까지 "통계학상의 혁명"이라고 불린 이후로, 많은 NLP 연구는 기계 학습과 밀접하게 관련되어 왔다. 

이전에, 언어를 처리하는 일들은 보통 규칙들을 직접 손으로 코딩하는 것을 포함하였다. 이는 자연 언어의 변화들에 보통 적절하지 않다. 기계 학습 패러다임은 대신 통계적인 추론을 이용하는 것을 필요로 하는데, 이는 실세계의 일반적인 예들의 거대한 말뭉치의 분석을 통해 그런 규칙들을 자동적으로 배우기 위해서이다. 많은 다른 기계 학습 알고리즘의 종류들이 NLP에 적용되었다. 이 알고리즘은 입력된 데이터로부터 생성된 특징들의 거대한 집합을 입력으로 간주한다. 판단트리(decision trees) 같은 초창기에 사용된 알고리즘은 딱딱한 if-then 규칙의 시스템을 만들었는데, 이는 그당시에 일반적이었던 손으로 쓰인 규칙들의 시스템과 유사했다. 그러나 점점 갈수록 연구는 각각의 입력 특징에 실제로 측정된 값을 붙이는것에 근거한 부드럽고, 확률적 의사결정을 만드는 통계적 모델에 집중되었다. 이 모델들은 하나의 답변보다 다른 많은 가능한 답변들의 확실성을 비교한 것을 표현하는데 이점을 가지고 있었다. 이 모델들은 거대한 시스템의 하나의 구성요소로서 포함되어 있을 때 더 믿을수 있는 결과를 만들어 냈다.


기계 학습 알고리즘에 기반한 시스템은 손으로 생성된 규칙들보다 더 많은 이점을 가지고 있다:

- 기게학습을 사용하는 동안 학습 절차는 자동적으로 가장 흔한 케이스에 집중한다. 반면에 손으로 쓰인 규칙들을 쓸때는 노력이 지시되어야 하는 곳이 종종 결코 명백하지 않다. 

- 자동의 학습 절차는 익숙하지 않은 입력과 잘못된 입력에 강한 모델을 생성하기 위해서 통계적 추론 알고리즘을 사용하게 한다. 일반적으로 손으로 쓰인 규칙으로 입력을 적절하게 처리하는 것은 매우 어렵고, 오류가 발생하기 쉽고, 그리고 시간이 걸린다.

- 규칙을 자동적으로 배우는 것에 기반한 시스템은 더 많은 입력 데이터를 제공함으로써 더욱 정확하고 간단하게 만들어 질 수 있다. 그러나 손으로 쓰인 규칙에 기반한 시스템은 규칙을 더욱 복잡하게 만드는 것으로만 더 정확하게 만들 수 있으며, 이것은 매우 어려운 일이다. 특히 시스템이 점점 더 다루기 힘들어지는 것을 넘어서 손으로 만들어진 규칙에 기반한 시스템의 복잡도에는 한계가 있다. 그러나 기계 학습 시스템에 더 입력하기 위해 데이터를 생성하는 것은 일반적으로 주석을 다는 과정의 복잡성에 관해서는 상당한 증가 없이 단순히 노동시간을 상대적으로 증가하게 한다. 


3. Major evaluation and tasks

밑의 리스트는 NLP에서 가장 많이 연구되는 것들이다. 몇몇의 업무들은 직접적으로 실세계 응용에 관련된 것이며, 몇몇의 업무들은 보통 다른 큰 업무들을 수행하는데 도움을 주는 부과업의 역할을 한다. NLP 업무가 명백히 밀접한 관계가 있긴 하지만 편의상 아래처럼 여러 범주로 세분화되어 있다. 


1) syntax(통사론: 단어가 결합하여 형성되는 구(句) ·절(節) ·문장의 구조나 기능을 연구하는 문법)

A. Lemmatization(표준형 찾기)

언어학에서 lemmatisation은 단어의 변화된 유형을 분류하는 과정이다. 이를 통해 단어의 변화된 유형들을 단어의 기본형이나 사전 형식으로 확인된 하나의 항목으로 분석할 수 있다. 

B. Morphological segmentation(형태소 분류)

단어들을 각각의 형태소로 나누고 형태소의 종류를 확인하는 것이다. 이 업무는 언어의 형태소가 복잡할수록 어렵다. 영어는 꽤 간단한 형태소를 가지고 있으며 특히 어미와 어형의 변화(굴절)가 있는 형태소를 가지며, 따라서 이 업무를 완전히 무시하거나 모든 가능한 단어 형태의 모델을 만들 수 있다(e.g. "open, opens, opened, opening"). 터키어나 마니푸르어같이 인도어와 매우 교착된 언어들은 각각의 사전 항목이 수천개의 가능한 단어 형태를 가질 수 있기 때문에 그런 접근 방식이 불가능하다.

C. Part-of-speech tagging(품사 배정)

[1] 주어진 문장에서 각 단어의 품사를 찾는 것이다. 많은 단어들, 특히 일반적인 단어들은 다양한 품사의 역할을 한다. 예를 들어 "book"은 명사가 될 수도 동사가 될수도 있다("to book a flight"). "set"도 명사, 동사, 형용사가 될 수 있으며 "out"은 최소 다섯가지의 다른 품사가 될 수 있다. 어떤 언어들은 다른 언어보다 꽤 애매할 수 있다. 영어와 같이 적은 굴절을 가진 언어들은 특히 애매하기 쉽다. 중국어도 꽤 애매한데 왜냐하면 말로 표현할 때 성조 언어이기 때문이다. 의도한 의미를 전달하기 위해 맞춤법에 사용된 독립체를 통해 그런 굴절은 쉽게 전달되지 않는다.

[2] 품사 확인은 주로 다운스트림 처리 결과의 품질을 개선하는데 사용된다. 예를 들어 품사를 사용하면 문서에서 중요한 키워드가 무엇인지 알아보거나 단어의 특정한 쓰임 검색을 보조하는데 도움이 된다("will"을 고유명사로 사용하거나 "you will regret that"과 같은 문장에서는 조동사로 사용하는 것과 같이). 

* 품사배정 오픈소스: 

- openNLP 최대 엔트로피 태그 부착기(Maximum Entropy Tagger) (http://opennlp.apache.org): 

Maximum은 어떤 품사가 단어에 가장 적절할지 정하는 데 통계를 사용한다는 의미, 문장의 단어에 품사를 붙이기 위해 펜 트리뱅크 프로젝트(Penn Treebank Project, http://www.cis.upenn.edu/~treebank)의 품사 태그를 사용. 아래는 펜 트리뱅크에서 더 일반적인 태그를 샘플링한 것. 이들 중 다수의 태그는 과거와 현재 시제나 단수와 복수 같이 단어의 여러가지 다른형태를 표시하기 위한 연관 태그가 있다. 완전한 목록은 http://repository.upenn.edu/cgi/viewcontent.cgi?article=1603&context=cis_reports 참고.

일반적으로 나타나는 품사 정의와 예제

 품사

펜 트리뱅크 태그 이름 

예제 

형용사, 최상급 형용사, 비교급 형용사 

JJ, JJS, JJR 

nice, nicest, nicer 

부사, 최상급 부사, 비교급 부사 

RB, RBS, RBR

early, earliest, earlier 

한정사 

DT 

a/the 

명사, 복수형 명사, 고유명사, 복수형 고유명사 

NN, NNS, NNP, NNPS 

house, houses, London, Teamsters 

인칭 대명사, 소유 대명사 

PRP, PRP$ 

he/she/it/himself, his/her/its 

동사 원형, 동사 과거형, 과거 분사, 

3인칭 단수 현재형, 3인칭 단수 아닌 현재형, 

동명사 또는 현재 분사

VB, VBD, 

VBN, VBZ, 

VBP, VBG 

be, was, 

been, is, 

am, being 


D. parsing(구문분석)

- (Stochasti grammar도 볼것) 주어진 문장의 parse tree를 찾는 것(parse tree: 언어에서 문법의 시작 기호가 어떻게 스트링을 유도하는가를 그림으로 표현하는 것으로 유도 트리라고도 한다). 자연언어의 문법은 매우 모호하다 그리고 보통의 문장들은 여러가지 분석이 가능하다. 사실 아마 놀랍게도 보통의 문장은 수천의 잠재적인 분석이 가능할지도 모른다. Parsing에는 Dependency Parsing과 Constituency Parsing, 두 가지 주요한 유형이 있다. Dependency Parsing은 한 문장에서 단어들의 관계들에 집중하고, Constituency Parsing은 Probabilistic Context-Free Grammar(PCFG,  기호열을 모델링하기 위한 문법 이론, 컴퓨터 언어학 분야에서 자연 언어 구조를 이해하는 것을 돕는 것에서 유래)을 사용하여 Parse Tree를 세우는 것에 집중한다[1].

- 품사, 구, 절과 그것들 사이의 관계를 밝히는 작업[2].

F. Sentence breaking(sentence boundary disambiguation, 문장 경계 감지)

주어진 단어 덩어리에서 문장 경계를 찾는 것. 문장의 경계는 자주 마침표나 다른 구두점에 의해서 표시되지만 이 문자들은 다른 역할을 할 수도 있다(예를 들면 약어를 표시하는 것처럼)

G. Stemming(어간 추출)[2]

어간 추출은 단어를 그것 자체가 단어일 필요는 없는 원형이나 더 단순한 형태로 줄이는 프로세스이다. 단어를 가능한 최소 원형으로 줄이는 공격적인 작업의 결과는 수량은 많지만 품질이 낮아진다. 가벼운 어간 추출의 결과는 일부를 놓칠 수 있지만 품질이 올라간다. 또한 어간 추출은 연관된 단어는 같은 어간으로 줄어들지 않는데, 다른 의미의 단어들이 같은 어간을 갖게 되면서 의미를 잃는 경우 문제가 발생할 수 있다. 

* 어간추출기 종류:

- Snowball(http://snowballstem.org/)  


H. Word segmentation(단어 분할)

- 연속된 단어 덩어리를 단어로 분리하는 것이다. 영어 같은 경우 보통 단어가 띄어쓰기로 구분되기 때문에 이 일은 매우 간단하다. 하지만 중국어, 일본어 타이어와 같은 몇몇의 언어들은 단어에 대한 어휘와 형태론에 관한 지식이 필요하기 때문에 어렵다. 

I. Terminology extraction(전문 용어 추출)

주어진 말뭉치에서 자동적으로 연관된 용어를 추출하는 것이다.


2) Semantics(의미론)

A. Lexical semantics(어휘의 의미론)

문맥안의 각각의 단어들의 컴퓨터의/계산적인 의미가 무엇인지 찾는것이다.

B. Machine translation

하나의 인간 언어에서 다른 인간 언어로 자동으로 번역하는 것이다. 이것은 매우 어려운 문제들 중 하나이고, 일상적으로 "AI-complete"라고 불리는 문제들 중 하나이다. 다시말하면 문제를 적절히 풀기위해서는 인간이 소유한 모든 다른 종류의 지식들을 필요로한다. 

C. Named entity recognition(NER, 개체명 인식)

주어진 문자의 흐름안에서 문자 지도안에 있는 항목들을 사람이나 공간, 그리고 어떤 이름에 대한 종류같은 적절한 이름들을 찾는 것이다. 비록 영어와 같은 언어에서 대문자를 사용하는 것이 개체명을 인식하는 것에 도움을 줄지라도 이런 정보들은 개체명의 종류를 찾는데 도움이 되지 않으며 또한 어떤 경우에서는 자주 부정확하거나 불충분하다. 예를들어 문장의 첫 글자는 대문자로 쓰여지며, 개체명은 자주 여러 문자를 포함하는데, 이중 몇몇만 대문자가 쓰이기도 한다. 더 나아가 많은 서양에 속하지 않은 다른 언어들은 대문자 자체를 사용하지 않으며 또한 심지어 대문자를 사용하는 언어들도 대문자를 이름을 구분하기 위해 끊임없이 사용하지는 않는다. 예를들어 독일은 이름을 언급하는 것이 아니더라도 모든 명사를 대문자로 쓰며, 불어와 스패인어는 형용사 역할을 하는 이름에 대문자를 사용하지 않는다. 

D. Natural language generation(자연언어생성)

컴퓨터 데이터베이스나 의미적 의도를 읽을수 있는 인간 언어로 바꾸는 것이다.

E. Natural language understanding(자연언어이해)

문자 덩어리를 더욱 형식적인 표현으로 바꾸는 것을 말한다. 형식적인 표현에는 컴퓨터 프로그램이 다루기 쉬운 first-order logic structure가 있다. 자연어이해는 다수의 가능한 의미들의 의도된 의미를 확인하는 것을 포함한다. 이는 보통 자연 언어 개념들의 조직화된 표기법 형식을 가지는 자연 언어 표현에서 파생될 수 있다. 언어의 메타모델과 존재론의 도입과 생성은 효율적이지만 실증적인 해결책이다. 자연 언어의 의미를 혼동되지 않고 내포된 가정과 함께 분명하게 형식화하는 것은 의미를 형식화하는 근거의 구조를 기대한다. 내포된 가정에는 closed-world assumption(CWA) 대 open-world assumption, 또는 subjective Yes/NO 대 objective True/False가 있다. 

F. Optical character recognition(OCR)

출력된 텍스트를 보여주는 주어진 이미지에서 일치하는 텍스트를 찾는 것이다.


optical character recognition에 대한 이미지 검색결과


G. Question answering

주어진 인간 언어로된 질문에서 답을 찾는 것이다. 보통의 질문들은 분명한 답이 있다(예를 들어 캐나다의 수도는 어디인가? 처럼). 하지만 가끔 답이 정해져있지 않은 질문들도 고려해야한다(예를 들어 "인생이란 무엇인가? 처럼). 

H. Recognizing Textual entailment

주어진 두 개의 텍스트 조각에서 한 단어가 다른 단어를 수반하는지, 반대에 수반하는지 또는 둘 중 어느 것도 되는지를 밝히는 것이다.

I. Relationship extraction

주어진 텍스트 덩어리에서 개체명의 관계를 확인하는 것이다(예를 들면 누구와 누구가 결혼했는지).

J. Sentiment analysis(감정 분석)

보통 문서의 집합에서 주관적인 정보를 추출하는 것이다. 종종 특정 주제의 양극성을 찾기 위해 온라인 비평들을 이용한다. 마케팅에 사용될 목적으로 소셜 미디어의 여론 추세를 확인하는데 특히 효율적이다. 

K. Topic segmentation and recognition

주어진 텍스트 덩어리에서 주제와 관련된 부분으로 나누고 그 부분의 주제를 확인하는 것이다.

L. Word sense disambiguation(단어 의미 명확화)

많은 단어들은 하나 이상의 의미를 가진다. 우리는 문맥에서 가장 적절한 의미로 사용될 수 있는 의미를 골라야 한다. 이 문제에서 우리는 보통 사전이나 WordNet과 같은 온라인 자료같은 곳에서 단어들과 연관된 단어 의미들의 목록을 갖게된다. 


3) Discourse(담론, 이야기를 주고받으며 논의하다-국어사전)

A. Automatic summarization

읽을 수 있는 텍스트 덩어리의 요약을 만드는 것이다. 종종 신문의 금융 분야 기사와 같은 텍스트 종류들의 요약들을 제공하기 위해 사용된다.

B. Coreference resolution(동일 지시어 분석)

주어진 문장이나 거대한 단어 덩어리에서 어떤 단어가 같은 대상을 가리키는지 찾는 것이다. Anaphora resolution은 이 일의 구체적인 예이며, 이는 특히 대명사를 언급된 명사나 이름과 매칭시키는 것과 관계가 있다. 일반적으로 대용어를 해소하는 것은 지시표현(referring expressions)을 포함한 소위 "bridging relationships(연결 관계)"라고 불리는 것을 확인하는 것을 포함한다. 예를 들어, "He entered John's house through the front door"이라는 문장에서 "the front door"은 지시 표현이고 문장에서 언급된 문은 John의 집 현관문이라는 것이 확인된 연결된 관계(bridging relationship)이다. 

C. Discourse analysis(담화 분석)

지시문은 다수의 연관된 일을 포함한다. 한 가지 일은 문장 사이에서 담화 관계의 본질같은 연결된 텍스트의 discourse structure(담화 구조)을 확인하는 것이다(상술, 설명, 대조 같은). 다른 가능한 일은 텍스트 덩어리에서 발화 행위를 인식하고 분류하는는 것이다(네-아니오로 대답하는 질문, 내용 질문, 서술, 등등). 


4) Speech

A. Speech recognition(음성 인식)

주어진 사람이나 사람들의 대화의 소리 조각에서 음성의 문자의 표현을 찾는 것이다. 이것은 text-to-speech와 반대되는 것으로 "AI-complete"라고 불리는 매우 어려운 문제중 하나이다(AI-complete는 인공지능 분야의 용어로 하나의 알고리즘만으로는 풀 수 없는 복잡한 인공지능 문제를 말한다). 자연언어(natural speech, natural language)에서 연속적인 단어 사이에 거의 말을 멈추지 않는다. 따라서 소리 분할은 음성인식에서 필요한 부과업이다. 또한 대부분의 언어에서 소리는 서로 뒤섞인 연속적인 문자를 표현한다. 이는 동시 조음(coarticulation)이라고 불리는데 따라서 아날로그 신호에서 분리된 문자로 전환하는 것은 매우 어려운 과정이다. 

B. Speech segmentation

주어진 사람이나 사람들의 대화의 소리 조각을 단어들로 나누는 것이다. 음성인식의 부과업이며 보통 음성인식과 묶인다. 

C. Text-to-speech



<여기부터 위키피디아가 아닌 개인 정리>

4. 언어의 기초[2]


1) 단어와 범주

단어는 소수의 어휘 범주(lexical category) 또는 품사로 나뉜다. 이 범주는 명사, 동사, 형용사, 한정사, 전치사, 접속사 등을 포함한다. 

<통어적(Syntactic) 용법에 기초>

A. 형용사

명사를 수식하거나 서술하기 위해 명사에 추가되거나 문법적으로 연결돼 속성을 지정하는 어휘 혹은 구

ex) The quick red fox jumped over the lazy brown dogs

B. 부사

어휘나 구/형용사 , 동사, 다른 부사를 수식하거나 한정하는, 또는 장소, 시간, 상황, 양태, 원인, 정도 등을 나타내는 단어 그룹

ex) The dogs lazily ran down the field after the fox.

C. 접속사

두 개의 단어나 구, 절을 연결하는 단어

ex) The quick red fox and the silver coyote jumped over the lazy brown dogs,

D. 한정사

명사나 명사 그룹의 참조 대상 종류를 한정하는 수식어, a, the, every 등이 있다.

ex) The quick red fox jumped over the lazy brown dogs.

E. 명사

인물, 장소, 사물의 종류를 알아보기 위해, 혹은 이런 것들 중 특정한 무엇에 이름을 붙이는 데 사용되는 단어

ex) The quick red fox jumped over the lazy brown dogs.

- 일반명사(common noun): 마을, 대양, 사람 등과 같은 유형의 개체를 기술

- 고유명사: 유일한 개체를 나타내고 전형적으로 대문자로 표기, London, John, Eiffel Tower 등

- 대명사: 주로 앞에서 언급한 다른 개체를 가리키는 명사로, he, she, it 등이 있다.

F. 전치사

보통 명사나 대명사 앞에 출현해서 다른 단어나 절의 다른 요소와의 관계를 표현하는 단어

ex) The quick red fox jumped over the lazy brown dogs.

G. 동사

동작, 상태, 빈도를 설명하는데 사용하며, 문장 술부의 주요 부분을 형성하는 단어로, hear, become, happen등

ex) The quick red fox jumped over the lazy brown dogs.


2) 구

A. 형용사

ex) The unusually red fox jumped over the exceptionally lazy dogs.

부사 unusually와 exceptionally는 형용사 red와 lazy를 각각 수식해서 형용사구를 만든다.

B. 부사

ex) The dogs almost always ran down the field after the fox.

부사 almost는 부사 always를 수식해서 부사구를 만든다.

C. 접속사

ex) the quick red fox as well as the silver coyote jumped over the lazy brown dogs.

이것이 좀 예외적인 경우이긴 하지만, 여러 단어로 구성된 구 as well as가 and와 같은 접속사 역할을 하는 것을 볼 수 있다.

D. 명사

ex) The quick red fox jumped over the lazy brown dogs.

명사 fox와 그 수식어 the, quick, red는 명사구를 만들고, 명사 dogs와 그 수식어 the, lazy, brown도 그렇다.

E. 전치사

ex) The quick red fox jumped over the lazy brown dogs.

전치사 over와 명사구 the lazy brown dogs는 동사 jumped를 수식하는 전치사구를 형성한다.

F. 동사

ex) The quick red fox jumped over the lazy brown dogs.

동사 jumped와 수식어인 전치사구 over the lazy brown dogs는 동사구를 형성한다.


3) 절(Clause, 문장을 구성하기 위한 최소 단위)

최소 명사구(주어)와 동사구(술어)로 구성되는데, 이 구는 흔히 동사와 다른 명사구로 이루어진다. 

ex) 'The fox jumped the fence' 

- 명사구: The fox

- 동사구: jumped the fence

이런 요소를 이용해서 어떤 문장이든 절의 집합으로 분해될 수 있고, 그 절들은 다시 구의 집합으로, 구는 다시 특정 품사를 갖는 단어들로 분해될 수 있다. 품사, 구, 절과 그것들 사이의 관계를 밝히는 작업을 구문 분석(parsing)이라고 한다. 


4) 형태론

단어 내부 구조에 대한 연구이다. 대부분의 언어에서 단어는 어휘소(lexeme) 또는 원형(root form)과 단어가 어떻게 사용되는가에 따라 단어의 특징을 정하는 다양한 접사(접두사, 접미사)로 구성된다. 

* 영어 *

우선적으로 접미사에 의해 특징 지어지고, 규칙은 단어의 어휘 범주에 기초한다. 

A. 일반명사, 고유명사: 

숫자에 따라 굴절되고 단수형과 복수형이라는 두 가지 다른 형태를 갖는다. 단수 명사는 원형으로 구성되고, 복수형은 보통 끝에 s가 붙는다. 

B. 대명사:

수, 사람, 격(case), 성(gender)에 따라 달라진다. 34개의 다른 형태를 갖는 닫힌 단어 클래스이기 때문에 일반적으로 대명사의 형태 구조를 모델링하기 보다는 나열하기가 쉽다. 

C. 동사, 형용사: 

* 명사가 동사 기반인 경우의 명사 형태 예제

 접미사

예제

동사 

-ation 

nomination 

nominate 

-ee 

appointee 

appoint 

-ure 

closure 

close 

-al 

refusal 

refuse 

-er 

runner 

run 

-ment 

advertisement 

advertise 

* 명사가 형용사 기반인 경우의 명사 형태 예제

접미사 

예제 

형용사 

-dom 

freedom 

free 

-hood 

likelihood 

likely 

-ist 

realist 

real 

-th 

warmth 

warm 

-ness 

happiness 

happy 


동사는 8가지 다른 모양으로 굴절할 수 있지만 모든 규칙 동사는 네 가지의 별개 형태만을 갖는다. 다수의 불규칙 동사는 과거 분사로 사용될 때 규칙 동사의 'ed'형태 대신 'en' 접미사와 같이 사용될 수 있다. (아래 표 참고) 나머지 세 가지 형태는 소수의 불규칙 동사에 대해서만 각각 다르게 어휘화되고 일반적인 접미사를 사용하지 않는다.

접미사 

예제 

표시된 형태 

none 

look 

기본형 

-ing 

looking

동명사(Gerund)형 

-s

looks 

3인칭 단수형 

-ed 

looked 

과거형 

-en 

taekn 

과거 분사형 

D. 형용사와 부사

비교를 위해 표시될 수 있고 비교급과 최상급 형태를 갖는다. 기본형 형용사 tall은 -er 접미사를 이용해서 비교급으로 어형 변화되어 taller가 되거나, -est 접미사를 이용해서 최상급으로 어형 변화되어 tallest가 될 수 있다. 비슷하게 near 같은 부사는 -er 접미사를 이용해서 비교급으로 어형 변화돼 nearer를 생성하거나 -est 접미사를 이용해서 nearest를 생성할 수 있다.


5. 텍스트 프로세싱을 위한 일반적인 도구[2]

1) 문자열 조작 도구

2) 토큰과 토큰 분리(Tokenizing, Lexical analysis)

보통 띄어쓰기로 토큰을 나누며 토큰 수준에서 적용 가능한 다른 일반적인 기술은 다음과 같은 것들이 있다. 

A. 대소문자 변경 

모든 토큰을 소문자화하면 검색에 유용할 수 있다.

B. 불용어(stopword) 제거

the, and, a 같은 일반적인 단어를 걸러낸다. 이와 같이 흔하게 나타나는 단어는 대개 문장 구조에 의존하지 않는 어플리케이션에 가치가 별로 없다.

C. 확장(Expansion)

토큰 스트림에 동의어를 더하거나 두문자어(acronym)가 축약형(abbreviation)을 확장하면 어플리케이션이 사용자가 입력하는 여러 가지 대안 형태를 처리할 수 있다. 

D. 품사 태그 부착(품사 배정)

토큰에 품사를 배정한다.

E. 어간 추출

단어를 원형이나 기본형으로 줄인다. dogs가 dog가 되는 식이다.


3) 품사 배정

설명은 앞의 3번의 1)syntax C에 있다.


4) 어간 추출

5) 문장 탐지

6) 구문 분석과 문법

7) 시퀀스 모델링


출처

[1] 위키피디아

[2] 자연어 텍스트 처리를 통한 검색 시스템 구축(Grant Ingersoll, Thomas Morton, Drew Farris, 임혜연 옮김, 에이콘출판 2015)

+ Recent posts