자연어처리 이해 기본¶

학습 목표¶

  • 자연어 처리가 무엇인지 이해한다.
  • 자연어 처리가 어디에 활용되는지 이해한다.
  • 자연어 처리의 기본 용어를 이해한다.
  • 간단한 샘플 코드를 통해 이해해 본다.

01. 자연어 처리(NLP)란 무엇인가?¶

  • 자연어 처리(NLP)는 인간의 언어를 컴퓨터가 이해하고 처리할 수 있도록 하는 기술
  • NLP는 텍스트와 음성 데이터를 분석하고, 이를 통해 의미를 추출하거나 새로운 텍스트를 생성하는 다양한 방법을 포함.

02. 자연어 처리가 어디에 활용될까?¶

  • 챗봇: 고객 서비스에서 사용되는 자동 응답 시스템.
  • 번역: 언어 간의 자동 번역 시스템.
  • 음성 인식: 음성을 텍스트로 변환하는 기술.
  • 감정 분석: 텍스트에서 감정을 추출하여 긍정적, 부정적 감정을 분석.
  • 텍스트 요약: 긴 문서를 자동으로 요약.

03. 자연어 처리의 기본 용어를 이해¶

  • 토큰화(Tokenization): 텍스트를 작은 단위로 분할.
  • 형태소 분석(Morphological Analysis): 단어를 형태소로 분리하고 품사 태깅.
  • 어간 추출(Stem Extraction): 단어의 기본 형태 추출.
  • 품사 태깅(POS Tagging): 단어의 품사를 식별.
  • 명명된 개체 인식(NER): 인물, 장소 등의 명명된 개체 식별.
  • 단어 임베딩(Word Embedding): 단어를 벡터로 변환하여 의미를 수치적으로 표현.

04. 간단한 샘플 코드를 통한 이해¶

  • 개발 환경 : jupyter notebook
  • 파이썬 3.10.14
  • nltk : 3.9.1
In [11]:
import nltk
print(nltk.__version__)
3.9.1
In [1]:
!pip install nltk
Requirement already satisfied: nltk in c:\users\colab\.conda\envs\textai\lib\site-packages (3.9.1)
Requirement already satisfied: click in c:\users\colab\.conda\envs\textai\lib\site-packages (from nltk) (8.1.7)
Requirement already satisfied: joblib in c:\users\colab\.conda\envs\textai\lib\site-packages (from nltk) (1.4.2)
Requirement already satisfied: regex>=2021.8.3 in c:\users\colab\.conda\envs\textai\lib\site-packages (from nltk) (2024.7.24)
Requirement already satisfied: tqdm in c:\users\colab\.conda\envs\textai\lib\site-packages (from nltk) (4.66.5)
Requirement already satisfied: colorama in c:\users\colab\.conda\envs\textai\lib\site-packages (from click->nltk) (0.4.6)

파이썬 코드 작성¶

  • NLTK는 무엇인가?
    • NLTK (Natural Language Toolkit)는 Python 프로그래밍 언어를 위한 자연어 처리 라이브러리.
    • NLTK는 다양한 자연어 처리 작업을 수행할 수 있도록 도와주는 도구와 데이터셋을 포함하고 있음.
    • NLTK는 교육 및 연구 목적으로 주로 사용되고 있음.

주요기능¶

  • 토큰화(Tokenization)
  • 형태소 분석(Morphological Analysis)
  • 품사 태깅(Part-of-Speech Tagging) : 품사 태깅
  • 명명된 개체 인식(Named Entity Recognition) : 텍스트에서 인물, 장소, 조직 등 명명된 개체 인식 기능 제공
  • 구문 분석(Parsing) : 문장의 구문 구조를 분석하는 기능 제공
  • 텍스트 분류(Text Classification) : 텍스트 분류 기능 제공
  • 코퍼스 및 사전(Corpus and Lexical Resources) : 다양한 언어 지원과 말뭉치 제공.
In [7]:
import nltk
from nltk.tokenize import word_tokenize
from nltk.tag import pos_tag

# NLTK 데이터 다운로드 (처음 한 번만 실행)
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
[nltk_data] Downloading package punkt to
[nltk_data]     C:\Users\colab\AppData\Roaming\nltk_data...
[nltk_data]   Package punkt is already up-to-date!
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data]     C:\Users\colab\AppData\Roaming\nltk_data...
[nltk_data]   Package averaged_perceptron_tagger is already up-to-
[nltk_data]       date!
Out[7]:
True
In [8]:
# 예제 문장
sentence = "Natural language processing makes it possible for computers to understand human language."

# 토큰화 (Tokenization)
tokens = word_tokenize(sentence)
print("토큰화 결과:", tokens)

# 품사 태깅 (POS Tagging)
tagged_tokens = pos_tag(tokens)
print("품사 태깅 결과:", tagged_tokens)
토큰화 결과: ['Natural', 'language', 'processing', 'makes', 'it', 'possible', 'for', 'computers', 'to', 'understand', 'human', 'language', '.']
품사 태깅 결과: [('Natural', 'JJ'), ('language', 'NN'), ('processing', 'NN'), ('makes', 'VBZ'), ('it', 'PRP'), ('possible', 'JJ'), ('for', 'IN'), ('computers', 'NNS'), ('to', 'TO'), ('understand', 'VB'), ('human', 'JJ'), ('language', 'NN'), ('.', '.')]
In [ ]: