joeunpark@gmail.com
텍스트 데이터 전처리로 시작하는

Natural Language Processing
@싸이그램즈 2018
시작하기 전에 잠시 동화책을 보겠습니다.
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
띄어쓰기나 맞춤법에 따라 다른 의미

또, 중의적 표현이나 반어법 등의 표현으로 의미를 찾기 어려움
그래서, 텍스트 전처리가 필요하고

이를 통해 의미를 얻습니다.
그럼, 자연어처리를 시작하는 분들이

텍스트 데이터로 부터 의미있는 결과를 얻기 위해

어떤 일들을 해볼 수 있을지 간단히 소개해 봅니다.
텍스트 데이터 정제 및 전처리
데이터 정제 및 전처리

기계가 텍스트를 이해할 수 있도록 텍스트를 정제

신호와 소음을 구분

아웃라이어데이터로 인한 오버피팅을 방지

•HTML 태그, 특수문자, 이모티콘

•정규표현식

•불용어(Stopword)

•어간추출(Stemming)

•음소표기법(Lemmatizing)
정규화 normalization (입니닼ㅋㅋ -> 입니다 ㅋㅋ, 샤릉해 -> 사랑해)

• 한국어를 처리하는 예시입니닼ㅋㅋㅋㅋㅋ -> 한국어를 처리하는 예시입
니다 ㅋㅋ

토큰화 tokenization

• 한국어를 처리하는 예시입니다 ㅋㅋ -> 한국어Noun, 를Josa, 처리
Noun, 하는Verb, 예시Noun, 입Adjective, 니다Eomi ㅋㅋ
KoreanParticle

어근화 stemming (입니다 -> 이다)

• 한국어를 처리하는 예시입니다 ㅋㅋ -> 한국어Noun, 를Josa, 처리
Noun, 하다Verb, 예시Noun, 이다Adjective, ㅋㅋKoreanParticle

어구 추출 phrase extraction

• 한국어를 처리하는 예시입니다 ㅋㅋ -> 한국어, 처리, 예시, 처리하는 예시

[출처 : twitter-korean-text](https://github.com/twitter/twitter-
korean-text)
불용어 Stopword

일반적으로 코퍼스에서 자주 나타나는 단어

학습이나 예측 프로세스에 실제로 기여하지 않음

예) 조사, 접미사 - 나, 너, 은, 는, 이, 가, 하다, 합니다 등
어간추출 Stemming

단어를 축약형으로 바꿔준다. 

새로운 (like new), 새로울 (will be new) 

→ 새롭다 (new)

먹었다 (ate), 먹을 (will eat), 먹을지도 모르는(may be eating) 

→ 먹다 (eat)

[출처 : twitter-korean-text](https://github.com/twitter/twitter-korean-text)
음소표기법 Lemmatization

품사정보가 보존된 형태의 기본형으로 변환

1) 배가 맛있다. 

2) 배를 타는 것이 재미있다. 

3) 평소보다 두 배로 많이 먹어서 배가 아프다.

영어에서 meet는 meeting으로 쓰였을 때 회의를 뜻하지만 meet 일 때는 만나
다는 뜻을 갖는데 그 단어가 명사로 쓰였는지 동사로 쓰였는지에 따라 적합한 의미
를 갖도록 추출하는 것
0과 1밖에 모르는 기계에게 

인간의 언어 알려주기

컴퓨터는 숫자만 인식할 수 있기 때문에 

바이너리 코드로 처리해 주기
텍스트 데이터 벡터화
One Hot Vector
과일
사과
배
감
사과
과일 과일_사과 과일_배 과일_감
사과 1 0 0
배 0 1 0
감 0 0 1
사과 1 0 0
텍스트 데이터, 범주형 데이터 => 수치형 데이터

•머신러닝이나 딥러닝 알고리즘은 수치로된 데이터만 이해

•벡터에서 해당되는 하나의 데이터만 1로 변경해 주고 나머지는 0으로 채워주는 것
BOW(Bag Of Words)
BOW(bag of words)

• 가장 간단하지만 효과적이라 널리쓰이는 방법

• 장, 문단, 문장, 서식과 같은 입력 텍스트의 구조를 제외하고 각 단어가
이 말뭉치에 얼마나 많이 나타나는지만 헤아림

• 구조와 상관없이 단어의 출현횟수만 세기 때문에 텍스트를 담는 가방
(bag)으로 생각할 수 있음

