어휘 분석
1. 개요
1. 개요
어휘 분석은 자연어 처리의 핵심적인 전처리 과정으로, 주어진 텍스트를 의미 있는 최소 단위인 토큰으로 분리하고, 각 토큰의 언어적 속성을 식별하는 작업이다. 이 과정은 컴파일러 설계에서 유래했으나, 현재는 정보 검색, 기계 번역, 맞춤법 검사기, 텍스트 마이닝, 음성 인식 등 다양한 자연어 처리 응용 분야의 기초를 이룬다.
분석의 대상은 단어, 구, 문장과 같은 텍스트의 구성 요소이며, 핵심 과정에는 텍스트를 토큰으로 나누는 토큰화, 각 토큰의 품사를 결정하는 품사 태깅, 그리고 텍스트에서 사람, 장소, 조직명 같은 고유 명사를 찾아내는 개체명 인식이 포함된다. 어휘 분석은 이후에 수행되는 형태소 분석, 구문 분석, 의미 분석과 같은 더 복잡한 언어 이해 작업을 위한 필수적인 토대를 제공한다.
2. 어휘 분석의 목적
2. 어휘 분석의 목적
어휘 분석의 주요 목적은 텍스트 데이터를 구조화된 정보로 변환하여 컴퓨터가 이해하고 처리할 수 있는 기초를 마련하는 것이다. 이 과정은 자연어 처리 시스템의 첫 번째 단계로, 원시 텍스트를 의미 있는 최소 단위로 분해하고 각 단위의 특성을 부여함으로써 후속 분석을 가능하게 한다.
구체적으로 어휘 분석은 토큰화를 통해 텍스트를 개별 단어나 구와 같은 토큰으로 나누고, 품사 태깅을 통해 각 토큰의 문법적 역할을 식별한다. 또한 개체명 인식을 수행하여 텍스트 내의 인명, 지명, 기관명 등을 찾아내는 것도 중요한 목적 중 하나이다. 이러한 처리 결과는 검색 엔진이 질의어를 이해하거나, 기계 번역 시스템이 원문을 해석하며, 맞춤법 검사기가 오류를 탐지하는 데 필수적인 입력값이 된다.
궁극적으로 어휘 분석은 텍스트의 표면적 형태를 넘어 그 내재된 의미와 구조를 파악하기 위한 초석을 제공한다. 이를 통해 텍스트 마이닝이나 음성 인식과 같은 고수준 인공지능 응용 프로그램이 정확하고 효율적으로 작동할 수 있도록 지원한다.
3. 어휘 분석 과정
3. 어휘 분석 과정
3.1. 토큰화
3.1. 토큰화
토큰화는 어휘 분석의 첫 번째 단계로, 입력된 텍스트를 의미 있는 최소 단위인 토큰으로 분리하는 과정이다. 이 과정은 연속된 문자열을 개별적인 요소로 나누어, 이후의 형태소 분석이나 구문 분석과 같은 고수준 처리를 위한 기초 데이터를 생성한다. 토큰은 일반적으로 단어, 숫자, 구두점 등이 될 수 있으며, 언어와 분석 목적에 따라 그 정의가 달라진다.
토큰화는 단순히 공백이나 구두점을 기준으로 텍스트를 분리하는 것처럼 보일 수 있으나, 실제로는 여러 난제를 포함한다. 예를 들어, 영어에서 "don't"는 "do"와 "not"으로 분리해야 할지, 하나의 토큰으로 유지해야 할지 결정해야 한다. 또한 "New York"이나 "ice cream"과 같은 복합명사는 하나의 토큰으로 처리하는 것이 의미 분석에 유리할 수 있다. 이러한 문제들은 사전 정의된 규칙이나 정규 표현식, 기계 학습 기반의 방법을 통해 해결된다.
토큰화의 정확도는 이후 모든 자연어 처리 작업의 성능에 직접적인 영향을 미친다. 잘못된 토큰화는 품사 태깅 오류를 유발하고, 의미 분석의 정확성을 떨어뜨리며, 최종적으로 기계 번역이나 정보 검색 시스템의 품질을 저하시킨다. 따라서 특정 언어의 문법적 특성과 도메인 지식을 반영한 정교한 토큰화 알고리즘 설계가 중요하다.
3.2. 어휘 요소 분류
3.2. 어휘 요소 분류
어휘 요소 분류는 토큰화 과정을 통해 생성된 개별 토큰에 대해 문법적 또는 의미적 범주를 부여하는 작업이다. 이는 단순히 단어를 분리하는 것을 넘어, 각 단위가 문장 내에서 어떤 역할을 하는지 식별하는 중요한 단계이다. 예를 들어, "사과"라는 토큰이 명사인지 동사인지, 또는 특정 개체명인지를 판별하는 것이 여기에 해당한다.
주요 분류 작업으로는 품사 태깅과 개체명 인식이 있다. 품사 태깅은 각 토큰에 명사, 동사, 형용사 등의 품사 정보를 부착하는 과정이다. 개체명 인식은 텍스트에서 사람, 장소, 조직, 시간, 금액 등 미리 정의된 범주의 고유 명사를 찾아내고 분류하는 기술이다. 이러한 분류는 이후 구문 분석이나 의미 분석과 같은 고수준의 자연어 처리 작업을 위한 기초 자료를 제공한다.
분류의 정확도는 처리하려는 언어의 특성과 사용된 알고리즘에 크게 의존한다. 영어와 같은 형태론적으로 단순한 언어에 비해 한국어나 일본어와 같이 교착어 특성을 가진 언어는 품사 태깅이 더 복잡한 과제가 될 수 있다. 따라서 효과적인 어휘 요소 분류를 위해서는 정교한 언어 모델과 규칙 기반의 접근법이 종합적으로 활용된다.
3.3. 불필요 요소 제거
3.3. 불필요 요소 제거
불필요 요소 제거는 토큰화 이후의 정제 단계로, 분석의 정확성과 효율성을 높이기 위해 텍스트에서 의미 있는 정보를 추출하는 데 기여하지 않는 요소들을 걸러내는 과정이다. 이 과정은 자연어 처리 파이프라인의 전처리 단계에서 중요한 역할을 한다.
주요 제거 대상으로는 불용어, 구두점, 특수 문자, HTML 태그 또는 마크업 언어 태그, 그리고 때로는 숫자나 매우 짧은 단어 등이 포함된다. 예를 들어, 영어에서 'the', 'a', 'is'와 같은 불용어는 문법적 구조에는 필요하지만 실제 의미 분석에는 큰 기여를 하지 않아 제거되는 경우가 많다. 정보 검색 시스템에서는 이러한 불필요 요소를 제거함으로써 색인의 크기를 줄이고 검색 속도와 관련성을 향상시킬 수 있다.
불필요 요소 제거는 도메인과 작업 목적에 따라 그 기준이 달라진다. 금융 문서 분석에서는 숫자와 통화 기호가 중요한 정보가 될 수 있으며, 의료 문서에서는 특정 약어나 기호를 보존해야 할 필요가 있다. 따라서 이 과정은 맥락을 고려한 유연한 규칙 기반 또는 기계 학습 기반의 방법으로 수행된다.
이 단계를 통해 정제된 토큰 집합은 이후 품사 태깅, 개체명 인식, 의미 분석과 같은 더 복잡한 자연어 처리 작업을 위한 깔끔한 입력 데이터로 제공된다.
4. 어휘 분석기의 구성 요소
4. 어휘 분석기의 구성 요소
4.1. 스캐너
4.1. 스캐너
스캐너는 어휘 분석기의 핵심 구성 요소로, 입력된 원시 텍스트나 소스 코드를 처음부터 끝까지 순차적으로 읽어들이는 역할을 한다. 이 과정에서 스캐너는 미리 정의된 어휘 규칙에 따라 문자들을 하나씩 검사하며, 의미 있는 최소 단위인 토큰의 경계를 식별한다. 스캐너의 동작은 단순히 문자를 읽는 것을 넘어, 공백, 탭, 줄바꿈과 같은 불필요한 요소를 건너뛰거나, 주석을 처리하는 작업도 포함한다.
스캐너의 설계는 정규 표현식과 유한 상태 오토마타를 기반으로 하는 경우가 많다. 정규 표현식은 토큰의 패턴을 정의하는 데 사용되며, 유한 상태 오토마타는 이러한 패턴을 인식하는 실제 실행 모델로 구현된다. 예를 들어, 프로그래밍 언어 컴파일러에서 스캐너는 "123"을 정수 토큰으로, "if"를 키워드 토큰으로 구분해낸다.
스캐너의 성능과 정확도는 전체 어휘 분석 과정의 효율성을 좌우한다. 잘 설계된 스캐너는 빠르게 입력을 처리하면서도 어휘 오류를 효과적으로 탐지할 수 있어, 후속 구문 분석 단계에 정제된 토큰 시퀀스를 안정적으로 제공한다. 이는 컴파일러뿐만 아니라 자연어 처리 시스템의 전처리 단계에서도 동일하게 중요하게 적용되는 원리이다.
4.2. 토큰
4.2. 토큰
토큰은 어휘 분석 과정에서 텍스트를 구성하는 최소의 의미 있는 단위를 가리킨다. 이는 컴파일러가 소스 코드를 처리할 때나 자연어 처리 시스템이 일반 텍스트를 분석할 때 생성되는 기본 구성 요소이다. 토큰은 단순히 단어만을 의미하지 않으며, 프로그래밍 언어에서는 키워드, 식별자, 연산자, 리터럴 등 다양한 종류의 어휘 요소가 토큰이 된다. 자연어에서는 일반적으로 공백이나 구두점으로 구분된 단어가 토큰의 기본 형태이지만, 형태소 분석을 통해 더 작은 의미 단위로 분리될 수도 있다.
토큰화 과정은 텍스트 마이닝이나 정보 검색 시스템의 첫 단계로, 입력된 원시 텍스트 문자열을 이러한 토큰들의 시퀀스로 변환한다. 예를 들어, "나는 학교에 간다"라는 문장은 ['나', '는', '학교', '에', '간다']와 같은 토큰 열로 분해된다. 이 과정에서 구두점이나 불필요한 공백이 제거되며, 대소문자 통일과 같은 정규화 작업이 함께 이루어지기도 한다. 생성된 토큰들은 이후 품사 태깅이나 개체명 인식과 같은 더 복잡한 언어 분석 작업의 입력값으로 사용된다.
토큰의 품질은 전체 언어 처리 파이프라인의 성능에 직접적인 영향을 미친다. 부정확한 토큰화는 의미 분석이나 기계 번역의 오류로 이어질 수 있다. 따라서 영어와는 달리 띄어쓰기 규칙이 복잡한 한국어나 중국어 같은 언어에서는 효과적인 토큰화를 위해 추가적인 언어 모델이나 사전 기반의 접근 방식이 필요하다. 최근에는 딥러닝 기반의 신경망 모델을 이용해 문맥을 고려한 정교한 토큰화를 수행하는 방법도 연구되고 있다.
4.3. 어휘 규칙
4.3. 어휘 규칙
어휘 규칙은 어휘 분석 과정에서 토큰을 식별하고 분류하기 위해 사용되는 형식적 규칙 또는 패턴의 집합이다. 이 규칙들은 스캐너가 소스 코드나 자연어 텍스트를 읽어들일 때, 어떤 문자열 조합이 유효한 토큰을 구성하는지, 그리고 그 토큰이 어떤 종류(예: 식별자, 숫자 상수, 연산자, 키워드)에 속하는지를 결정하는 기준을 제공한다.
주로 정규 표현식이나 유한 상태 오토마타와 같은 형식 언어 이론을 바탕으로 정의된다. 예를 들어, 대부분의 프로그래밍 언어에서 식별자 토큰은 "영문자 또는 밑줄로 시작하고, 그 뒤에 영문자, 숫자, 밑줄이 올 수 있다"는 규칙을 따른다. 마찬가지로 정수 토큰은 "하나 이상의 숫자로 구성된다"는 규칙을 가진다. 이러한 규칙들은 어휘 분석기의 설계 단계에서 명시되며, 컴파일러나 자연어 처리 시스템이 입력을 정확하게 해석하는 데 필수적이다.
어휘 규칙은 단순한 패턴 매칭을 넘어서, 특정 컨텍스트에서의 토큰 해석을 지시하는 역할도 할 수 있다. 예를 들어, 같은 기호('*')라도 C 언어에서 숫자 사이에 위치하면 곱셈 연산자 토큰이 되지만, 포인터 변수를 선언할 때는 역참조 연산자 토큰으로 해석된다. 이러한 모호성 해결은 종종 구문 분석 단계와의 협력을 필요로 하기도 한다. 잘 정의된 어휘 규칙은 분석의 정확도를 높이고, 오류 처리를 체계적으로 수행하는 데 기여한다.
5. 어휘 분석의 주요 기술
5. 어휘 분석의 주요 기술
5.1. 정규 표현식
5.1. 정규 표현식
어휘 분석에서 정규 표현식은 토큰을 식별하고 분류하기 위한 강력한 패턴 매칭 도구이다. 이는 특정한 규칙을 가진 문자열의 집합을 표현하는 형식 언어로, 스캐너나 어휘 분석기가 소스 코드나 텍스트에서 공백, 구두점, 연산자, 키워드, 식별자와 같은 기본적인 어휘 요소를 효율적으로 찾아내는 데 사용된다.
정규 표현식은 유한 상태 오토마타와 밀접한 관련이 있다. 실제로 대부분의 정규 표현식 엔진은 내부적으로 주어진 정규식을 유한 상태 오토마타로 변환하여 패턴 매칭을 수행한다. 이는 어휘 분석 과정의 자동화를 가능하게 하며, 컴파일러나 자연어 처리 시스템에서 복잡한 어휘 규칙을 간결하고 정확하게 정의할 수 있게 해준다.
주요 프로그래밍 언어의 어휘 분석기는 정규 표현식을 기반으로 구축되는 경우가 많다. 예를 들어, C 언어의 어휘 분석 규칙은 정규 표현식을 사용하여 숫자 상수, 문자열 리터럴, 주석 등을 명확히 기술할 수 있다. 이는 구문 분석 단계로 전달될 정확한 토큰 스트림을 생성하는 데 필수적이다.
5.2. 유한 상태 오토마타
5.2. 유한 상태 오토마타
어휘 분석에서 유한 상태 오토마타는 정규 표현식으로 정의된 어휘 규칙을 구현하는 핵심적인 수학적 모델이다. 이는 유한한 개수의 상태와 상태 간 전이로 구성되며, 입력 문자열을 한 문자씩 읽어가며 규칙에 부합하는 토큰을 인식하는 역할을 한다. 컴파일러의 어휘 분석기나 자연어 처리 시스템의 토크나이저는 내부적으로 이러한 오토마타를 사용하여 효율적으로 어휘 분석을 수행한다.
유한 상태 오토마타는 결정적 유한 오토마타와 비결정적 유한 오토마타로 구분된다. 결정적 오토마타는 주어진 상태와 입력 문자에 대해 다음 상태가 유일하게 결정되는 반면, 비결정적 오토마타는 여러 가능한 다음 상태를 가질 수 있다. 그러나 모든 비결정적 오토마타는 동등한 결정적 오토마타로 변환될 수 있으며, 실제 구현에서는 주로 결정적 유한 오토마타가 사용되어 분석의 효율성과 예측 가능성을 보장한다.
이 모델은 프로그래밍 언어의 키워드, 식별자, 연산자, 리터럴 같은 토큰을 인식하는 데 매우 적합하다. 예를 들어, 식별자를 인식하는 오토마타는 첫 글자가 알파벳 또는 밑줄인 상태에서 시작하여, 이후 알파벳이나 숫자가 입력되면 동일 상태를 유지하는 방식으로 설계된다. 이렇게 간단한 규칙들의 조합으로 복잡한 어휘 규칙을 체계적으로 처리할 수 있다.
6. 어휘 분석의 오류 처리
6. 어휘 분석의 오류 처리
어휘 분석 과정에서 발생하는 오류를 감지하고 처리하는 것은 시스템의 견고성과 정확성을 보장하는 데 중요하다. 오류는 주로 입력 텍스트의 모호성, 비표준적 표현, 또는 맞춤법 오류에서 비롯된다.
어휘 분석기의 오류 처리 방식은 크게 두 가지로 나뉜다. 첫째는 오류 복구 전략으로, 오류를 감지한 후 분석을 계속할 수 있도록 하는 방법이다. 예를 들어, 알 수 없는 단어(미등록어)를 만났을 때 이를 특별한 토큰(예: UNKNOWN)으로 분류하거나, 주변 문맥을 기반으로 가장 유사한 단어로 추정하는 방식을 사용한다. 둘째는 오류 보고 및 사용자 피드백을 통한 처리이다. 맞춤법 검사기나 통합 개발 환경(IDE)에서는 오류가 발생한 위치를 사용자에게 표시하고 수정 제안을 제공하는 방식이 일반적이다.
효과적인 오류 처리를 위해서는 어휘 규칙을 유연하게 설계하고, 정규 표현식 패턴에 예외 사항을 포함시키며, 유한 상태 오토마타에 오류 상태와 복구 경로를 명시적으로 정의해야 한다. 특히 자연어 처리에서는 방언, 신조어, 인터넷 속어와 같은 비정형 데이터를 다루어야 하므로 오류 처리 메커니즘의 중요성이 더욱 커진다.
7. 어휘 분석의 응용 분야
7. 어휘 분석의 응용 분야
7.1. 프로그래밍 언어 컴파일러
7.1. 프로그래밍 언어 컴파일러
어휘 분석은 프로그래밍 언어 컴파일러의 첫 번째 단계로, 소스 코드를 처리하는 데 필수적이다. 컴파일러는 고수준의 소스 코드를 기계가 이해할 수 있는 저수준의 코드로 변환하는데, 이 과정의 시작점이 바로 어휘 분석 단계이다. 이 단계에서는 프로그래머가 작성한 원시 소스 코드 텍스트를 읽어 가장 기본적인 의미 단위로 분해한다.
어휘 분석의 핵심 작업은 토큰화이다. 소스 코드는 연속된 문자열로 이루어져 있지만, 컴파일러는 이를 공백, 줄바꿈, 탭과 같은 구분자로 나누어 개별적인 토큰으로 분리한다. 예를 들어, int result = value + 10;이라는 코드는 int, result, =, value, +, 10, ;과 같은 토큰 시퀀스로 변환된다. 이때 토큰은 단순한 문자열이 아니라, 해당 문자열의 종류를 나타내는 정보(예: 키워드, 식별자, 연산자, 리터럴)와 함께 저장된다.
이렇게 생성된 토큰들은 이후 구문 분석 단계로 전달된다. 구문 분석기는 어휘 분석기가 제공한 토큰 스트림을 입력으로 받아, 프로그래밍 언어의 문법 규칙에 따라 토큰들의 구조적 관계를 파악하고 추상 구문 트리를 생성한다. 따라서 어휘 분석은 정확한 토큰을 생성하지 않으면 이후의 모든 컴파일 과정에 오류를 전파하게 되므로, 컴파일러의 정확성과 신뢰성의 기초를 형성한다고 볼 수 있다.
어휘 분석은 주로 정규 표현식과 유한 상태 오토마타를 기반으로 구현된다. 컴파일러 설계자는 언어의 어휘 규칙(예: 식별자는 문자로 시작해야 함, 숫자 리터럴의 형식)을 정규 표현식으로 정의하고, 이를 유한 상태 오토마타로 변환하여 효율적인 토큰 인식기를 만든다. 이는 인터프리터와 같은 다른 언어 처리기에서도 동일하게 적용되는 기본 원리이다.
7.2. 자연어 처리
7.2. 자연어 처리
자연어 처리에서 어휘 분석은 인간의 언어인 자연어로 구성된 텍스트를 컴퓨터가 이해하고 처리할 수 있는 기본 단위로 분해하는 핵심적인 전처리 과정이다. 이는 프로그래밍 언어를 위한 어휘 분석과 목적은 유사하지만, 훨씬 더 복잡하고 모호한 자연어의 특성을 다루어야 한다는 점에서 차이가 있다. 주요 목표는 텍스트 데이터에서 의미 있는 정보를 추출하는 기초를 마련하는 것이다.
자연어 처리에서의 어휘 분석은 일반적으로 토큰화, 형태소 분석, 품사 태깅 등의 과정을 포함한다. 토큰화는 텍스트를 단어, 구두점 등의 개별 토큰으로 나누는 작업이다. 영어에서는 공백을 기준으로 비교적 쉽게 수행되지만, 한국어나 중국어처럼 띄어쓰기가 명확하지 않거나 없는 언어에서는 추가적인 분석이 필요하다. 형태소 분석은 각 토큰을 더 작은 의미 단위인 형태소로 분리하고, 그 품사와 같은 문법적 정보를 부착하는 과정이다. 예를 들어, '했습니다'를 '하-'(동사 어간), '-았-'(과거 시제), '-다'(종결 어미)로 분석하는 것이 이에 해당한다.
이러한 분석 결과는 다양한 자연어 처리 응용 분야의 기초 데이터로 활용된다. 검색 엔진은 사용자의 질의어를 토큰화하고 형태소 분석하여 관련 문서를 효율적으로 찾는다. 기계 번역 시스템은 원문 텍스트를 정확히 분석해야 올바른 번역을 생성할 수 있다. 또한, 맞춤법 검사기, 감정 분석, 텍스트 요약, 챗봇과 같은 기술들도 모두 정밀한 어휘 분석을 바탕으로 구축된다. 특히 개체명 인식은 어휘 분석의 확장으로, 텍스트에서 사람, 장소, 조직명 같은 고유 명사를 식별하는 중요한 작업이다.
따라서 자연어 처리에서 어휘 분석의 정확도는 이후의 구문 분석이나 의미 분석 등 고수준 언어 이해 작업의 성능을 직접적으로 좌우하는 핵심 요소이다. 언어의 복잡성과 모호성을 극복하기 위해 통계적 모델과 인공지능 기반의 딥러닝 기술이 어휘 분석 과정에 광범위하게 적용되고 있다.
7.3. 정보 검색
7.3. 정보 검색
정보 검색 분야에서 어휘 분석은 사용자의 질의어와 문서 데이터베이스 내 텍스트를 처리하는 핵심 전처리 단계이다. 검색 엔진은 사용자가 입력한 검색어와 방대한 문서 집합을 효과적으로 매칭시키기 위해, 양쪽의 텍스트를 모두 표준화된 토큰 단위로 분해한다. 이 과정에는 토큰화를 통해 문장을 단어나 어절로 나누는 작업과, 불용어 제거, 어간 추출 또는 표제어 추출을 통한 단어 정규화가 포함된다. 예를 들어, "running", "runs", "ran"과 같은 다양한 형태의 단어를 공통의 기본형 "run"으로 환원함으로써 검색의 재현율을 높인다.
고급 정보 검색 시스템은 어휘 분석을 넘어 품사 태깅이나 개체명 인식과 같은 자연어 처리 기술을 접목하여 검색의 정밀도를 향상시킨다. 이를 통해 검색어 "Apple"이 과일인지 기업인지를 문맥에 따라 구분하거나, 특정 인물, 장소, 날짜와 같은 개체명을 정확히 인지하여 관련 문서를 찾아낼 수 있다. 또한, 동의어 확장이나 의미망을 활용한 의미 기반 검색의 기초 작업으로도 어휘 분석이 활용된다.
이러한 처리 결과는 역색인이라는 자료 구조를 생성하는 데 직접적으로 기여한다. 역색인은 각 토큰(단어)이 등장하는 모든 문서의 목록을 저장하는데, 효율적인 역색인 구축을 위해서는 일관되고 정제된 토큰이 필수적이다. 따라서 어휘 분석의 정확성과 일관성은 전체 검색 시스템의 성능과 사용자 경험에 지대한 영향을 미치는 핵심 요소로 평가된다.
8. 어휘 분석과 구문 분석의 관계
8. 어휘 분석과 구문 분석의 관계
어휘 분석은 구문 분석과 밀접하게 연결된 전처리 단계이다. 컴파일러나 자연어 처리 시스템에서 어휘 분석은 원시 텍스트나 소스 코드를 토큰이라는 의미 있는 최소 단위로 분해하는 역할을 한다. 이렇게 생성된 토큰 스트림은 이후 단계인 구문 분석기의 입력으로 사용되어, 토큰들의 구조적 관계와 문법적 정확성을 규칙에 따라 검증하고 파스 트리를 구성한다.
즉, 어휘 분석은 '단어' 수준의 분석을 담당하고, 구문 분석은 이 단어들이 모여 어떻게 '문장'을 이루는지 그 구조를 분석한다. 예를 들어, 프로그래밍 언어에서 어휘 분석기는 "if", "(", "x", ">", "5", ")"와 같은 토큰을 생성하고, 구문 분석기는 이 토큰들이 if (x > 5)라는 유효한 조건문 구문을 형성하는지 확인한다. 이 두 과정은 파싱이라는 더 큰 과정의 연속된 단계를 이루며, 어휘 분석 없이는 구문 분석을 시작할 수 없다.
이러한 관계 때문에 어휘 분석기의 설계는 구문 분석기의 요구사항에 크게 의존한다. 구문 분석기가 인식해야 할 예약어, 연산자, 식별자 등의 패턴을 정의하는 어휘 규칙은 결국 해당 언어의 문법 규칙과 맞물려 있다. 따라서 효율적인 언어 처리 파이프라인을 구축하기 위해서는 두 모듈 간의 명확한 인터페이스(토큰 스트림)와 역할 분담이 필수적이다.
