계속지나가기
코딩스뮤
계속지나가기
전체 방문자
오늘
어제
  • 코딩스뮤:)
    • Algorithm
      • 백준 문제풀이
      • 프로그래머스 문제풀이
      • 알고리즘 이론
      • 자료구조
      • SW Expert Academy
    • 인공지능(AI)
      • LLMs
      • 자연어처리(NLP)
      • 컴퓨터비전(CV)
      • 딥러닝(DL)
      • 머신러닝(ML)
      • 인공지능기초수학
      • 선형대수학
    • 컴퓨터 세팅
    • Computer Science
      • 유닉스프로그래밍
      • 프로그래밍언어론
      • 디자인패턴
      • 클린코드
      • SW 영어
      • 리눅스
      • 논리회로
    • Server
      • Docker

블로그 메뉴

  • 홈
  • Who Am I(CV)
  • 태그

공지사항

인기 글

태그

  • DIP
  • 지도학습
  • NLP
  • networkflow
  • ComputerVision
  • 네트워크플로우
  • 경사하강법
  • 컴퓨터비전
  • 결정경계
  • 파이썬 클린코드
  • LM
  • 언어모델
  • machinelearning
  • f1-score
  • 군집화
  • ML
  • 머신러닝
  • 선형회귀
  • MaximumFlow
  • 알고리즘
  • SIFT
  • 비지도학습
  • 에지검출
  • DigitalImageProcessing
  • 기계학습
  • 손실함수
  • 패턴인식
  • 최대유량
  • 비용함수
  • 디지털이미지처리

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
계속지나가기

코딩스뮤

[NLTK] 자연어 처리를 위한 패키지
인공지능(AI)/자연어처리(NLP)

[NLTK] 자연어 처리를 위한 패키지

2023. 10. 24. 13:59
반응형

자연어처리(NLP, Natural Language Processing)를 위해서는 각 테스크에 맞는 전처리(preprocessing)과정이 필수적으로 필요합니다. 본 게시글에서는 전처리를 위한 패키지인 NLTK를 간단한 예제와 함께 알아보도록 하겠습니다.

 

 

NLTK에서는 다양한 기능을 제공하지만, 본 글에서는 아래의 기능 위주로 다룹니다 

  • Searching Text
  • Word Statistics

 

Searching Text


NLTK에서 제공하는 텍스트 예제로 진행하기 위해,  book을 불러오도록 하겠습니다.

import nltk
from nltk.book import *

NLTK에서 book을 불러올 경우 아래의 9개의 책의 텍스트를 불러올 수 있습니다.

text1에 저장된 Moby-Dick으로 nltk를 적용해봅시다

 

1. concordance

언어학에서 concordance란 일반적으로 그 단어가 사용된 환경(문단)에 대한 인용이라는 뜻을 가집니다. 이 뜻과 비슷하게 NLTK에서 제공하는 concordance기능을 사용하면 text에 있는 특정 단어가 어떤 문맥에서 몇번 사용되었는지 쉽게 확인할 수 있습니다.

text1.concordance("sad")
text1.concordance("happy")

각각에 대한 결과는 아래와 같습니다.

2. dispersion_plot

전체 텍스트에 나타나는 특정 단어의 빈도를 시각화하고 싶다면 dispersion_plot을 사용하면 됩니다. y축은 text1의 문장 길이, x 축은 지정한 단어로,  그래프에 나타난 stripe는 n번째 문장에 지정 단어가 등장한다라고 해석 가능합니다.

text1.dispersion_plot(["sad", "happy"])

 

좀 더 자주 등장하는 단어로 찍어보게되면 아래와 같이 빽빽한 stripe 그래프가 나타납니다.

text1.dispersion_plot(["he", "she", "they", "I"])

 

Word Statistics


1. FreqDist()

FreqDist() 기능을 사용하면 text가 가지고 있는 단어 관련 통계를 더 쉽게 확인할 수 있습니다.

fdist1 = FreqDist(text1)

fdist1.most_common(50) 
fdist1['whale']
fdist1.plot(50, cumulative=True)
  • FreqDist.most_common(N) :  가장 높은 빈도수의 N개의 단어를 확인할 수 있습니다.
  • FreqDist[WORD] : WORD의 빈도수를 확인할 수 있습니다.
  • FreqDist.plot(N, cumulative=True): 가장 높은 빈도수의 N개의 단어의 누적빈도수 분포를 시각화할 수 있습니다.

추가로, 특정 길이 이상의 단어 중 특정 빈도 수 이상의 단어를 보고 싶다면 아래와 같이 사용하시면 됩니다. 예시는 길이가 12 글자 이상 단어 중 text에 15번 이상 등장한 단어를 알파벳 순으로 정렬한 결과입니다. 문장에 자주 사용되는 접속부사 등이 결과로 나온 것을 확인할 수 있습니다.

fdist1 = FreqDist(text1)
words = sorted(w for w in set(text1) if len(w) >= 12 and fdist1[w] >= 15)

2. collocation & n-grams

언어학에서 collocation이란 궁합이 잘 맞아 같이 붙어다니는 단어나 말들을 뜻하는데, 이 뜻과 비슷하게 NLTK에서 제공하는 collocation을 사용하면 특정 단어와 자주 쓰이는 단어 조합을 확인할 수 있습니다.

 

text1에서 자주 같이 등장하는 단어 예시를 collocations() 함수로 확인할 수 있는데, 예시에서는 "White Whale", "Father Mapple"과 같은 고유명사가 자주 같이 사용되는 것을 확인할 수 있습니다. 기본적으로 nltk에서 제공하는 collcation은 bigram으로 제공됩니다.

text1.collocations()

 

 

반응형

'인공지능(AI) > 자연어처리(NLP)' 카테고리의 다른 글

프롬프트 러닝, Prompt Learning이란?  (0) 2024.01.04
End-to-End Memory Networks, 엔드-투-엔드 메모리 네트워크  (0) 2022.08.18
Prompt-Based Learning, 프롬프트 기반 학습  (0) 2022.08.08
[LM 평가지표] Perplexity, PPL  (0) 2022.02.04
[NLP] 워드투벡터(Word2Vec)  (2) 2021.10.13
    '인공지능(AI)/자연어처리(NLP)' 카테고리의 다른 글
    • 프롬프트 러닝, Prompt Learning이란?
    • End-to-End Memory Networks, 엔드-투-엔드 메모리 네트워크
    • Prompt-Based Learning, 프롬프트 기반 학습
    • [LM 평가지표] Perplexity, PPL
    계속지나가기
    계속지나가기
    NLP Engineer

    티스토리툴바