1 핵심 개념

자연어 처리는 컴퓨터로 하여금 사람이 작성한 언어(음성과 글)의 의미를 이해시키는 것을 목표로 한다.

  1. 텍스트 데이터
    • 트위터
    • 소설, 신문기사
    • 고객 평점과 리뷰
    • 전자우편
    • 의무기록
  2. 텍스트 저장 형식
    • 뉴스 등 웹 페이지
    • PDF/워드/한글 문서
    • 트위터 등 SNS, RSS 피드, 댓글
  3. 응용분야
    • 감성분석
    • 텍스트 분류
    • 번역
    • 챗봇
    • 개인 비서
  4. 기술
    • 단어주머니(Bag of Words)
    • Word Embedding, 워드투벡(Word2Vec)

2 단어주머니(Bag of Words)

2.1 영어 단어주머니(Bag of Words) 1

먼저 텍스트 데이터를 준비한다. 3개 문장으로 구성된 영어문장을 텍스트 데이터로 삼아 단어주머니 언어모형을 구현해보자. text는 하나의 텍스트이며, sentence는 문장 3개를 들고 있는 리스트다.

단어주머니 모형은 오래되고 직관적이며 오래되서 잘 구현된 라이브러리가 많이 있다. nltk, TextBlob 라이브러리를 사용해서 단어주머니 모형을 구현해보자. “아나콘다3”을 기반으로 작업할 경우 설치가 되어 있지 않으니 conda를 사용해서 설치한다. 터미널에서 conda install -c conda-forge textblob 명령어를 실행시키면 TextBlob이 설치된다.

기본적인 작업흐름은 텍스트 데이터를 blob 객체로 변환시킨다. 그리고 나서 blob 객체 메쏘드를 사용해서 단어주머니를 만들고 이를 판다스 데이터프레임으로 변환시킨 후에 groupby() 메쏘드를 사용해서 단어 빈도수를 만든다.

['I', 'like', 'to', 'play', 'football', 'Did', 'you', 'go', 'outside', 'to', 'play', 'tennis', 'John', 'and', 'I', 'play', 'tennis']
word
play        3
to          2
tennis      2
I           2
you         1
outside     1
like        1
go          1
football    1
and         1
John        1
Did         1
Name: word, dtype: int64

“Sentiment Analysis using Python”은 데이터프레임 판다스를 기본 자료구조로 감성분석하는 좋은 코드를 만들어 주었다. 앞선 3문장을 대상으로 간단히 감성분석 작업을 수행해보자!

                             sentence    sentiment
0            I like to play football.   (0.0, 0.0)
1  Did you go outside to play tennis.  (0.0, 0.05)
2              John and I play tennis   (0.0, 0.0)

명사만 추출하고자 하는 경우 앞서 단어에 대한 품사를 식별했기 때문에 판다스 행을 추출하는 방식으로 뽑아낸다.

        word pos
4   football  NN
11    tennis  NN
16    tennis  NN

3 NLP 도구

3.1 영문 NLP 도구 2

영어 자연어처리를 위해서 다양한 파이썬 라이브러리가 존재한다. 대표적으로 많이 사용되는 자연어 처리 파이썬 라이브러리는 다음과 같다.

영문 자연어 처리에서 많이 사용되는 Spacy, NLTK, CoreNLP의 경우 라이선스에서 차이도 나지만 기능에서도 차이가 있다.

Feature Spacy NLTK Core NLP
Easy installation Y Y Y
Python API Y Y N
Multi Language support N Y Y
Tokenization Y Y Y
Part-of-speech tagging Y Y Y
Sentence segmentation Y Y Y
Dependency parsing Y N Y
Entity Recognition Y Y Y
Integrated word vectors Y N N
Sentiment analysis Y Y Y
Coreference resolution N N Y

3.2 한국어 단어주머니

4 워드 임베딩