[NLP assignment] Natural Language Processing

PangDae·2021년 9월 10일
0

Natural Language Processing

Spacy를 이용한 영어 전처리

  • Spacy란? 파이썬의 자연어 처리를 위한 오픈 소스 기반 라이브러리다.

  • Tokenization과 품사 태깅, 개체 인식 등 기본적인 전처리 기능을 지원하고 있다.

Tokenezation

Spacy Tokenezation 예시

text = nlp('Naver Connect and Upstage Boostcamp')
print ([token.text for token in text])

결과
['Naver', 'Connect', 'and', 'Upstage', 'Boostcamp']

Stopword

  • Stopword(불용어) 언어를 분석할 때, 의미가 있는 단어와, 의미가 없는 단어나 조사 등이 있다.

  • Spacy는 불용어를 문장, 문단에서 불용어를 검출해 내는 기능을 가지고있다.

Spacy Stopword 예시

spacy_stopwords = spacy.lang.en.stop_words.STOP_WORDS
for stop_word in list(spacy_stopwords)[:30]:
  print(stop_word)

Lemmatization

  • 표제어(Lemma)는 한글로는 '표제어' 또는 '기본 사전형 단어' 정도의 의미를 갖는다.

  • 예를 들어 am, are, is는 서로 다른 스펠링이지만 그 뿌리 단어는 be라고 볼 수 있다.

Spacy Lemmatization

for token in text[:20]:
  print (token, "-", token.lemma_)

is_punct

  • 언어를 분석 할 때, ~!@#$%^&*( 등 기호는 필요하지 않기 때문에 Spacy에서는 이를 검출하는 기능을 가지고 있다.

Sapcy is_stop,is_punct 활용 함수

def is_token_allowed(token):
 if token.is_stop or token.is_punct:
    return False
  return True

Mecab을 이용한 형태소 분석 기반 토크나이징

  • 한국어를 지원하는 자연어처리 라이브러리 이다.

  • konlpy는 경제분석을 위한 라이브러리로 특화되어있다.

Mecab 사용법

from konlpy.tag import Mecab
import operator
tokenizer = Mecab()

놀랍도록 간단하게 Mecab을 사용할 수 있다.

Macab 예시

text="최강의 슈퍼히어로들이 모였다! 지구의 운명을 건 거대한 전쟁이 시작된다! 지구의 안보가 위협당하는 위기의 상황에서 슈퍼히어로들을 불러모아 세상을 구하는, 일명 어벤져스 작전. 에너지원 테서랙트를 이용한 적의 등장으로 인류가 위험에 처하자 국제평화유지기구인 쉴드의 국장 닉 퓨리는 어벤져스 작전을 위해 전 세계에 흩어져 있던 슈퍼히어로들을 찾아나선다. 아이언맨부터 토르, 헐크, 캡틴 아메리카는 물론, 쉴드의 요원인 블랙 위도우, 호크아이까지, 최고의 슈퍼히어로들이 어벤져스의 멤버로 모이게 되지만, 각기 개성이 강한 이들의 만남은 예상치 못한 방향으로 흘러가는데… 지구의 운명을 건 거대한 전쟁 앞에 어벤져스 작전은 성공할 수 있을까?"

print(tokenizer.morphs(text))

이와 같이 tokenizer.morphs() 파라미터에 문장을 넣으면 Token화 되어나오게 된다.

Macab을 이용하여, 빈도수 별로 dict에 저장하기

vocab_dict={}
for token in tokens:
  if token in vocab_dict:
    vocab_dict[token]+=1
      
  else:
    vocab_dict[token]=1

Macab을 이용하여 Tokens에 Token을 생성한 후, 빈도수 별로 저장해주면 간단하게 빈도수 별로 dict를 생성 할 수 있다.

profile
개발이 하고싶습니다.

0개의 댓글