밋은 최대한 하나의 작업 단위로 수행한다. merge하기 전에 팀원들에게 알리기 - 먼저 올린 순서대로 진행하기 - 혹시라도 충돌나면 협의 후 진행하기 각 기능별 branch 만들기 dev branch 만들기10:20 상수: UPPER_CASE / 변수, 함수, 메소드: camelCase / 클래스, Exception: PascalCase .pretteirrc { "singleQuote": true, "semi": true, "useTabs": false, "tabWidth": 2, "trailingComma": "all", "printWidth": 80, "bracketSpacing": true } .gitignore / .env git commit 내용 ⇒ feat: 기능 구현 내용
자연어 처리의 가장 기본적인 단계 중 하나로, 텍스트를 의미있는 단위인 '토큰'으로 분리하는 과정이다.
토큰은 보톤 단어나 문장을 의미하며, 이 단위를 통해 컴퓨터는 텍스트를 처리하고 분석할 수 있게 된다. 컴퓨터는 이진수로 통신을 하는데 인간이 쓰는 텍스트 데이터를 컴퓨터가 처리할 수 있게 만들려면 텍스트를 숫자로 변환하는 과정이 필요하다. 이때 토큰화과정이 중요한 역할을 하는데 예를들어 [This, book, ..., learners] 와 같은 토큰들이 담긴 배여로 결과가 나왔을 때 'This', 'book' 과 같은 토큰들은 각각의 시퀀스 ID로 변환이 될 것이다. 이렇게 변환이 된 데이터는 컴퓨터가 처리할 수 있는 형태가 되며 이를 바탕으로 컴퓨터는 텍스트 데이터를 분석하거나 모델을 학습하는 등의 작업을 수행할 수 있게 된다.
하지만 이것만으로는 언어의 의미나 문맥을 완전히 이해하긴 어렵기 때문에 word embedding이나, transformer 와 같은 기술들이 활용되어야 한다. 이러한 기술들은 토큰화된 간어들 사이의 관계를 학습하거나 문맥을 고려한 단어의 표현을 학습하게 도와준다.
2. 어휘분석
어휘분석에서 사용하는 대표적 기술로 '형태소 분석' 이 있는데 다어를 더이상 분리할 수 없는 형태소로 나눈 뒤 각 형태소의 품사를 결정한다. 왜냐면 품사는 단어가 문장 내에서 어떤 역할을 하는지를 나타내기 때문에 이를 기반으로 문장의 구조를 이해해야 하기 때문 아래의 이미지를 보면 주어, 명사, 목적어, 수식어, 부사어등으로 형태소의 성격을 결정한다. [온라인 형태소분석기 참조] https://bareun.ai/demo
3. 파싱(구문분석)
파싱이란 NLP뿐만 아니라 프로그래밍을 하다보면 자주 볼수있는 단어인데 여기서의 파싱은 문장의 문법적 구조를 분석하는 과정을 뜻한다. 문장 내의 단어들이 어떻게 서로 관계를 맺고 있는지를 이해하는데 사용되며, GPT의 근간이 되는 기술인 transformer 모델로 분석할 수 있다.
트랜스포머 모델은 self-attention 매커니즘을 활용해서 문장 내의 모든 단어들사이의 관계를 학습하는데 이를 통해 cat이 sat의 주어이고, on the mat이 sat의 목적어임을 학습할 수 있다.
self-attention 메커니즘의 핵심은 문장 내의 각 단어가 다른 모든단어에 '주의'를 기울인다는 것이다. 즉, 각 단어는 문장 내의 다른 모든 단어와의 관계를 고려하여 새로운 단어 벡터를 생성하고, 이를통해 문장 내의 단어들 사이의 복잡한 상호작용을 학습할 수 있다.
위에 나온 'The cat sat on the mat' 이라는 문장에서 각 단어는 임의의 초기 벡터를 가진다.
예를들어 'cat' 이라는 단어의 초기 백터가 [0.1, 0.3, 0.7] 라고 할 때, 해당 'cat' 이라는 단어는 'The', 'sat' 과 같은 자신을 제외한 모든 단어들을 attention score(단어간 유사성)라는 점수 기준으로 계산하여 새로운 단어 벡터생성을 한다.
그래서 나온 백터값이 [0.2, 0.5, 0.8]라고 하면 이 벡터 자체로 문장 내의 다른 단어들과의 관계르 반영하게 되는것