• BOW는 단어의 순서가 완전히 무시 된다는 단점

• 예를 들어 의미가 완전히 반대인 두 문장을 보자

▪it's bad, not good at all.

▪it's good, not bad at all.

• 위 두 문장은 의미가 전혀 반대지만 완전히 동일하게 반환

• 이를 보완하기 위해 n-gram을 사용하는 데 BOW는 하나의 토큰을 사
용하지만 n-gram은 n개의 토큰을 사용
(1) 동물원에 버스를 타고 갔다.

(2) 동물원에서 사자를 봤다.

(3) 동물원에서 기린을 봤다.
토큰화 

[

"동물원에", "동물원에서", "버스를", "사자를", "기린을", "타고", "갔다", "봤다"

]

벡터화

(1) [1, 0, 1, 0, 0, 1, 1, 0]

(2) [0, 1, 0, 1, 0, 0, 0, 1] 

(3) [0, 1, 0, 0, 1, 0, 0, 1]
BOW(bag of words)
uni-gram 

[

"동물원에",

"버스를"

“타고",

"갔다",

]
n-gram 동물원에 버스를 타고 갔다.
bi-gram 

[

"동물원에 버스를",

"버스를 타고",

"타고 갔다"

]
tri-gram 

[

"동물원에 버스를 타고",

"버스를 타고 갔다"

]
bi-gram(1,2) 

[

"동물원에",

"버스를",

"타고갔다",

"동물원에 버스를",

"버스를 타고",

"타고 갔다"

]
tri-gram(2,3)

[

"동물원에 버스를",

"버스를 타고",

"타고 갔다”,

"동물원에 버스를 타고",

"버스를 타고 갔다"

]
TF-IDF

Term frequency Inverse document frequency
TF(단어 빈도, term frequency)는 특정한 단어가 문서 내에 얼마나 자주 등장하는지를 나타내는 값

이 값이 높을수록 문서에서 중요하다고 생각할 수 있지만 

단어 자체가 문서군 내에서 자주 사용되는 경우, 

이것은 그 단어가 흔하게 등장한다는 것을 의미

이것을 DF(문서 빈도, document frequency)라고 하며, 

이 값의 역수를 IDF(역문서 빈도, inverse document frequency)라고함

TF-IDF는 TF와 IDF를 곱한 값
Word2Vec

Word Embedding to Vector
Word2Vec

one hot encoding(예 [0000001000]) 혹은 Bag of Words에서 

vector size가 매우 크고 sparse 하므로 neural net 성능이 잘 나오지 않음

•주위 단어가 비슷하면 해당 단어의 의미는 유사하다 라는 아이디어

•단어를 트레이닝 시킬 때 주변 단어를 label로 매치하여 최적화

•단어를 의미를 내포한 dense vector로 매칭 시키는 것

Word2Vec은 분산 된 텍스트 표현을 사용하여 개념 간 유사성을 봄

예를 들어, 베이징과 중국이 서울과 한국이 (수도와 나라) 같은 방식으로 관련되어 있음을
이해
출처 : https://arxiv.org/pdf/1301.3781.pdf Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, and Jeffrey Dean. Distributed Representations of
Words and Phrases and their Compositionality. In Proceedings of NIPS, 2013.
CBOW(continuous bag-of-words)

전체 텍스트로 하나의 단어를 예측하기 때문에 작은 데이터셋일 수록 유리하다.

아래 예제에서 __ 에 들어갈 단어를 예측한다.

1) __가 맛있다. 

2) __를 타는 것이 재미있다. 

3) 평소보다 두 __로 많이 먹어서 __가 아프다.

Skip-Gram 

타겟 단어들로부터 원본 단어를 역으로 예측하는 것이다. CBOW와는 반대로 컨텍스트-타겟 쌍을
새로운 발견으로 처리하고 큰 규모의 데이터셋을 가질 때 유리

배라는 단어 주변에 올 수 있는 단어를 예측한다.

1) *배*가 맛있다. 

2) *배*를 타는 것이 재미있다. 

3) 평소보다 두 *배*로 많이 먹어서 *배*가 아프다.
청와대 국민청원 데이터

• Word2Vec을 통해 벡터화된 데이터로 단어 유사도 보기
https://github.com/corazzon/petitionWrangling
텍스트 데이터 시각화
청와대 국민청원 데이터로 그린 워드클라우드
https://github.com/corazzon/petitionWrangling
청와대 국민청원 데이터

