[NLP] 3. Natural Language Preprocessing
์๋ณธ ๊ฒ์๊ธ: https://velog.io/@euisuk-chung/NLP-3.-์์ฐ์ด-์ ์ฒ๋ฆฌ-๊ธฐ
์์ฐ์ด ์ฒ๋ฆฌ์ ์ผ๋ฐ์ ์ธ ์์
- ์์ฐ์ด ์ฒ๋ฆฌ๋ ์์ฑ์ ํ ์คํธ๋ก ๋ณํํ๊ณ , ํด๋น ํ ์คํธ๋ฅผ ๋ถ์ ๋ฐ ์๋ฏธ๋ฅผ ์ถ์ถํ ๋ค, ์ด๋ฅผ ๋ค์ ์์ฑ์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ ํฌํจํฉ๋๋ค. (์๋ ๊ทธ๋ฆผ ์ฐธ๊ณ )
- ์ด ๊ณผ์ ์ ํฌ๊ฒ STT(Speech to Text)์ TTS(Text to Speech)๋ก ๋๋ฉ๋๋ค.
1.1 ์์ฐ์ด ์ฒ๋ฆฌ์ ์ฃผ์ ๋ถ์ผ
- ์์ด๋ก , ํํ๋ก , ๊ตฌ๋ฌธ๋ก , ์๋ฏธ๋ก , ํ์ฉ๋ก , ๋ด๋ก ๊ณผ ๊ฐ์ Classical Categorization์ ์์ฐ์ด ์ฒ๋ฆฌ๋ฅผ ์ฐ๊ตฌํ๊ณ ์์ฉํ๋ ๋ฐ ์์ด์ ์ธ์ด์ ๊ฐ ์ธก๋ฉด์ ๋ถ์ํ๊ณ ์ดํดํ๋ ๋ค์ํ ์์ค์ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฅํ ๊ฒ์ ๋๋ค.
- ์ด๋ฌํ ๋ถ๋ฅ๋ ๊ฐ๊ฐ์ ์ธ์ด์ ํ์์ ๊ฐ๋ณ์ ์ผ๋ก ๋ค๋ฃจ๊ณ , ๊ฐ ํ์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ฐ๊ตฌํ๋๋ฐ ์ค์ ์ ๋ก๋๋ค. ์ด๋ฅผ ํตํด ๋ณต์กํ ์์ฐ์ด๋ฅผ ๋ค์ํ ์ธต์์์ ์ฒด๊ณ์ ์ผ๋ก ๋ถ์ํ ์ ์์ต๋๋ค.
-
์์ด๋ก (Phonology):
- ๊ธฐ์ค: ์๋ฆฌ์ ๊ด๋ จ๋ ์ธ์ด์ ํ์
- ์ค๋ช : ์์ด๋ก ์ ์ธ์ด์ ์๋ฆฌ ์ฒด๊ณ์ ์์(phoneme)๋ฅผ ์ฐ๊ตฌํฉ๋๋ค. ์์ฐ์ด ์ฒ๋ฆฌ์์๋ ์์ฑ์ ํ ์คํธ๋ก ๋ณํํ๊ฑฐ๋, ์์ฑ ์ธ์ ์์คํ ์ ๊ฐ๋ฐํ ๋ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
-
ํํ๋ก (Morphology):
- ๊ธฐ์ค: ๋จ์ด์ ๊ตฌ์กฐ์ ํ์ฑ
- ์ค๋ช : ํํ๋ก ์ ๋จ์ด์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ฐ๊ตฌํ๋ฉฐ, ๋จ์ด๋ฅผ ์๋ฏธ ์๋ ๋จ์(morpheme)๋ก ๋ถํดํ๋ ์์ ์ ํฌํจํฉ๋๋ค. ์์ฐ์ด ์ฒ๋ฆฌ์์๋ ํํ์ ๋ถ์(morphological analysis) ๋ฐ ํํ์ ๊ธฐ๋ฐ ํ ํฐํ(tokenization)์ ํ์ฉ๋ฉ๋๋ค.
-
๊ตฌ๋ฌธ๋ก (Syntax):
- ๊ธฐ์ค: ๋ฌธ์ฅ ๊ตฌ์กฐ์ ๋ฌธ๋ฒ ๊ท์น
- ์ค๋ช : ๊ตฌ๋ฌธ๋ก ์ ๋จ์ด๋ค์ด ๊ฒฐํฉ๋์ด ๋ฌธ์ฅ์ ์ด๋ฃจ๋ ๊ท์น์ ์ฐ๊ตฌํฉ๋๋ค. ์์ฐ์ด ์ฒ๋ฆฌ์์๋ ๋ฌธ์ฅ ๊ตฌ๋ฌธ ๋ถ์(parsing)์ ํตํด ๋ฌธ๋ฒ์ ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๋ฌธ์ฅ์ ๋ถ์ํ๊ณ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
-
์๋ฏธ๋ก (Semantics):
- ๊ธฐ์ค: ์๋ฏธ์ ํด์
- ์ค๋ช : ์๋ฏธ๋ก ์ ๋จ์ด, ๊ตฌ, ๋ฌธ์ฅ์ ์๋ฏธ๋ฅผ ์ฐ๊ตฌํฉ๋๋ค. ์์ฐ์ด ์ฒ๋ฆฌ์์๋ ํ ์คํธ์ ์๋ฏธ๋ฅผ ์ถ์ถํ๊ณ , ๋ฌธ๋งฅ์ ์ดํดํ๋ฉฐ, ์๋ฏธ ๊ธฐ๋ฐ ๊ฒ์ ๋ฐ ์ง์์๋ต ์์คํ ์ ํ์ฉ๋ฉ๋๋ค.
-
ํ์ฉ๋ก (Pragmatics):
- ๊ธฐ์ค: ์ธ์ด ์ฌ์ฉ์ ๋งฅ๋ฝ๊ณผ ๋ชฉ์
- ์ค๋ช : ํ์ฉ๋ก ์ ์ธ์ด๊ฐ ์ค์ ์ํฉ์์ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง๋ฅผ ์ฐ๊ตฌํฉ๋๋ค. ์์ฐ์ด ์ฒ๋ฆฌ์์๋ ๋ํ ์์คํ , ์ฑ๋ด ๋ฑ์์ ์ฌ์ฉ์์ ์๋๋ฅผ ํ์ ํ๊ณ ์ ์ ํ ์๋ต์ ์์ฑํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
-
๋ด๋ก (Discourse):
- ๊ธฐ์ค: ๋ฌธ์ฅ ๊ฐ์ ๊ด๊ณ์ ๋งฅ๋ฝ
- ์ค๋ช : ๋ด๋ก ์ ๋ฌธ์ฅ๋ค์ด ๊ฒฐํฉ๋์ด ๋ ํฐ ํ ์คํธ๋ ๋ํ๋ฅผ ํ์ฑํ๋ ๋ฐฉ์์ ์ฐ๊ตฌํฉ๋๋ค. ์์ฐ์ด ์ฒ๋ฆฌ์์๋ ํ ์คํธ ์์ฝ, ๋ฌธ์ ๋ถ๋ฅ, ๋ํ์ ์ผ๊ด์ฑ ์ ์ง ๋ฑ์ ์ ์ฉ๋ฉ๋๋ค.
1.2 ์ฐ๋ฆฌ๋ ์ง๊ธ ์ด๋ ๋จ๊ณ์ธ๊ฐ?
- ํ์ฌ ์์ฐ์ด ์ฒ๋ฆฌ(NLP)์ ๋ฐ์ ์์ค์ ํ๊ฐํ ๋, ์์ด๋ก , ํํ๋ก , ๊ตฌ๋ฌธ๋ก , ์๋ฏธ๋ก , ํ์ฉ๋ก , ๋ด๋ก ์ 6๊ฐ์ง ์์ญ์์ ๊ฐ๊ฐ์ ์ฑ๊ณผ๋ฅผ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
-
๊ฐ๊ฐ์ ์์ญ์์ ํ์ฌ ๊ธฐ์ ์ด ์ด๋ ์ ๋ ์ฑ์๋์๋์ง ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
1. ์์ด๋ก (Phonology)
- ์์ฑ ์ธ์(Speech Recognition): ๋งค์ฐ ๋์ ์ ํ๋๋ก ์์ฑ์ ํ ์คํธ๋ก ๋ณํํ๋ ๊ธฐ์ ์ด ๊ฐ๋ฐ๋์์ต๋๋ค.
- ํ ์คํธ ์์ฑ ๋ณํ(Text-to-Speech): ์์ฐ์ค๋ฌ์ด ์์ฑ์ ์์ฑํ๋ TTS ๊ธฐ์ ๋ ์๋นํ ๋ฐ์ ํ์ต๋๋ค. DeepMind์ WaveNet๊ณผ ๊ฐ์ ๋ชจ๋ธ์ด ๊ทธ ์์ ๋๋ค.
- ์์ค: ๋งค์ฐ ๋ฐ์ ๋์ด ์ค์ฉํ ๋จ๊ณ.
- ์์ฉํ ์์: Siri, Google Assistant, Amazon Alexa ๋ฑ์ ์์ฑ ๋น์ ๊ธฐ๋ฅ
2. ํํ๋ก (Morphology)
- ํํ์ ๋ถ์(Morphological Analysis): ํํ์ ๋ถ์๊ธฐ์ ํ ํฌ๋์ด์ (tokenizer)๊ฐ ๋ค์ ๊ฐ๋ฐ๋์์ผ๋ฉฐ, ํ๊ตญ์ด, ์ผ๋ณธ์ด, ํ๋๋์ด ๋ฑ ํํ๊ฐ ๋ณต์กํ ์ธ์ด์์๋ ๋์ ์ฑ๋ฅ์ ๋ณด์ ๋๋ค.
- ์์ค: ์ฑ์ ๋จ๊ณ๋ก, ๋ค์ํ ์ธ์ด์ ๋ํด ๋์ ์ ํ๋๋ฅผ ๋ณด์.
- ์์ฉํ ์์: Grammarly, Microsoft, ํ์ปด ๋ฑ์ ๋ง์ถค๋ฒ ๊ฒ์ฌ ๊ธฐ๋ฅ
3. ๊ตฌ๋ฌธ๋ก (Syntax)
- ๊ตฌ๋ฌธ ๋ถ์(Parsing): ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ CFG, PCFG, Dependency Parsing ๋ฑ ๋ค์ํ ๋ฐฉ์์ผ๋ก ๋ฐ์ ๋์ด ์์ต๋๋ค. ์ต๊ทผ์๋ BERT, GPT ๋ฑ Transformer ๊ธฐ๋ฐ ๋ชจ๋ธ๋ค์ด ๊ตฌ๋ฌธ ๋ถ์์์๋ ์ข์ ์ฑ๊ณผ๋ฅผ ๋ณด์ด๊ณ ์์ต๋๋ค.
- ์์ค: ์ค์ฉํ ๋จ๊ณ๋ก, ๋ง์ NLP ์์ฉ์์ ํ์ฉ ๊ฐ๋ฅ.
- ์ฌ์ฉํ ์์: Stanford Parser, spaCy, NLTK ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๐คStanford Parser, spaCy, NLTK?
Stanford Parser
:
- Stanford ๋ํ์์ ๊ฐ๋ฐํ ์์ฐ์ด ๊ตฌ๋ฌธ ๋ถ์๊ธฐ์ ๋๋ค.
- ๋ค์ํ ์ธ์ด(์์ด, ์ค๊ตญ์ด, ์๋์ด, ๋ ์ผ์ด, ํ๋์ค์ด, ์คํ์ธ์ด ๋ฑ)์ ๋ํ ๊ตฌ๋ฌธ ๋ถ์์ ์ง์ํฉ๋๋ค.
- ๊ตฌ์ฑ์ฑ๋ถ ๋ถ์(constituency parsing)๊ณผ ์์กด ๊ตฌ๋ฌธ ๋ถ์(dependency parsing)์ ๋ชจ๋ ์ ๊ณตํฉ๋๋ค.
- PCFG(Probabilistic Context-Free Grammar), Shift-Reduce, Neural Network ๊ธฐ๋ฐ์ ์์กด ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ฅผ ํฌํจํฉ๋๋ค.
- ์คํ ์์ค๋ก ์ ๊ณต๋๋ฉฐ, ๋น์์ ์ ์ฉ๋๋ก๋ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
spaCy
:
- ์ฐ์ ์ฉ ๊ฐ๋์ ์์ฐ์ด ์ฒ๋ฆฌ๋ฅผ ์ํ Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- ํ ํฐํ, ํ์ฌ ํ๊น , ๊ฐ์ฒด๋ช ์ธ์, ์์กด ๊ตฌ๋ฌธ ๋ถ์ ๋ฑ ๋ค์ํ NLP ์์ ์ ์ง์ํฉ๋๋ค.
- ๋น ๋ฅธ ์ฒ๋ฆฌ ์๋์ ๋์ ์ ํ๋๋ก ์๋ ค์ ธ ์์ต๋๋ค.
- ์ฌ์ ํ๋ จ๋ ๋ชจ๋ธ์ ์ ๊ณตํ์ฌ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ค๊ตญ์ด ์ง์์ ์ ๊ณตํฉ๋๋ค.
NLTK (Natural Language Toolkit)
:NLTK๋ ๊ต์ก๊ณผ ์ฐ๊ตฌ ๋ชฉ์ ์ผ๋ก ์ค๊ณ๋์์ผ๋ฉฐ, ๋ค์ํ NLP ์์ ์ ์ง์ํฉ๋๋ค.
- ํ ํฐํ: ๋ฌธ์ฅ๊ณผ ๋จ์ด ๋จ์๋ก ํ ์คํธ๋ฅผ ๋ถํ ํฉ๋๋ค.
- ํ์ฌ ํ๊น : ๊ฐ ๋จ์ด์ ๋ํด ํ์ฌ ์ ๋ณด๋ฅผ ๋ถ์ฌํฉ๋๋ค.
- ๊ตฌ๋ฌธ ๋ถ์: ๊ตฌ์ฑ์ฑ๋ถ ๋ถ์๊ณผ ์์กด ๊ตฌ๋ฌธ ๋ถ์์ ์ง์ํฉ๋๋ค.
- ์ดํ ์์: WordNet๊ณผ ๊ฐ์ ์ดํ ์์์ ํฌํจํ์ฌ ๋จ์ด์ ์๋ฏธ๋ฅผ ๋ถ์ํฉ๋๋ค.
- ํ ์คํธ ์ ์ฒ๋ฆฌ: ๋ถ์ฉ์ด ์ ๊ฑฐ, ์ด๊ฐ ์ถ์ถ, ํ์ ์ด ์ถ์ถ ๋ฑ ๋ค์ํ ์ ์ฒ๋ฆฌ ์์ ์ ์ง์ํฉ๋๋ค.
4. ์๋ฏธ๋ก (Semantics)
- ์๋ฏธ ๋ถ์(Semantic Analysis): ๋จ์ด ์๋ฒ ๋ฉ(word embedding), ๋ฌธ์ฅ ์๋ฒ ๋ฉ ๋ฑ์ ๊ธฐ์ ์ด ๋ฐ์ ํ๋ฉด์ ๋ฌธ์ฅ์ ์๋ฏธ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ถ์ถํ ์ ์๊ฒ ๋์์ต๋๋ค. BERT, GPT-3 ๊ฐ์ ๋ํ ์ธ์ด ๋ชจ๋ธ๋ค์ด ๋ฌธ๋งฅ์ ์ดํดํ๊ณ ์ ์ ํ ์๋ต์ ์์ฑํ๋ ๋ฅ๋ ฅ์ ๋ณด์ ํ๊ณ ์์ต๋๋ค.
- ์์ค: ๋งค์ฐ ๋ฐ์ ๋ ๋จ๊ณ๋ก, ์ค์ํ ์์ฉ์์ ํ์ฉ ์ค.
- ์ฌ์ฉํ ์์: Word2Vec, BERT, GPT ๋ฑ์ ์ธ์ด ๋ชจ๋ธ
5. ํ์ฉ๋ก (Pragmatics)
- ๋ํ ์์คํ (Dialogue Systems): ์ฌ์ฉ์ ์๋๋ฅผ ์ดํดํ๊ณ ์ ์ ํ ์๋ตํ๋ ์ฑ๋ด๊ณผ ๋ํ ์์ด์ ํธ๊ฐ ํ๋ฐํ ์ฐ๊ตฌ๋๊ณ ์์ต๋๋ค. ์ค์ ์์ฉ ์ ํ๋ค๋ ๋ฑ์ฅํ์ง๋ง, ์์ง ์๋ฒฝํ์ง๋ ์์ต๋๋ค.
- ๋งฅ๋ฝ ์ดํด(Context Understanding): ์ํฉ์ ๋ง๋ ์ ์ ํ ์ธ์ด ์ฌ์ฉ์ ์ดํดํ๋ ๋ฐ ์์ด ์ ํ์ ์ธ ์ฑ๊ณผ๋ฅผ ๋ณด์ด๊ณ ์์ต๋๋ค.
- ์์ค: ๋ฐ์ ์ค, ์๋นํ ๊ฐ์ ์ฌ์ง ์์
- ์ฌ์ฉํ ์์: ์ฑ๋ด, ๊ณ ๊ฐ ์๋น์ค ์๋ํ ์์คํ
6. ๋ด๋ก (Discourse)
- ํ ์คํธ ์ผ๊ด์ฑ(Text Coherence): ๊ธด ๋ฌธ๋งฅ์ ์ ์งํ๊ณ ์ผ๊ด์ฑ ์๋ ํ ์คํธ๋ฅผ ์์ฑํ๋ ๋ฅ๋ ฅ์ด ํฅ์๋์์ต๋๋ค. GPT-3์ ๊ฐ์ ๋ชจ๋ธ๋ค์ด ๊ธด ๋ฌธ์ ์์ฑ์์ ์ข์ ์ฑ๊ณผ๋ฅผ ๋ณด์ด๊ณ ์์ต๋๋ค.
- ๋ด๋ก ๋ถ์(Discourse Analysis): ๋ฌธ์ฅ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ดํดํ๊ณ , ์ผ๊ด๋ ๋ํ๋ฅผ ์ ์งํ๋ ๋ฐ์๋ ์์ง ํ๊ณ๊ฐ ์์ต๋๋ค.
- ์์ค: ์ด๊ธฐ ๋จ๊ณ, ๋ง์ ๊ฐ์ ํ์
- ์ฌ์ฉํ ์์: ์๋ ์์ฝ ๋๊ตฌ, ๋ํํ AI ์์คํ
๐ ์ฑ๋ด vs ๋ํํ ์ฑ๋ด, ๋ฌด์์ด ๋ค๋ฅธ๊ฐ?
์ฑ๋ด๊ณผ ๋ํํ AI์ ์ฐจ์ด์ ์ ์ดํดํ๊ธฐ ์ํด ๋ ๊ธฐ์ ์ ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ๊ธฐ์ ์ ์ฃผ์ ์ฐจ์ด์ ์ ์ ๋ฆฌํฉ๋๋ค.
์ฑ๋ด (Chatbots) ๐ฃ๏ธ
- ๊ธฐ๋ฐ ๊ธฐ์ : ๊ท์น ๊ธฐ๋ฐ(rule-based) ๋๋ ์ฌ์ ์ ์ ์๋ ์คํฌ๋ฆฝํธ(predefined scripts)๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์ง์๋ ๋ช ๋ น์ ์๋ตํฉ๋๋ค.
- ์ดํด ๋ฅ๋ ฅ: ์์ฐ์ด๋ฅผ ์ดํดํ๊ณ ์์ฑํ๋ ๋ฅ๋ ฅ์ด ์ ํ์ ์ด๋ฉฐ, ๋ณต์กํ ๋ํ๋ฅผ ์ ์ฒ๋ฆฌํ์ง ๋ชปํฉ๋๋ค.
- ์๋ต ๋ฐฉ์: ํน์ ์ ๋ ฅ์ ๋ํด ๋ฏธ๋ฆฌ ์ ์๋ ์๋ต์ ์ ๊ณตํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค.
- ์ ์ฉ ๋ถ์ผ: ์ฃผ๋ก ๊ณ ๊ฐ ์ง์, FAQ, ๊ฐ๋จํ ์ ๋ณด ์ ๊ณต ๋ฑ์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ํํ AI (Conversational AI) ๐๏ธ
- ๊ธฐ๋ฐ ๊ธฐ์ : ์์ฐ์ด ์ฒ๋ฆฌ(NLP), ๋จธ์ ๋ฌ๋(ML), ์ธ๊ณต์ง๋ฅ(AI) ๋ฑ์ ๋ค์ํ ๊ธฐ์ ์ ํฌํจํ๋ ๋์ ๋ฒ์์ ๊ธฐ์ ์ ๋๋ค. ์ด๋ฅผ ํตํด ๊ธฐ๊ณ๊ฐ ์์ฐ์ด๋ก ์ธ๊ฐ๊ณผ ๊ฐ์ ์๋ต์ ์ดํดํ๊ณ , ์ฒ๋ฆฌํ๋ฉฐ, ์์ฑํ ์ ์์ต๋๋ค.
- ์ดํด ๋ฅ๋ ฅ: ๋ ๋ฐ์ ๋ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๋ฌธ๋งฅ, ๊ฐ์ , ์ธ์ด์ ๋ฏธ๋ฌํ ์ฐจ์ด๋ฅผ ์ดํดํ๊ณ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ์๋ต ๋ฐฉ์: ์ํธ์์ฉ์์ ํ์ตํ๊ณ , ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ๋ผ ์ ์ํ๋ฉฐ, ๋ ๋ณต์กํ๊ณ ๋์ ์ธ ๋ํ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ์ ์ฉ ๋ถ์ผ: ๊ณ ๊ฐ ์ง์, ๋น์ฆ๋์ค ํ๋ก์ธ์ค ์๋ํ, ๊ฐ์ธ ๋น์, ๋ณต์กํ ์ง์์๋ต ์์คํ ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ฌ์ฉ๋ฉ๋๋ค.
-
ํ์ฌ NLP ๊ธฐ์ ์ ๋ฐ์ ๋จ๊ณ๋
4~5 ์์ญ
์ ๊ฑธ์ณ ์์ผ๋ฉฐ, ๊ฐ ์์ญ์์ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๋ณด์ ๋๋ค:-
์๋ฏธ๋ก (Semantics)
์์ญ์์๋ ์๋นํ ์ง์ ์ ์ด๋ฃจ์ด ์ค์ฉ์ ์ธ ์์ค์ ๋๋ฌํ์ง๋ง, ์ฌ์ ํ ์ธ๊ฐ ์์ค์ ์ดํด์ ํด์์๋ ๋ฏธ์น์ง ๋ชปํฉ๋๋ค.- ๊ณผ์ : ๋ณต์กํ ์ถ๋ก , ์์์ ์ดํด, ์์ ํด์ ๋ฑ์์ ์ฌ์ ํ ๊ฐ์ ์ด ํ์ํฉ๋๋ค.
-
ํ์ฉ๋ก (Pragmatics)
์์ญ์ ์๋ฏธ๋ก ๋ณด๋ค๋ ๋ ๋ฐ์ ํ์ง๋ง, ์ค์ ์์ฉ ๋ถ์ผ์์ ์ ์ฐจ ํ์ฉ๋๊ณ ์์ต๋๋ค. ํนํ ๋ํ ์์คํ ๊ณผ ๊ฐ์ ๋ถ์ ๋ฑ์์ ์ ์ฉ์ฑ์ ๋ณด์ด๊ณ ์์ต๋๋ค.- ๊ณผ์ : ํ์์ ์๋, ์์์ ์๋ฏธ, ์ฌํ๋ฌธํ์ ๋งฅ๋ฝ ์ดํด ๋ฑ์์ ์ธ๊ฐ ์์ค์ ์ดํด๋ฅผ ๋ฌ์ฑํ๋ ๊ฒ์ด ๋ชฉํ์ ๋๋ค.
-
๋ด๋ก (Discourse)
์์ญ์ ๊ฐ์ฅ ๋ณต์กํ๊ณ ๋์ ์ ์ธ ์์ญ์ผ๋ก, ํ์ฌ ์ด๊ธฐ ์ฐ๊ตฌ ๋จ๊ณ์ ์์ต๋๋ค. ์ด ์์ญ์ ๋ฐ์ ์ ํฅํ NLP ๊ธฐ์ ์ ํฐ ๋์ฝ์ ๊ฐ์ ธ์ฌ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.- ๊ณผ์ : ๊ธด ๋ฌธ๋งฅ์ ์ ์งํ๋ฉด์ ์ผ๊ด์ฑ ์๋ ๋ํ๋ฅผ ์ด์ด๊ฐ๋ ๋ฅ๋ ฅ, ๋ณต์กํ ๋ ผ๋ฆฌ ๊ตฌ์กฐ ์ดํด ๋ฑ์ด ์ฃผ์ ๊ณผ์ ์ ๋๋ค.
-
์ ๋ฐ์ ์ผ๋ก, NLP ๊ธฐ์ ์ ์ด ์ธ ์์ญ์์ ์ง์์ ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ง๋ง, ์ธ๊ฐ ์์ค์ ์ธ์ด ์ดํด์ ์์ฑ์ ์ํด์๋ ์์ง ๋ง์ ์ฐ๊ตฌ์ ํ์ ์ด ํ์ํ ์ํ์ ๋๋ค. (=> ์ง๊ธ๋ ํ๋ฐํ๊ฒ ์ฐ๊ตฌ๊ฐ ์งํ๋๊ณ ์์ต๋๋ค)
- ์ NLP๊ฐ ์ด๋ ค์ด๊ฐ? : ์์ฐ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌ๋ฆฌ ๋ฐฉ๋ํ ๋จ์ด์ ์, ๋ณต์กํ ๊ตฌ๋ฌธ, ๋ชจํธ์ฑ ๋ฑ์ผ๋ก ์ธํด ๋ค๋ฃจ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ฌ์ฉ๋๋ ๋ฐฉ๋ํ ๋จ์ด์ ์ ๋ฟ๋ง ์๋๋ผ, ๊ตฌ๋ฌธ์ ๋ณต์ก์ฑ ๋ฐ ๋ชจํธ์ฑ, ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ์งํํ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ NLP์ฐ๊ตฌ์ ์ด๋ ค์์ด ์กด์ฌํ์ต๋๋ค.
- NLP ์ฐ๊ตฌ์ ์ญ์ฌ : ์ด๊ธฐ์๋ ๊ท์น ๊ธฐ๋ฐ ์ ๊ทผ๋ฒ์ด ์ฃผ๋ก ์ฌ์ฉ๋์์ง๋ง, ์์ฐ์ด์ ๋์ ํน์ฑ์ ๊ณ ๋ คํ์ง ๋ชปํ๋ ๋จ์ ์ด ์์์ต๋๋ค. ํ์ฌ๋ ํต๊ณ์ ๋ฐฉ๋ฒ๊ณผ ๊ท์น ๊ธฐ๋ฐ ๋ฐฉ๋ฒ์ ๊ฒฐํฉํ์ฌ ์ฌ์ฉํ๋ฉฐ, ๋จธ์ ๋ฌ๋ ๋ฐ ๋ฅ ๋ฌ๋ ๊ธฐ๋ฐ ์ ๊ทผ๋ฒ์ด ์ฃผ๋ฅ๋ฅผ ์ด๋ฃจ๊ณ ์์ต๋๋ค.
3.1. ํ ํฐํ (Tokenization)
ํ ํฐํ๋ ํ ์คํธ๋ฅผ ์์ ์๋ฏธ ๋จ์๋ก ๋ถํ ํ๋ ๊ณผ์ ์ ๋๋ค. ์ด๋ฌํ ๋จ์๋ ๋จ์ด, ๊ตฌ, ์ฌ์ง์ด๋ ๊ฐ๋ณ ๋ฌธ์์ผ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, โHello, world!โ๋ผ๋ ๋ฌธ์ฅ์ [โHelloโ, โ,โ, โworldโ, โ!โ]๋ก ๋ถํ ๋ ์ ์์ต๋๋ค. ํ ํฐํ๋ ํ ์คํธ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ ๊ฐ ๋จ์ด๊ฐ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง๋ฅผ ๋ถ์ํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
ํ ํฐํ์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค:
- ๊ณต๋ฐฑ ๊ธฐ๋ฐ ํ ํฐํ: ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๋จ์ด๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค.
- ๊ตฌ๋์ ๊ธฐ๋ฐ ํ ํฐํ: ๊ตฌ๋์ ๋ ๋ณ๋์ ํ ํฐ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ์ด์ ๊ธฐ๋ฐ ํ ํฐํ: ์ธ์ด์ ์๋ฏธ๋ฅผ ๊ณ ๋ คํ์ฌ ์ด์ ๋จ์๋ก ๋ถ๋ฆฌํฉ๋๋ค. (ํ๊ตญ์ด์ ๊ฐ์ ์ธ์ด์์ ํนํ ์ค์ํฉ๋๋ค)
์ฝ๋ ์์
1
2
3
4
5
from nltk.tokenize import word_tokenize
sentence = "Hello, world! Welcome to NLP."
tokens = word_tokenize(sentence)
print(tokens)
์ถ๋ ฅ: ['Hello', ',', 'world', '!', 'Welcome', 'to', 'NLP', '.']
3.2. ํํ์ ๋ถ์ (Morphological Analysis)
ํํ์ ๋ถ์์ ๋จ์ด์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํ๊ณ ๋ณํํ๋ ๊ณผ์ ์ ๋๋ค. ์ด๋ ๋จ์ํ ๋จ์ด๋ฅผ ๋ถ๋ฆฌํ๋ ํ ํฐํ ๋จ๊ณ๋ณด๋ค ๋ ๊น์ ๋ถ์์ ํฌํจํฉ๋๋ค. ํํ์ ๋ถ์์ ์ฃผ๋ก ๋ ๊ฐ์ง ์ฃผ์ ์์ ์ผ๋ก ๋๋ฉ๋๋ค:
-
ํํ์(Morpheme) ์๋ณ: ๋จ์ด๋ฅผ ๊ตฌ์ฑํ๋ ์ต์ ์๋ฏธ ๋จ์์ธ ํํ์๋ฅผ ์๋ณํฉ๋๋ค. ํํ์๋ ์๋ฆฝ ํํ์(๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์๋ ๋จ์ด)์ ์์กด ํํ์(๋ค๋ฅธ ํํ์์ ๊ฒฐํฉ๋์ด์ผ ์๋ฏธ๋ฅผ ๊ฐ๋ ๋จ์ด)๋ก ๋๋ฉ๋๋ค.
- ์์: โunhappinessโ๋ โun-โ, โhappyโ, โ-nessโ์ ์ธ ๊ฐ์ง ํํ์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
-
ํํ์ ๋ณํ(Morphological Inflection): ๋จ์ด๊ฐ ๋ฌธ๋ฒ์ ํํ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ๋ณํ๋๋ ๊ณผ์ ์ ๋ถ์ํฉ๋๋ค. ์ด๋ ๋ค์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ํ๋ฉ๋๋ค:
- Stemming: ๋จ์ด์ ์ด๊ฐ(Stem)์ ์ถ์ถํฉ๋๋ค. ์ด๋ ๋จ์ด์ ๋ณํ๋ ํํ๋ค์ ๋์ผํ๊ฒ ์ธ์ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด, โrunningโ, โrunnerโ, โranโ์ ๋ชจ๋ โrunโ์ผ๋ก ๋ณํ๋ ์ ์์ต๋๋ค. Stemming์ ๊ท์น ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฃผ๋ก ์ฌ์ฉํ๋ฉฐ, ๋จ์ด์ ์ผ๋ถ๋ถ์ ์ ๊ฑฐํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋ฉ๋๋ค.
- ์์: Porter Stemmer, Snowball Stemmer
- Lemmatization: ๋จ์ด์ ๊ธฐ๋ณธ ํํ(Lemma)๋ฅผ ์ฐพ์๋ด๋ ๊ณผ์ ์
๋๋ค. ์ด๋ ์ดํ ํํ์ ๋ถ์์ ํฌํจํ์ฌ ๋จ์ด์ ํ์ฌ ์ ๋ณด๋ฅผ ๊ณ ๋ คํฉ๋๋ค. ์๋ฅผ ๋ค์ด, โrunningโ์ โrunโ์ผ๋ก, โbetterโ๋ โgoodโ์ผ๋ก ๋ณํ๋ ์ ์์ต๋๋ค. Lemmatization์ ์ธ์ด์ ์ง์(์ฌ์ )์ ๋ฐํ์ผ๋ก ๋จ์ด๋ฅผ ๋ณํํฉ๋๋ค.
- ์์: WordNet Lemmatizer
- Stemming: ๋จ์ด์ ์ด๊ฐ(Stem)์ ์ถ์ถํฉ๋๋ค. ์ด๋ ๋จ์ด์ ๋ณํ๋ ํํ๋ค์ ๋์ผํ๊ฒ ์ธ์ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด, โrunningโ, โrunnerโ, โranโ์ ๋ชจ๋ โrunโ์ผ๋ก ๋ณํ๋ ์ ์์ต๋๋ค. Stemming์ ๊ท์น ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฃผ๋ก ์ฌ์ฉํ๋ฉฐ, ๋จ์ด์ ์ผ๋ถ๋ถ์ ์ ๊ฑฐํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋ฉ๋๋ค.
์ฝ๋ ์์
1
2
3
4
5
6
7
8
9
10
11
from nltk.stem import PorterStemmer, WordNetLemmatizer
stemmer = PorterStemmer()
lemmatizer = WordNetLemmatizer()
word1 = "running"
word2 = "better"
print(stemmer.stem(word1)) # ์ถ๋ ฅ: run
print(lemmatizer.lemmatize(word1, pos='v')) # ์ถ๋ ฅ: run
print(lemmatizer.lemmatize(word2, pos='a')) # ์ถ๋ ฅ: good
์ถ๋ ฅ:
1
2
3
run
run
good
3.3. ๋ฌธ์ฅ ๋ถํ (Sentence Splitting)
๋ฌธ์ฅ ๋ถํ ์ ํ ์คํธ๋ฅผ ๊ฐ๋ณ ๋ฌธ์ฅ์ผ๋ก ๋ถ๋ฆฌํ๋ ๊ณผ์ ์ ๋๋ค. ์ด๋ ๊ตฌ๋์ ์ด๋ ๋ฌธ์ฅ์ ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค. ๋ฌธ์ฅ ๋ถํ ์ ํ ์คํธ ๋ถ์์ ๋จ์๋ฅผ ๋ช ํํ ํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
์ฝ๋ ์์
1
2
3
4
5
from nltk.tokenize import sent_tokenize
text = "Hello world! How are you doing? NLP is interesting."
sentences = sent_tokenize(text)
print(sentences)
์ถ๋ ฅ: ['Hello world!', 'How are you doing?', 'NLP is interesting.']
3.4. ํ์ฌ ํ๊น (Part-of-Speech Tagging)
ํ์ฌ ํ๊น ์ ๋ฌธ์ฅ์์ ๊ฐ ๋จ์ด์ ํด๋นํ๋ ํ์ฌ๋ฅผ ํ ๋นํ๋ ๊ณผ์ ์ ๋๋ค. ์ด๋ ๋ฌธ์ฅ์ ๊ตฌ๋ฌธ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ , ๋จ์ด ๊ฐ์ ๊ด๊ณ๋ฅผ ํ์ ํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
ํ์ฌ ํ๊น ์ ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค:
- ๊ท์น ๊ธฐ๋ฐ ํ๊น (Rule-Based Tagging): ์ ํด์ง ๋ฌธ๋ฒ ๊ท์น์ ์ด์ฉํ์ฌ ๋จ์ด์ ํ์ฌ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- ํต๊ณ์ ํ๊น (Statistical Tagging): ์ฝํผ์ค ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ํ์ฌ๋ฅผ ํ๋ฅ ์ ์ผ๋ก ์์ธกํฉ๋๋ค. HMM(Hidden Markov Model)์ด๋ Maximum Entropy ๋ชจ๋ธ์ด ์ฌ์ฉ๋ฉ๋๋ค.
- ๊ธฐ๊ณ ํ์ต ๊ธฐ๋ฐ ํ๊น
(Machine Learning-Based Tagging): ์ง๋ ํ์ต์ ํตํด ํ์ฌ๋ฅผ ์์ธกํฉ๋๋ค. SVM, Decision Tree, ๊ทธ๋ฆฌ๊ณ ์ต๊ทผ์๋ ์ ๊ฒฝ๋ง ๋ชจ๋ธ(Neural Networks)์ ์ฌ์ฉํฉ๋๋ค.
- ์์: CRF(Conditional Random Fields), Bi-LSTM
์ฝ๋ ์์
1
2
3
4
5
6
7
import nltk
nltk.download('averaged_perceptron_tagger')
sentence = "I love eating chicken."
tokens = word_tokenize(sentence)
pos_tags = nltk.pos_tag(tokens)
print(pos_tags)
์ถ๋ ฅ: [('I', 'PRP'), ('love', 'VBP'), ('eating', 'VBG'), ('chicken', 'NN')]
- ๊ฐ์ฒด๋ช ์ธ์ (Named Entity Recognition, NER) : ๊ฐ์ฒด๋ช ์ธ์์ ๋ฌธ์ฅ์์ ํน์ ์์๋ฅผ ๋ฏธ๋ฆฌ ์ ์๋ ์นดํ ๊ณ ๋ฆฌ(์: ์ฌ๋, ์ฅ์, ์กฐ์ง, ๋ ์ง ๋ฑ)๋ก ๋ถ๋ฅํ๋ ์์ ์ ๋๋ค. ์ด๋ ํ ์คํธ ๋ฐ์ดํฐ์์ ์ค์ํ ์ ๋ณด๋ฅผ ์ถ์ถํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ ๊ทผ ๋ฐฉ๋ฒ
- ์ฌ์ ๊ธฐ๋ฐ ์ ๊ทผ๋ฒ (Dictionary / Rule-based Approach)
- List Lookup: ์ฌ์ ์ ์ ์๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ํ
์คํธ์์ ํด๋น ๋จ์ด๋ฅผ ๊ฒ์ํฉ๋๋ค.
- ์ฅ์ : ๊ฐ๋จํ๊ณ ๋น ๋ฅด๋ฉฐ, ํน์ ์ธ์ด์ ํนํ๋ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ๋จ์ : ๋ฆฌ์คํธ์ ํฌ๊ธฐ์ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ด๋ ต๊ณ , ์๋ก์ด ๋จ์ด๋ ๋ณํ์ ๋ฏผ๊ฐํฉ๋๋ค.
- Shallow Parsing Approach: ๊ทผ๊ฑฐ ์๋ ์ฆ๊ฑฐ(evidence)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ
์คํธ์์ ๊ฐ์ฒด๋ฅผ ์ถ์ถํฉ๋๋ค.
- ์์: โWall Streetโ์์ โStreetโ๊ณผ ๊ฐ์ ๋จ์ด๋ฅผ ํตํด ์ง๋ช ์ ์ธ์ํฉ๋๋ค.
- ๋ชจ๋ธ ๊ธฐ๋ฐ ์ ๊ทผ๋ฒ (Model-based Approach)
- CRF (Conditional Random Fields): ๋ฌธ๋งฅ์ ๊ณ ๋ คํ์ฌ ๋จ์ด์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์์ธกํฉ๋๋ค.
- ์ ๊ฒฝ๋ง ๊ธฐ๋ฐ ๋ชจ๋ธ (Neural Network-based Models): RNN, CNN ๋ฑ์ ์ฌ์ฉํ์ฌ ๋ฌธ๋งฅ ์ ๋ณด๋ฅผ ํ์ตํฉ๋๋ค.
- ์ฅ์ : ๋ฌธ๋งฅ์ ์ ๋ฐ์ํ์ฌ ๋์ ์ ํ๋๋ฅผ ๋ณด์ ๋๋ค.
- ๋จ์ : ๋ง์ ํ์ต ๋ฐ์ดํฐ์ ๊ณ์ฐ ์์์ด ํ์ํฉ๋๋ค.
์ฝ๋ ์์
1
2
3
4
5
6
7
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("Barack Obama was born in Hawaii.")
for ent in doc.ents:
print(ent.text, ent.label_)
์ถ๋ ฅ: Barack Obama PERSON
, Hawaii GPE
๊ตฌ๋ฌธ ๋ถ์ (Syntax Analysis) : ๊ตฌ๋ฌธ ๋ถ์์ ๋ฌธ์ฅ์์ ๋จ์ด๋ค์ด ์ด๋ป๊ฒ ๊ตฌ์กฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋์ง๋ฅผ ๋ถ์ํ๋ ์์ ์ ๋๋ค. ์ด๋ ๋ฌธ์ฅ์ ๋ฌธ๋ฒ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ ๊ฐ ๋จ์ด์ ๊ด๊ณ๋ฅผ ํ์ ํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
5.1. Parsing
- Top-down Parsing: ๋ฌธ์ฅ์ ์์๋ถํฐ ๋ฌธ๋ฒ ๊ท์น์ ์ ์ฉํ์ฌ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํฉ๋๋ค.
- Bottom-up Parsing: ๋จ์ด๋ถํฐ ์์ํ์ฌ ๋ฌธ๋ฒ ๊ท์น์ ์ญ์ผ๋ก ์ ์ฉํ์ฌ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํฉ๋๋ค.
5.2. ๋ชจํธ์ฑ (Ambiguity)
๊ตฌ๋ฌธ ๋ถ์์์ ์ค์ํ ๋ฌธ์ ๋ ๋ชจํธ์ฑ์ ํด๊ฒฐํ๋ ๊ฒ์ ๋๋ค.
- ๊ตฌ์กฐ์ ๋ชจํธ์ฑ (Structural Ambiguity): ๊ฐ์ ๋ฌธ์ฅ์ด ์ฌ๋ฌ ๋ฐฉ์์ผ๋ก ํด์๋ ์ ์์ต๋๋ค.
- ์์: โJohn saw Mary in the park.โ (์กด์ด ๊ณต์์์ ๋ฉ๋ฆฌ๋ฅผ ๋ดค๋ค / ์กด์ด ๋ฉ๋ฆฌ๋ฅผ ๋ดค๋๋ฐ, ๋ฉ๋ฆฌ๋ ๊ณต์์ ์๋ค)
- ์ดํ์ ๋ชจํธ์ฑ (Lexical Ambiguity): ๊ฐ์ ๋จ์ด๊ฐ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅธ ํํ์๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
- ์์: โTime flies like an arrow.โ (์๊ฐ์ ํ์ด์ฒ๋ผ ๋ ์๊ฐ๋ค / ํ๋ฆฌ๋ ํ์ด์ ์ข์ํ๋ค)
์ฝ๋ ์์
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import nltk
sentence = "John saw the man with a telescope."
grammar = nltk.CFG.fromstring("""
S -> NP VP
VP -> V NP | VP PP
PP -> P NP
V -> "saw"
NP -> "John" | "man" | "telescope" | Det N | NP PP
Det -> "a" | "the"
N -> "man" | "telescope"
P -> "with"
""")
parser = nltk.ChartParser(grammar)
for tree in parser.parse(sentence.split()):
print(tree)
ํ๋ฅ ์ ์ธ์ด ๋ชจ๋ธ (Probabilistic Language Modeling) : ์ธ์ด ๋ชจ๋ธ๋ง์ ์ฃผ์ด์ง ๋ฌธ์ฅ์ด ์ค์ ๋ฌธ๋ฒ์ ์ผ๋ก ํ๋นํ์ง ํ๊ฐํ๋ ๋ชจ๋ธ์ ๋๋ค. ์ด๋ ๋ฌธ์ฅ์ ๋ฌธ๋ฒ์ ๊ตฌ์กฐ์ ๋จ์ด ๊ฐ์ ๊ด๊ณ๋ฅผ ์ดํดํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ ๊ทผ ๋ฐฉ๋ฒ
- N-๊ทธ๋จ ๋ชจ๋ธ (N-gram Models)
- ๋จ์ด์ ์ฐ์์ ์ธ ํจํด์ ๋ถ์ํ์ฌ ๋ค์ ๋จ์ด์ ํ๋ฅ ์ ์์ธกํฉ๋๋ค.
- Unigram: ๋จ์ด ํ๋์ ํ๋ฅ
- Bigram: ๋ ๋จ์ด์ ์ฐ์ ํ๋ฅ
- Trigram: ์ธ ๋จ์ด์ ์ฐ์ ํ๋ฅ
- ์ ๊ฒฝ๋ง ๊ธฐ๋ฐ ๋ชจ๋ธ (Neural Network-based Models)
- RNN, LSTM, Transformer์ ๊ฐ์ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ฌธ๋งฅ ์ ๋ณด๋ฅผ ํ์ตํฉ๋๋ค.
- BERT, GPT-2: ์ฌ์ ํ์ต๋ ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ๋ก, ๋ฌธ๋งฅ์ ์ ๋ฐ์ํ์ฌ ๋์ ์ฑ๋ฅ์ ๋ณด์ ๋๋ค.
์์ฉ ๋ถ์ผ
- ๊ธฐ๊ณ ๋ฒ์ญ (Machine Translation)
- ์ฒ ์ ๊ต์ (Spell Correction)
- ์์ฑ ์ธ์ (Speech Recognition)
- ์์ฝ (Summarization)
- ์ง์ ์๋ต ์์คํ (Question Answering)
์ฝ๋ ์์
1
2
3
4
5
6
7
8
9
10
from transformers import GPT2LMHeadModel, GPT2Tokenizer
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = GPT2LMHeadModel.from_pretrained("gpt2")
input_text = "Natural language processing is"
input_ids = tokenizer.encode(input_text, return_tensors="pt")
output = model.generate(input_ids, max_length=50, num_return_sequences=1)
print(tokenizer.decode(output[0], skip_special_tokens=True))