• Word2Vec으로 벡터화하고 일부 데이터를 차원축소 기법으로 줄여서 표현

•비슷한 단어끼리 비슷한 위치에 분포(예. 간곡히, 부탁드립니다)

•조사와 불용어가 섞여있어서 데이터 정제가 필요
https://github.com/corazzon/petitionWrangling
IMDB 영화리뷰 데이터

• Word2Vec으로 벡터화하고 일부 데이터를 차원축소 기법으로 줄여서 표현

•[my, i, u], [toward, into, up, down]이 비슷한 위치
https://github.com/corazzon/KaggleStruggle/tree/master/word2vec-nlp-tutorial
단어 수 혹은 문장길이, 

특수문자, 

불용어 갯수 등을 시각화
IMDB 영화리뷰의 단어 수 분포
https://github.com/corazzon/KaggleStruggle/tree/master/word2vec-nlp-tutorial
사용 데이터셋 : https://www.kaggle.com/c/spooky-author-identification
작가별 품사 사용에 대한 시각화
https://github.com/corazzon/KaggleStruggle/blob/master/spooky-author-identification/spooky_NLP_EDA.ipynb
작가별 단어개수 시각화
사용 데이터셋 : https://www.kaggle.com/c/spooky-author-identification
https://github.com/corazzon/KaggleStruggle/blob/master/spooky-author-identification/spooky_NLP_EDA.ipynb
출처 : https://www.kaggle.com/marcospinaci/talking-plots-2-adding-grammar
작가별로 소설에 자주 등장하는 단어
사용 데이터셋 : https://www.kaggle.com/c/spooky-author-identification
그럼 자연어 처리로 어떤 일을 할 수 있을까?
자연어 처리로 할 수 있는 일
기계번역
분류
맞춤법 수정
자동요약
챗봇
스팸메일 검출
감정분석
추천
자동답변
고객센터
스팸메일 분류
비슷한 메일끼리 모으기
리뷰 평점 예측
차원 축소 기법으로 시각화
자연어 처리에서 활용하기
감사합니다.

More Related Content

PDF
Oss貢献超入門
PDF
RDBにおけるバリデーションをリレーショナルモデルから考える
PDF
カネとAgile(大企業新規事業編) #rsgt2021
PDF
ユーザーストーリーマッピングを使ってプロダクトバックログを作ろう
PDF
TDDBC お題
PDF
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
PPTX
AtCoder Beginner Contest 014 解説
PDF
良質なコードを高速に書くコツ
Oss貢献超入門
RDBにおけるバリデーションをリレーショナルモデルから考える
カネとAgile(大企業新規事業編) #rsgt2021
ユーザーストーリーマッピングを使ってプロダクトバックログを作ろう
TDDBC お題
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
AtCoder Beginner Contest 014 解説
良質なコードを高速に書くコツ

What's hot (20)

PDF
データ分析を支える技術 DWH再入門
PPTX
Elasticsearch as a Distributed System
PDF
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
PPTX
KorQuAD v2.0 소개
PPTX
深い親子関係のテーブル設計
PDF
Test Yourself - テストを書くと何がどう変わるか
PDF
ソフトウェアにおける 複雑さとは何なのか?
PDF
Redash・SQL勉強会 ~目指せクエリ女子~
PDF
業務と消費者の体験を同時にデザインするリクルートの価値検証のリアル ー 「Airレジ ハンディ」セルフオーダーのブレない「価値」の確かめ方 ー
PDF
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
PDF
競技プログラミングにおけるコードの書き方とその利便性
PDF
REST API のコツ
PDF
UXデザインを速く! 軽く! そして根拠をもって、回せ! すばやいユーザー調査からつなげるアジャイルUX
PPTX
データモデリング・テクニック
PDF
ソーシャルゲーム案件におけるDB分割のPHP実装
PDF
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
PDF
Re永続データ構造が分からない人のためのスライド
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PPTX
がっつりMongoDB事例紹介
PPTX
G社のNMT論文を読んでみた
データ分析を支える技術 DWH再入門
Elasticsearch as a Distributed System
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
KorQuAD v2.0 소개
深い親子関係のテーブル設計
Test Yourself - テストを書くと何がどう変わるか
ソフトウェアにおける 複雑さとは何なのか?
Redash・SQL勉強会 ~目指せクエリ女子~
業務と消費者の体験を同時にデザインするリクルートの価値検証のリアル ー 「Airレジ ハンディ」セルフオーダーのブレない「価値」の確かめ方 ー
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
競技プログラミングにおけるコードの書き方とその利便性
REST API のコツ
UXデザインを速く! 軽く! そして根拠をもって、回せ! すばやいユーザー調査からつなげるアジャイルUX
データモデリング・テクニック
ソーシャルゲーム案件におけるDB分割のPHP実装
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Re永続データ構造が分からない人のためのスライド
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
がっつりMongoDB事例紹介
G社のNMT論文を読んでみた
Ad

Similar to [싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP (16)

PDF
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
PDF
Natural Language Processing(NLP) - Basic
PDF
CoreDot TechSeminar 2018 - Session3 Doh Seungheon
PDF
[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?
PDF
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기
PDF
제9회 보아즈(BOAZ) 빅데이터 컨퍼런스 - 너의 기분 이모지(emoji)?
PPTX
(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)
PDF
Deep Learning for Chatbot (1/4)
PPTX
자연어처리 소개
PPTX
Topic models
PDF
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
PDF
딥러닝 기반 자연어 언어모델 BERT
PPTX
Brief hystory of NLP and Word2Vec
PPTX
단어 의미 중의성 해소, Word Sense Disambiguation(WSD)
PPTX
1910 tfkr3 warnikchow
PPTX
2206 Modupop!
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
Natural Language Processing(NLP) - Basic
CoreDot TechSeminar 2018 - Session3 Doh Seungheon
[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기
제9회 보아즈(BOAZ) 빅데이터 컨퍼런스 - 너의 기분 이모지(emoji)?
(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)
Deep Learning for Chatbot (1/4)
자연어처리 소개
Topic models
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
딥러닝 기반 자연어 언어모델 BERT
Brief hystory of NLP and Word2Vec
단어 의미 중의성 해소, Word Sense Disambiguation(WSD)
1910 tfkr3 warnikchow
2206 Modupop!
Ad

[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP

  • 1. [email protected] 텍스트 데이터 전처리로 시작하는 Natural Language Processing @싸이그램즈 2018
  • 2. 시작하기 전에 잠시 동화책을 보겠습니다.
  • 9. 띄어쓰기나 맞춤법에 따라 다른 의미 또, 중의적 표현이나 반어법 등의 표현으로 의미를 찾기 어려움
  • 10. 그래서, 텍스트 전처리가 필요하고 이를 통해 의미를 얻습니다.
  • 11. 그럼, 자연어처리를 시작하는 분들이 텍스트 데이터로 부터 의미있는 결과를 얻기 위해 어떤 일들을 해볼 수 있을지 간단히 소개해 봅니다.
  • 12. 텍스트 데이터 정제 및 전처리
  • 13. 데이터 정제 및 전처리 기계가 텍스트를 이해할 수 있도록 텍스트를 정제 신호와 소음을 구분 아웃라이어데이터로 인한 오버피팅을 방지 •HTML 태그, 특수문자, 이모티콘 •정규표현식 •불용어(Stopword) •어간추출(Stemming) •음소표기법(Lemmatizing)
  • 14. 정규화 normalization (입니닼ㅋㅋ -> 입니다 ㅋㅋ, 샤릉해 -> 사랑해) • 한국어를 처리하는 예시입니닼ㅋㅋㅋㅋㅋ -> 한국어를 처리하는 예시입 니다 ㅋㅋ 토큰화 tokenization • 한국어를 처리하는 예시입니다 ㅋㅋ -> 한국어Noun, 를Josa, 처리 Noun, 하는Verb, 예시Noun, 입Adjective, 니다Eomi ㅋㅋ KoreanParticle 어근화 stemming (입니다 -> 이다) • 한국어를 처리하는 예시입니다 ㅋㅋ -> 한국어Noun, 를Josa, 처리 Noun, 하다Verb, 예시Noun, 이다Adjective, ㅋㅋKoreanParticle 어구 추출 phrase extraction • 한국어를 처리하는 예시입니다 ㅋㅋ -> 한국어, 처리, 예시, 처리하는 예시 [출처 : twitter-korean-text](https://github.com/twitter/twitter- korean-text)
  • 15. 불용어 Stopword 일반적으로 코퍼스에서 자주 나타나는 단어 학습이나 예측 프로세스에 실제로 기여하지 않음 예) 조사, 접미사 - 나, 너, 은, 는, 이, 가, 하다, 합니다 등
  • 16. 어간추출 Stemming 단어를 축약형으로 바꿔준다. 새로운 (like new), 새로울 (will be new) → 새롭다 (new) 먹었다 (ate), 먹을 (will eat), 먹을지도 모르는(may be eating) → 먹다 (eat) [출처 : twitter-korean-text](https://github.com/twitter/twitter-korean-text)
  • 17. 음소표기법 Lemmatization 품사정보가 보존된 형태의 기본형으로 변환 1) 배가 맛있다. 2) 배를 타는 것이 재미있다. 3) 평소보다 두 배로 많이 먹어서 배가 아프다. 영어에서 meet는 meeting으로 쓰였을 때 회의를 뜻하지만 meet 일 때는 만나 다는 뜻을 갖는데 그 단어가 명사로 쓰였는지 동사로 쓰였는지에 따라 적합한 의미 를 갖도록 추출하는 것
  • 18. 0과 1밖에 모르는 기계에게 인간의 언어 알려주기 컴퓨터는 숫자만 인식할 수 있기 때문에 바이너리 코드로 처리해 주기
  • 21. 과일 사과 배 감 사과 과일 과일_사과 과일_배 과일_감 사과 1 0 0 배 0 1 0 감 0 0 1 사과 1 0 0 텍스트 데이터, 범주형 데이터 => 수치형 데이터 •머신러닝이나 딥러닝 알고리즘은 수치로된 데이터만 이해 •벡터에서 해당되는 하나의 데이터만 1로 변경해 주고 나머지는 0으로 채워주는 것
  • 23. BOW(bag of words) • 가장 간단하지만 효과적이라 널리쓰이는 방법 • 장, 문단, 문장, 서식과 같은 입력 텍스트의 구조를 제외하고 각 단어가 이 말뭉치에 얼마나 많이 나타나는지만 헤아림 • 구조와 상관없이 단어의 출현횟수만 세기 때문에 텍스트를 담는 가방 (bag)으로 생각할 수 있음 • BOW는 단어의 순서가 완전히 무시 된다는 단점 • 예를 들어 의미가 완전히 반대인 두 문장을 보자 ▪it's bad, not good at all. ▪it's good, not bad at all. • 위 두 문장은 의미가 전혀 반대지만 완전히 동일하게 반환 • 이를 보완하기 위해 n-gram을 사용하는 데 BOW는 하나의 토큰을 사 용하지만 n-gram은 n개의 토큰을 사용
  • 24. (1) 동물원에 버스를 타고 갔다. (2) 동물원에서 사자를 봤다. (3) 동물원에서 기린을 봤다. 토큰화 [ "동물원에", "동물원에서", "버스를", "사자를", "기린을", "타고", "갔다", "봤다" ] 벡터화 (1) [1, 0, 1, 0, 0, 1, 1, 0] (2) [0, 1, 0, 1, 0, 0, 0, 1] (3) [0, 1, 0, 0, 1, 0, 0, 1] BOW(bag of words)
  • 25. uni-gram [ "동물원에", "버스를" “타고", "갔다", ] n-gram 동물원에 버스를 타고 갔다. bi-gram [ "동물원에 버스를", "버스를 타고", "타고 갔다" ] tri-gram [ "동물원에 버스를 타고", "버스를 타고 갔다" ] bi-gram(1,2) [ "동물원에", "버스를", "타고갔다", "동물원에 버스를", "버스를 타고", "타고 갔다" ] tri-gram(2,3) [ "동물원에 버스를", "버스를 타고", "타고 갔다”, "동물원에 버스를 타고", "버스를 타고 갔다" ]
  • 26. TF-IDF Term frequency Inverse document frequency
  • 27. TF(단어 빈도, term frequency)는 특정한 단어가 문서 내에 얼마나 자주 등장하는지를 나타내는 값 이 값이 높을수록 문서에서 중요하다고 생각할 수 있지만 단어 자체가 문서군 내에서 자주 사용되는 경우, 이것은 그 단어가 흔하게 등장한다는 것을 의미 이것을 DF(문서 빈도, document frequency)라고 하며, 이 값의 역수를 IDF(역문서 빈도, inverse document frequency)라고함 TF-IDF는 TF와 IDF를 곱한 값
  • 29. Word2Vec one hot encoding(예 [0000001000]) 혹은 Bag of Words에서 vector size가 매우 크고 sparse 하므로 neural net 성능이 잘 나오지 않음 •주위 단어가 비슷하면 해당 단어의 의미는 유사하다 라는 아이디어 •단어를 트레이닝 시킬 때 주변 단어를 label로 매치하여 최적화 •단어를 의미를 내포한 dense vector로 매칭 시키는 것 Word2Vec은 분산 된 텍스트 표현을 사용하여 개념 간 유사성을 봄 예를 들어, 베이징과 중국이 서울과 한국이 (수도와 나라) 같은 방식으로 관련되어 있음을 이해
  • 30. 출처 : https://arxiv.org/pdf/1301.3781.pdf Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, and Jeffrey Dean. Distributed Representations of Words and Phrases and their Compositionality. In Proceedings of NIPS, 2013.
  • 31. CBOW(continuous bag-of-words) 전체 텍스트로 하나의 단어를 예측하기 때문에 작은 데이터셋일 수록 유리하다. 아래 예제에서 __ 에 들어갈 단어를 예측한다. 1) __가 맛있다. 2) __를 타는 것이 재미있다. 3) 평소보다 두 __로 많이 먹어서 __가 아프다. Skip-Gram 타겟 단어들로부터 원본 단어를 역으로 예측하는 것이다. CBOW와는 반대로 컨텍스트-타겟 쌍을 새로운 발견으로 처리하고 큰 규모의 데이터셋을 가질 때 유리 배라는 단어 주변에 올 수 있는 단어를 예측한다. 1) *배*가 맛있다. 2) *배*를 타는 것이 재미있다. 3) 평소보다 두 *배*로 많이 먹어서 *배*가 아프다.
  • 32. 청와대 국민청원 데이터 • Word2Vec을 통해 벡터화된 데이터로 단어 유사도 보기 https://github.com/corazzon/petitionWrangling
  • 34. 청와대 국민청원 데이터로 그린 워드클라우드 https://github.com/corazzon/petitionWrangling
  • 35. 청와대 국민청원 데이터 • Word2Vec으로 벡터화하고 일부 데이터를 차원축소 기법으로 줄여서 표현 •비슷한 단어끼리 비슷한 위치에 분포(예. 간곡히, 부탁드립니다) •조사와 불용어가 섞여있어서 데이터 정제가 필요 https://github.com/corazzon/petitionWrangling
  • 36. IMDB 영화리뷰 데이터 • Word2Vec으로 벡터화하고 일부 데이터를 차원축소 기법으로 줄여서 표현 •[my, i, u], [toward, into, up, down]이 비슷한 위치 https://github.com/corazzon/KaggleStruggle/tree/master/word2vec-nlp-tutorial
  • 37. 단어 수 혹은 문장길이, 특수문자, 불용어 갯수 등을 시각화 IMDB 영화리뷰의 단어 수 분포 https://github.com/corazzon/KaggleStruggle/tree/master/word2vec-nlp-tutorial
  • 38. 사용 데이터셋 : https://www.kaggle.com/c/spooky-author-identification 작가별 품사 사용에 대한 시각화 https://github.com/corazzon/KaggleStruggle/blob/master/spooky-author-identification/spooky_NLP_EDA.ipynb
  • 39. 작가별 단어개수 시각화 사용 데이터셋 : https://www.kaggle.com/c/spooky-author-identification https://github.com/corazzon/KaggleStruggle/blob/master/spooky-author-identification/spooky_NLP_EDA.ipynb
  • 40. 출처 : https://www.kaggle.com/marcospinaci/talking-plots-2-adding-grammar 작가별로 소설에 자주 등장하는 단어 사용 데이터셋 : https://www.kaggle.com/c/spooky-author-identification
  • 41. 그럼 자연어 처리로 어떤 일을 할 수 있을까?
  • 42. 자연어 처리로 할 수 있는 일 기계번역 분류 맞춤법 수정 자동요약 챗봇 스팸메일 검출 감정분석 추천 자동답변 고객센터
  • 43. 스팸메일 분류 비슷한 메일끼리 모으기 리뷰 평점 예측 차원 축소 기법으로 시각화 자연어 처리에서 활용하기