SlideShare a Scribd company logo
1 of 42
Download to read offline
대본 프롬프터 서비스에서의
문장 유사도 알고리즘 개발 경험 공유
강지훈
발표자 소개
SK 브로드밴드 인턴 - 트렌드 모니터링 Tremo 오픈소스
실리콘밸리 스타트업 c3.chat 인턴 - 잡음 인지 프로젝트
SW 마에스트로 10th 인증 - ScriptSlide 프로젝트
숭실대학교 컴퓨터학부
강지훈
jihoon522@naver.com

https://github.com/thisishoon
대본 프롬프터 서비스에서의 문장 유사도 알고리즘 개발 경험 공유
01. Background
02. Process
03. Develop
04. Experience
- 어떤 기술인가요?
노트북/태블릿은 대본을 보여주는 대본 스크린이 되고,
음성인식/스마트폰은 대본을 넘겨주는 오퍼레이터가 됩니다.
이제 언제 어디서나,
자동 슬라이딩 기능을 위해 개발한 문장 유사도 알고리즘
What
washingtonpost news image
Demo
오퍼레이터 없이도, 내 음성과 스마트폰
만으로 자동 대본 전환이 가능합니다.
음성인식 기술을 활용해 읽어야할 대본과
현재의 발화 내용을 비교해, 

발표 흐름에 맞게 자동으로 대본을 전환합니다.
01. Background
02. Process
03. Develop
04. Experience
- 어떤 기술인가요?
- 어떤 과정이 있었나요?
How?
작성 대본
How?
작성 대본
발화
How?
발화 문장
Speech to Text
클라이언트에서
STT API를 통해 텍스트 변환
서버에서
STT 인식 결과와 현재 대본 유사도 비교
System
Architecture
“여러분들은 파이썬 프로그래밍”
실시간 처리
“여러분들은 파이썬”
“여러분들은 파이썬 프로그래밍 언어에”
“여러분들은 파이썬 프로그래밍 언어에 대해서”
“여러분들은 파이썬 프로그래밍 언어에 대해서 어떻게”
“여러분들은 파이썬 프로그래밍 언어에 대해서 어떻게 생각하시나요?”
response per 0.1 - 0.5 second Async Function for performance
여러분들은 파이썬 프로그래밍
언어에 대해서 어떻게 생각하시나요?
“여러분들은”
전처리
“여러분들은 Python Programming ㅋㅋ 언어에 대해서 어떻게 생각하시나요?!”
“여러분들은 Python Programming 언어에 대해서 어떻게 생각하시나요”
한글, 숫자, 영어를 제외한 문자 제거
외래어 한글 변환
“여러분들은 파이썬 프로그래밍 언어에 대해서 어떻게 생각하시나요”
여러분들은 파이썬 프로그래밍
언어에 대해서 어떻게 생각하시나요?
작성된 대본의 다양한 경우의수 STT 결과에 맞추어 전처리
발표자가 발화한 내용을 음성인식을 통해 텍스트로 변환해 

현재 읽어야 할 대본과의 일치율을 비교하는 알고리즘.
Triple-S Algorithm
(Spoken-Sentence-Similarity)
origin_sentence
자연어처리 도전기 - 자카드 유사도
이제서야 막 파이썬을 알게 된 사람들

파이썬으로 어떤 것이든 만들어보고 세상에 기여해보고자 노력하고 있는 사람들

다른 누군가에게 파이썬이 좋다고 알리고 싶은 사람들까지
이제 막 파이썬이 무엇인지 알게 된 사람들, 

파이썬으로 무언가를 만들고 연구하며 세상에 기여하고 있는 사람들, 

다른 이에게 파이썬을 더 널리 알리고 싶은 사람들까지.
speech_sentence
0.55
자연어처리 도전기 - 자카드 유사도
origin_sentence
speech_sentence
1. 형태소 추출
origin_sentence
speech_sentence
2. 명사 추출
'은', '알', '게', '는', '고', '에게', '막', 

'다른', '싶', 'ㄴ', '만들', '알리', '사람', 

'으로', '파이썬', '을', '하', '들', '이', '기여', 

'있', '세상', '까지', '되', '에'
'세상', '파이썬', '기여', '사람'
0.5
0.36
자연어처리 도전기 - TF_IDF, 코사인 유사도
0.46
자연어처리 도전기 - 유클리디언, 맨하탄 유사도
유클리디언 유사도
맨하탄 유사도
0.12
0.48
자연어처리 도전기
NLP의 워드임베딩 작업을 통한
두 문장의 의미적 유사도 비교 방법
- 발화와 대본의 의미를 파악해 유사도를 계산하는 방법
방법1
1. 딜레이 없이 빠르게 계산해야하는 성능 이슈

(비동기로 처리하더라도 0.1~0.5초마다 신속하게 대응)

2. 다국어 지원 어려움

(각 언어마다 키워드 추출/랭귀지 모델 구축 필요)

(각 나라마다 다른 언어 - 띄어쓰기 유무, 표의어, 표음어)

3. 음성인식기의 정확도가 낮을 경우 의미 분석이 부적합

(소음, 거리 문제)

(한가지 언어를 선택해야하는 STT 엔진)
01. Background
02. Process
03. Develop
04. Experience
- 어떤 기술인가요?
- 어떤 과정이 있었나요?
- 어떻게 구현하셨나요?
NLP의 워드임베딩 작업을 통한
두 문장의 의미적 유사도 비교 방법
- 발화와 대본의 의미를 파악해 유사도를 계산하는 방법
목표 문장
방법1
유사도 비교
- 의미 대신 발화와 대본의 음절단위에 대한 유사도를 계산
문장 유사도 비교의 두 가지 방법론
[ 송장님의 축산 제한을 덜컥 수락해 버렸지만 ]
발화음성 인식 결과
가장 기본적인 음절 단위로
두 문장의 단순 문자열 유사도를 비교하는 방법
방법2
- 하나의 알고리즘으로 음절, 음소, 표의기반의 

모든 언어 적용 가능
- 음성인식기의 정확도가 낮아도, 음절 일치 비교 가능
- 짧은 시간 이내에 다국어 지원 어려움

(각 언어마다 키워드 추출/랭귀지 모델 구축 필요)

- 음성인식기의 정확도가 낮을 경우 의미 분석이 부적합

[ 총장님의 축사 제안을 덜컥 수락해버렸지만 ]
Triple-S Algorithm - 음절 단위 비교
- N-Word Window를 기반, 후반부의 3~5개의 어절만을 판단하여
현재 위치를 추적.


- 논문의 이념을 참고하여, 발화 중, 누군가의 질문과 다른 발화로 인한
예외처리를 더한 알고리즘 개발. 그로인해 키워드 중심의 대본도 처리 가능

- 인식기의 오류와 잡음 환경에 대한 확실성의 부족, 미등록어 발생의 문제로 인해
정확성 보장 불가능
ScriptSlide의 핵심 기술
여러분들은 프로그래밍에 대해서 

고민해보신 적이 있으신가요?“
여러분들은 파이썬에 대해서
어떻게 생각하시나요?
발화에 최적화된 유사도 알고리즘
ScriptSlide의 핵심 기술
ScriptSlide의 핵심 기술
이제서야 막 파이썬을 알게 된 사람들



파이썬으로 어떤 것이든 만들어보고 세상에 기여해보고자 노력하고 있는 사람들

다른 누군가에게 파이썬이 좋다고 알리고 싶은 사람들까지
About Triple-S Algorithm
1. 발표에 적합한 ‘LCS 알고리즘’ (기반 알고리즘)
대표적인 단순 문자열 일치 알고리즘
발표 도중에 대본에 없는 말을
길게 하더라도 일치하는 부분만
매칭할 수 있음.
- Edit Distance
- Longest Common Sentence (LCS)
- KMP
[ 총장님의 축사 제안을 덜컥 수락해버렸지만 ]목표 문장
[ 송장님의 멋진 더 멋진 매우 멋진 축산 제한을 덜컥 수락해 버렸지만 ]발화 음성
총 장 님 의 축 사 제 안
송 0 0 0 0 0 0 0 0
장 0 1 1 1 1 1 1 1
님 0 1 2 2 2 2 2 2
의 0 1 2 3 3 3 3 3
멋 0 1 2 3 3 3 3 3
진 0 1 2 3 3 3 3 3
축 0 1 2 3 4 4 4 4
산 0 1 2 3 4 4 4 4
About Triple-S Algorithm
1. 발표에 적합한 ‘LCS 알고리즘’ (Triple-S Algorithm의 기반 알고리즘)
Code Example
2. 다양한 상황에서도 대본을 넘길 수 있는 방법 - ‘Threshold’와 ‘가중치’
음성인식 결과와 대본이 항상 일치하는 것은 아님
- 음성인식기가 제대로 음성을 인식 하지 못한 상황
- 대본이 구어체와 맞지 않아 대본과 다르게 말하는 상황
- 발표자가 의도적으로 문장을 변형해서 말하는 상황
여러 다양한 상황에서도 대본을 넘길 수 있도록 Threshold를 설정.
문장의 음절 순서에 기반한 ‘가중치’ 부여
y = x
* 단, 처음부터 정확하게 읽을시 대본을 끝까지 다 읽지 않았는데도
Threshold 를 넘길 수도 있기 때문에 이를 고려해야 함
대본의 후반부 일수록 더 높은 가중치를 주어
문장의 뒷부분까지 읽어야
Threshold를 넘을 수 있도록 함
About Triple-S Algorithm
2. 다양한 상황에서도 대본을 넘길 수 있는 방법 - ‘Threshold’와 ‘가중치’
About Triple-S Algorithm
Code Example
3. 발표 최적화를 위해, 다양한 시행착오로 알고리즘 고도화
y = log2 x
가중치에 로그 함수 적용 연속 일치에 대한 콤보 가중치
다른 단어, 같은 음절 구분을
위한 Bi-gram 적용
가중치가 후반부에 과도하게
편향되지 않고 문장 전체를 균등하게 파악
y = log2 x
y = log x
같은 음절/문장이 중복해서 나올시
연속해서 일치하는 곳에 부가 가중치
발표를 위해
발로 만든 재무제표
한 문장에 같은 음절이 나와도 구분 가능
* 앞의 ‘발’, ‘표’와 뒤의 ‘발’, ‘표’를 구분
(콤보 함수)
About Triple-S Algorithm
3. 발표 최적화를 위해, 다양한 시행착오로 알고리즘 고도화
y = log2 x
가중치에 로그 함수 적용
가중치가 후반부에 과도하게
편향되지 않고 문장 전체를 균등하게 파악
About Triple-S Algorithm
Code Example
3. 발표 최적화를 위해, 다양한 시행착오로 알고리즘 고도화
연속 일치에 대한 콤보 가중치
y = log2 x
y = log x
같은 음절/문장이 중복해서 나올시
연속해서 일치하는 곳에 부가 가중치
(콤보 함수)
About Triple-S Algorithm
“여러분들은 파이썬에 대해 어떻게 생각하시나요?”
“여러분은 파이선을 아시나요?”
3. 발표 최적화를 위해, 다양한 시행착오로 알고리즘 고도화
다른 단어, 같은 음절 구분을
위한 Bi-gram 적용
발표를 위해
발로 만든 재무제표
한 문장에 같은 음절이 나와도 구분 가능
* 앞의 ‘발’, ‘표’와 뒤의 ‘발’, ‘표’를 구분
About Triple-S Algorithm
“여러분들은 파이썬에 대해 어떻게 생각하시나요?”
“여러분은 파이선을 아시나요?”
3. 발표 최적화를 위해, 다양한 시행착오로 알고리즘 고도화
다른 단어, 같은 음절 구분을
위한 Bi-gram 적용
발표를 위해
발로 만든 재무제표
한 문장에 같은 음절이 나와도 구분 가능
* 앞의 ‘발’, ‘표’와 뒤의 ‘발’, ‘표’를 구분
About Triple-S Algorithm
Code Example
문장 길이와 무관하게,
대본 전환 시점은 일관되어야 함
4. 현재 발표 위치 Highlight 기능

발표의 흐름에 맞게 자연스러운 대본 전환

자연스럽게 대본을 전환하기 위해선

마지막 3~4번째 단어를 말하고 있을 때

대본을 전환시켜 다음 문장을 보여주어야 함
유사도 계산과 동시에 ‘실시간 발화 위치’를 계산
About Triple-S Algorithm
Demo
5. 현재 문장을 읽지 않고도 다음 문장으로 전환 가능
발표 상황에 따라 현재 문장을 스킵할 경우에도
대본은 발표자를 따라갈 수 있어야 함
발표자의 발화에 대해 현재 대본 뿐만 아니라, 

다음 대본까지도 실시간으로 일치율을 비교해

현재 문장을 스킵하고 곧바로 다음 문장으로 전환
“바로 발표를 시작…
안녕하세요 여러분 반갑습니다.
바로 발표를 시작하도록 하겠습니다.
(첫 문장 스킵 후)
About Triple-S Algorithm
Demo
5. 현재 문장을 읽지 않고도 다음 문장으로 전환 가능
발표 상황에 따라 현재 문장을 스킵할 경우에도
대본은 발표자를 따라갈 수 있어야 함
발표자의 발화에 대해 현재 대본 뿐만 아니라, 

다음 대본까지도 실시간으로 일치율을 비교해

현재 문장을 스킵하고 곧바로 다음 문장으로 전환
“바로 발표를 시작…
안녕하세요 여러분 반갑습니다.
바로 발표를 시작하도록 하겠습니다.
(첫 문장 스킵 후)
About Triple-S Algorithm
Code Example
발표에 최적화된 Triple-S Algorithm(Spoken, Sentence Similarity)
70
77.5
85
92.5
100
Test1 Test2 Test3 Test1 Test2 Test3
음성인식기 정확도 Triple-S Score 성공률
노이즈가 없는 환경 노이즈가 있는 환경
대본 전환 평균 성공률
(음성인식 정확도 89%)
95%
대본 전환 평균 성공률
(음성인식 정확도 79%)
91%
Test1: 서울대학교 2019학년도 신입생 입학식 식사 (44문장)
Test2: 서울대학교 제73회 후기 학위수여식 식사 (44문장)
Test3: 서울대학교 제73주년 개교기념식 기념사 (30문장)
노이즈: 발화자 옆에서 가사가 없는 클래식 음악을 재생
* 음성인식기 정확도: 발화 결과와 현재 대본을 Edit Distance로 비교
* Triple-S Score: 발화 결과와 현재 대본을 Triple-S Algorithm으로 계산
노이즈 없는 환경 노이즈 있는 환경
About Triple-S Algorithm
01. Background
02. Process
03. Develop
04. Experience
- 어떤 기술인가요?
- 어떤 과정이 있었나요?
- 어떻게 구현하셨나요?
- 무엇을 느끼셨나요?
G Suite Marketplace TOP 38
Experience
1. 자연스러운 슬라이드 기능을 위해 다양한 테스트를 진행하면서 

최적의 임계치, 가중치의 알고리즘 최적화를 진행
2. 파이썬으로 인해 2달만에 빠르게 베타 출시 경험

90,000명 이상의 사용자 확보, 다양한 국가 기술 매체에서 소개
3. 딥러닝, NLP 기술을 사용해보고 싶었지만 

빠르게 포기하고 기능의 성격에 맞게 다양한 시도
감사합니다
강지훈
E-mail : jihoon522@naver.com
Github: https://github.com/thisishoon
Linked-in: https://www.linkedin.com/in/thisishoon/

More Related Content

What's hot (7)

파이썬과 자연어 5 | 딥러닝
파이썬과 자연어 5 | 딥러닝파이썬과 자연어 5 | 딥러닝
파이썬과 자연어 5 | 딥러닝
 
자연어5 | 1차강의
자연어5 | 1차강의자연어5 | 1차강의
자연어5 | 1차강의
 
Python과 flask 입문(1)
Python과 flask 입문(1)Python과 flask 입문(1)
Python과 flask 입문(1)
 
파이썬과 자연어 3 | 문장구조
파이썬과 자연어 3 | 문장구조파이썬과 자연어 3 | 문장구조
파이썬과 자연어 3 | 문장구조
 
자연어4 | 1차강의
자연어4 | 1차강의자연어4 | 1차강의
자연어4 | 1차강의
 
DP 알고리즘에 대해 알아보자.pdf
DP 알고리즘에 대해 알아보자.pdfDP 알고리즘에 대해 알아보자.pdf
DP 알고리즘에 대해 알아보자.pdf
 
파이썬과 자연어 4 | word/doc2vec
파이썬과 자연어 4 | word/doc2vec파이썬과 자연어 4 | word/doc2vec
파이썬과 자연어 4 | word/doc2vec
 

Similar to Pycon Korea 2020

GNMT로 알아보는 신경망 기반 기계번역
GNMT로 알아보는 신경망 기반 기계번역GNMT로 알아보는 신경망 기반 기계번역
GNMT로 알아보는 신경망 기반 기계번역Byeong il Ko
 
Machine translation survey vol2
Machine translation survey   vol2Machine translation survey   vol2
Machine translation survey vol2gohyunwoong
 
Sequence to Sequence Learning with Neural Networks
Sequence to Sequence Learning with Neural NetworksSequence to Sequence Learning with Neural Networks
Sequence to Sequence Learning with Neural NetworksHoon Heo
 
(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)
(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)
(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)Adonis Han
 
Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Taekyung Han
 
PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기Changwan Jun
 
Character-Aware Neural Language Models
Character-Aware Neural Language ModelsCharacter-Aware Neural Language Models
Character-Aware Neural Language ModelsHoon Heo
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용Susang Kim
 
AWS CLOUD 2018-AWS의 새로운 언어, 음성, 텍스트 처리 인공지능 서비스 (남궁영환 솔루션즈 아키텍트)
AWS CLOUD 2018-AWS의 새로운 언어, 음성, 텍스트 처리 인공지능 서비스 (남궁영환 솔루션즈 아키텍트)AWS CLOUD 2018-AWS의 새로운 언어, 음성, 텍스트 처리 인공지능 서비스 (남궁영환 솔루션즈 아키텍트)
AWS CLOUD 2018-AWS의 새로운 언어, 음성, 텍스트 처리 인공지능 서비스 (남궁영환 솔루션즈 아키텍트)Amazon Web Services Korea
 
Variational Autoencoder를 여러 가지 각도에서 이해하기 (Understanding Variational Autoencod...
Variational Autoencoder를 여러 가지 각도에서 이해하기 (Understanding Variational Autoencod...Variational Autoencoder를 여러 가지 각도에서 이해하기 (Understanding Variational Autoencod...
Variational Autoencoder를 여러 가지 각도에서 이해하기 (Understanding Variational Autoencod...Haezoom Inc.
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임codenavy
 
타입스크립트 잘 사용하기
타입스크립트 잘 사용하기타입스크립트 잘 사용하기
타입스크립트 잘 사용하기SanghoYun
 
3주차 language
3주차 language3주차 language
3주차 language준혁 이
 
2주차: 뉴스 빅데이터 분석을 위한 자연어처리 이론
2주차: 뉴스 빅데이터 분석을 위한 자연어처리 이론2주차: 뉴스 빅데이터 분석을 위한 자연어처리 이론
2주차: 뉴스 빅데이터 분석을 위한 자연어처리 이론Daemin Park
 
한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기Ted Taekyoon Choi
 
Phrase Tagger, 구문 태거
Phrase Tagger, 구문 태거Phrase Tagger, 구문 태거
Phrase Tagger, 구문 태거찬희 이
 
2108 [LangCon2021] kosp2e
2108 [LangCon2021] kosp2e2108 [LangCon2021] kosp2e
2108 [LangCon2021] kosp2eWarNik Chow
 
Deep Learning for Chatbot (2/4)
Deep Learning for Chatbot (2/4)Deep Learning for Chatbot (2/4)
Deep Learning for Chatbot (2/4)Jaemin Cho
 
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
<Little Big Data #1> 한국어 채팅 데이터로  머신러닝 하기<Little Big Data #1> 한국어 채팅 데이터로  머신러닝 하기
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기Han-seok Jo
 

Similar to Pycon Korea 2020 (20)

GNMT로 알아보는 신경망 기반 기계번역
GNMT로 알아보는 신경망 기반 기계번역GNMT로 알아보는 신경망 기반 기계번역
GNMT로 알아보는 신경망 기반 기계번역
 
Machine translation survey vol2
Machine translation survey   vol2Machine translation survey   vol2
Machine translation survey vol2
 
Sequence to Sequence Learning with Neural Networks
Sequence to Sequence Learning with Neural NetworksSequence to Sequence Learning with Neural Networks
Sequence to Sequence Learning with Neural Networks
 
(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)
(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)
(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)
 
Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차
 
PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기
 
Character-Aware Neural Language Models
Character-Aware Neural Language ModelsCharacter-Aware Neural Language Models
Character-Aware Neural Language Models
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
 
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
 
AWS CLOUD 2018-AWS의 새로운 언어, 음성, 텍스트 처리 인공지능 서비스 (남궁영환 솔루션즈 아키텍트)
AWS CLOUD 2018-AWS의 새로운 언어, 음성, 텍스트 처리 인공지능 서비스 (남궁영환 솔루션즈 아키텍트)AWS CLOUD 2018-AWS의 새로운 언어, 음성, 텍스트 처리 인공지능 서비스 (남궁영환 솔루션즈 아키텍트)
AWS CLOUD 2018-AWS의 새로운 언어, 음성, 텍스트 처리 인공지능 서비스 (남궁영환 솔루션즈 아키텍트)
 
Variational Autoencoder를 여러 가지 각도에서 이해하기 (Understanding Variational Autoencod...
Variational Autoencoder를 여러 가지 각도에서 이해하기 (Understanding Variational Autoencod...Variational Autoencoder를 여러 가지 각도에서 이해하기 (Understanding Variational Autoencod...
Variational Autoencoder를 여러 가지 각도에서 이해하기 (Understanding Variational Autoencod...
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임
 
타입스크립트 잘 사용하기
타입스크립트 잘 사용하기타입스크립트 잘 사용하기
타입스크립트 잘 사용하기
 
3주차 language
3주차 language3주차 language
3주차 language
 
2주차: 뉴스 빅데이터 분석을 위한 자연어처리 이론
2주차: 뉴스 빅데이터 분석을 위한 자연어처리 이론2주차: 뉴스 빅데이터 분석을 위한 자연어처리 이론
2주차: 뉴스 빅데이터 분석을 위한 자연어처리 이론
 
한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기
 
Phrase Tagger, 구문 태거
Phrase Tagger, 구문 태거Phrase Tagger, 구문 태거
Phrase Tagger, 구문 태거
 
2108 [LangCon2021] kosp2e
2108 [LangCon2021] kosp2e2108 [LangCon2021] kosp2e
2108 [LangCon2021] kosp2e
 
Deep Learning for Chatbot (2/4)
Deep Learning for Chatbot (2/4)Deep Learning for Chatbot (2/4)
Deep Learning for Chatbot (2/4)
 
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
<Little Big Data #1> 한국어 채팅 데이터로  머신러닝 하기<Little Big Data #1> 한국어 채팅 데이터로  머신러닝 하기
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
 

Pycon Korea 2020

  • 1. 대본 프롬프터 서비스에서의 문장 유사도 알고리즘 개발 경험 공유 강지훈
  • 2. 발표자 소개 SK 브로드밴드 인턴 - 트렌드 모니터링 Tremo 오픈소스 실리콘밸리 스타트업 c3.chat 인턴 - 잡음 인지 프로젝트 SW 마에스트로 10th 인증 - ScriptSlide 프로젝트 숭실대학교 컴퓨터학부 강지훈 jihoon522@naver.com
 https://github.com/thisishoon
  • 3. 대본 프롬프터 서비스에서의 문장 유사도 알고리즘 개발 경험 공유
  • 4. 01. Background 02. Process 03. Develop 04. Experience - 어떤 기술인가요?
  • 5. 노트북/태블릿은 대본을 보여주는 대본 스크린이 되고, 음성인식/스마트폰은 대본을 넘겨주는 오퍼레이터가 됩니다. 이제 언제 어디서나, 자동 슬라이딩 기능을 위해 개발한 문장 유사도 알고리즘 What washingtonpost news image
  • 7. 오퍼레이터 없이도, 내 음성과 스마트폰 만으로 자동 대본 전환이 가능합니다. 음성인식 기술을 활용해 읽어야할 대본과 현재의 발화 내용을 비교해, 
 발표 흐름에 맞게 자동으로 대본을 전환합니다.
  • 8. 01. Background 02. Process 03. Develop 04. Experience - 어떤 기술인가요? - 어떤 과정이 있었나요?
  • 12. 클라이언트에서 STT API를 통해 텍스트 변환 서버에서 STT 인식 결과와 현재 대본 유사도 비교 System Architecture
  • 13. “여러분들은 파이썬 프로그래밍” 실시간 처리 “여러분들은 파이썬” “여러분들은 파이썬 프로그래밍 언어에” “여러분들은 파이썬 프로그래밍 언어에 대해서” “여러분들은 파이썬 프로그래밍 언어에 대해서 어떻게” “여러분들은 파이썬 프로그래밍 언어에 대해서 어떻게 생각하시나요?” response per 0.1 - 0.5 second Async Function for performance 여러분들은 파이썬 프로그래밍 언어에 대해서 어떻게 생각하시나요? “여러분들은”
  • 14. 전처리 “여러분들은 Python Programming ㅋㅋ 언어에 대해서 어떻게 생각하시나요?!” “여러분들은 Python Programming 언어에 대해서 어떻게 생각하시나요” 한글, 숫자, 영어를 제외한 문자 제거 외래어 한글 변환 “여러분들은 파이썬 프로그래밍 언어에 대해서 어떻게 생각하시나요” 여러분들은 파이썬 프로그래밍 언어에 대해서 어떻게 생각하시나요? 작성된 대본의 다양한 경우의수 STT 결과에 맞추어 전처리
  • 15. 발표자가 발화한 내용을 음성인식을 통해 텍스트로 변환해 
 현재 읽어야 할 대본과의 일치율을 비교하는 알고리즘. Triple-S Algorithm (Spoken-Sentence-Similarity)
  • 16. origin_sentence 자연어처리 도전기 - 자카드 유사도 이제서야 막 파이썬을 알게 된 사람들
 파이썬으로 어떤 것이든 만들어보고 세상에 기여해보고자 노력하고 있는 사람들 다른 누군가에게 파이썬이 좋다고 알리고 싶은 사람들까지 이제 막 파이썬이 무엇인지 알게 된 사람들, 
 파이썬으로 무언가를 만들고 연구하며 세상에 기여하고 있는 사람들, 
 다른 이에게 파이썬을 더 널리 알리고 싶은 사람들까지. speech_sentence 0.55
  • 17. 자연어처리 도전기 - 자카드 유사도 origin_sentence speech_sentence 1. 형태소 추출 origin_sentence speech_sentence 2. 명사 추출 '은', '알', '게', '는', '고', '에게', '막', 
 '다른', '싶', 'ㄴ', '만들', '알리', '사람', 
 '으로', '파이썬', '을', '하', '들', '이', '기여', 
 '있', '세상', '까지', '되', '에' '세상', '파이썬', '기여', '사람' 0.5 0.36
  • 18. 자연어처리 도전기 - TF_IDF, 코사인 유사도 0.46
  • 19. 자연어처리 도전기 - 유클리디언, 맨하탄 유사도 유클리디언 유사도 맨하탄 유사도 0.12 0.48
  • 20. 자연어처리 도전기 NLP의 워드임베딩 작업을 통한 두 문장의 의미적 유사도 비교 방법 - 발화와 대본의 의미를 파악해 유사도를 계산하는 방법 방법1 1. 딜레이 없이 빠르게 계산해야하는 성능 이슈
 (비동기로 처리하더라도 0.1~0.5초마다 신속하게 대응)
 2. 다국어 지원 어려움
 (각 언어마다 키워드 추출/랭귀지 모델 구축 필요)
 (각 나라마다 다른 언어 - 띄어쓰기 유무, 표의어, 표음어)
 3. 음성인식기의 정확도가 낮을 경우 의미 분석이 부적합
 (소음, 거리 문제)
 (한가지 언어를 선택해야하는 STT 엔진)
  • 21. 01. Background 02. Process 03. Develop 04. Experience - 어떤 기술인가요? - 어떤 과정이 있었나요? - 어떻게 구현하셨나요?
  • 22. NLP의 워드임베딩 작업을 통한 두 문장의 의미적 유사도 비교 방법 - 발화와 대본의 의미를 파악해 유사도를 계산하는 방법 목표 문장 방법1 유사도 비교 - 의미 대신 발화와 대본의 음절단위에 대한 유사도를 계산 문장 유사도 비교의 두 가지 방법론 [ 송장님의 축산 제한을 덜컥 수락해 버렸지만 ] 발화음성 인식 결과 가장 기본적인 음절 단위로 두 문장의 단순 문자열 유사도를 비교하는 방법 방법2 - 하나의 알고리즘으로 음절, 음소, 표의기반의 
 모든 언어 적용 가능 - 음성인식기의 정확도가 낮아도, 음절 일치 비교 가능 - 짧은 시간 이내에 다국어 지원 어려움 (각 언어마다 키워드 추출/랭귀지 모델 구축 필요) - 음성인식기의 정확도가 낮을 경우 의미 분석이 부적합 [ 총장님의 축사 제안을 덜컥 수락해버렸지만 ]
  • 23. Triple-S Algorithm - 음절 단위 비교 - N-Word Window를 기반, 후반부의 3~5개의 어절만을 판단하여 현재 위치를 추적. 
 - 논문의 이념을 참고하여, 발화 중, 누군가의 질문과 다른 발화로 인한 예외처리를 더한 알고리즘 개발. 그로인해 키워드 중심의 대본도 처리 가능
 - 인식기의 오류와 잡음 환경에 대한 확실성의 부족, 미등록어 발생의 문제로 인해 정확성 보장 불가능
  • 24. ScriptSlide의 핵심 기술 여러분들은 프로그래밍에 대해서 
 고민해보신 적이 있으신가요?“ 여러분들은 파이썬에 대해서 어떻게 생각하시나요? 발화에 최적화된 유사도 알고리즘
  • 26. ScriptSlide의 핵심 기술 이제서야 막 파이썬을 알게 된 사람들
 
 파이썬으로 어떤 것이든 만들어보고 세상에 기여해보고자 노력하고 있는 사람들
 다른 누군가에게 파이썬이 좋다고 알리고 싶은 사람들까지
  • 27. About Triple-S Algorithm 1. 발표에 적합한 ‘LCS 알고리즘’ (기반 알고리즘) 대표적인 단순 문자열 일치 알고리즘 발표 도중에 대본에 없는 말을 길게 하더라도 일치하는 부분만 매칭할 수 있음. - Edit Distance - Longest Common Sentence (LCS) - KMP [ 총장님의 축사 제안을 덜컥 수락해버렸지만 ]목표 문장 [ 송장님의 멋진 더 멋진 매우 멋진 축산 제한을 덜컥 수락해 버렸지만 ]발화 음성 총 장 님 의 축 사 제 안 송 0 0 0 0 0 0 0 0 장 0 1 1 1 1 1 1 1 님 0 1 2 2 2 2 2 2 의 0 1 2 3 3 3 3 3 멋 0 1 2 3 3 3 3 3 진 0 1 2 3 3 3 3 3 축 0 1 2 3 4 4 4 4 산 0 1 2 3 4 4 4 4
  • 28. About Triple-S Algorithm 1. 발표에 적합한 ‘LCS 알고리즘’ (Triple-S Algorithm의 기반 알고리즘) Code Example
  • 29. 2. 다양한 상황에서도 대본을 넘길 수 있는 방법 - ‘Threshold’와 ‘가중치’ 음성인식 결과와 대본이 항상 일치하는 것은 아님 - 음성인식기가 제대로 음성을 인식 하지 못한 상황 - 대본이 구어체와 맞지 않아 대본과 다르게 말하는 상황 - 발표자가 의도적으로 문장을 변형해서 말하는 상황 여러 다양한 상황에서도 대본을 넘길 수 있도록 Threshold를 설정. 문장의 음절 순서에 기반한 ‘가중치’ 부여 y = x * 단, 처음부터 정확하게 읽을시 대본을 끝까지 다 읽지 않았는데도 Threshold 를 넘길 수도 있기 때문에 이를 고려해야 함 대본의 후반부 일수록 더 높은 가중치를 주어 문장의 뒷부분까지 읽어야 Threshold를 넘을 수 있도록 함 About Triple-S Algorithm
  • 30. 2. 다양한 상황에서도 대본을 넘길 수 있는 방법 - ‘Threshold’와 ‘가중치’ About Triple-S Algorithm Code Example
  • 31. 3. 발표 최적화를 위해, 다양한 시행착오로 알고리즘 고도화 y = log2 x 가중치에 로그 함수 적용 연속 일치에 대한 콤보 가중치 다른 단어, 같은 음절 구분을 위한 Bi-gram 적용 가중치가 후반부에 과도하게 편향되지 않고 문장 전체를 균등하게 파악 y = log2 x y = log x 같은 음절/문장이 중복해서 나올시 연속해서 일치하는 곳에 부가 가중치 발표를 위해 발로 만든 재무제표 한 문장에 같은 음절이 나와도 구분 가능 * 앞의 ‘발’, ‘표’와 뒤의 ‘발’, ‘표’를 구분 (콤보 함수) About Triple-S Algorithm
  • 32. 3. 발표 최적화를 위해, 다양한 시행착오로 알고리즘 고도화 y = log2 x 가중치에 로그 함수 적용 가중치가 후반부에 과도하게 편향되지 않고 문장 전체를 균등하게 파악 About Triple-S Algorithm Code Example
  • 33. 3. 발표 최적화를 위해, 다양한 시행착오로 알고리즘 고도화 연속 일치에 대한 콤보 가중치 y = log2 x y = log x 같은 음절/문장이 중복해서 나올시 연속해서 일치하는 곳에 부가 가중치 (콤보 함수) About Triple-S Algorithm “여러분들은 파이썬에 대해 어떻게 생각하시나요?” “여러분은 파이선을 아시나요?”
  • 34. 3. 발표 최적화를 위해, 다양한 시행착오로 알고리즘 고도화 다른 단어, 같은 음절 구분을 위한 Bi-gram 적용 발표를 위해 발로 만든 재무제표 한 문장에 같은 음절이 나와도 구분 가능 * 앞의 ‘발’, ‘표’와 뒤의 ‘발’, ‘표’를 구분 About Triple-S Algorithm “여러분들은 파이썬에 대해 어떻게 생각하시나요?” “여러분은 파이선을 아시나요?”
  • 35. 3. 발표 최적화를 위해, 다양한 시행착오로 알고리즘 고도화 다른 단어, 같은 음절 구분을 위한 Bi-gram 적용 발표를 위해 발로 만든 재무제표 한 문장에 같은 음절이 나와도 구분 가능 * 앞의 ‘발’, ‘표’와 뒤의 ‘발’, ‘표’를 구분 About Triple-S Algorithm Code Example
  • 36. 문장 길이와 무관하게, 대본 전환 시점은 일관되어야 함 4. 현재 발표 위치 Highlight 기능
 발표의 흐름에 맞게 자연스러운 대본 전환
 자연스럽게 대본을 전환하기 위해선 마지막 3~4번째 단어를 말하고 있을 때 대본을 전환시켜 다음 문장을 보여주어야 함 유사도 계산과 동시에 ‘실시간 발화 위치’를 계산 About Triple-S Algorithm Demo
  • 37. 5. 현재 문장을 읽지 않고도 다음 문장으로 전환 가능 발표 상황에 따라 현재 문장을 스킵할 경우에도 대본은 발표자를 따라갈 수 있어야 함 발표자의 발화에 대해 현재 대본 뿐만 아니라, 다음 대본까지도 실시간으로 일치율을 비교해 현재 문장을 스킵하고 곧바로 다음 문장으로 전환 “바로 발표를 시작… 안녕하세요 여러분 반갑습니다. 바로 발표를 시작하도록 하겠습니다. (첫 문장 스킵 후) About Triple-S Algorithm Demo
  • 38. 5. 현재 문장을 읽지 않고도 다음 문장으로 전환 가능 발표 상황에 따라 현재 문장을 스킵할 경우에도 대본은 발표자를 따라갈 수 있어야 함 발표자의 발화에 대해 현재 대본 뿐만 아니라, 다음 대본까지도 실시간으로 일치율을 비교해 현재 문장을 스킵하고 곧바로 다음 문장으로 전환 “바로 발표를 시작… 안녕하세요 여러분 반갑습니다. 바로 발표를 시작하도록 하겠습니다. (첫 문장 스킵 후) About Triple-S Algorithm Code Example
  • 39. 발표에 최적화된 Triple-S Algorithm(Spoken, Sentence Similarity) 70 77.5 85 92.5 100 Test1 Test2 Test3 Test1 Test2 Test3 음성인식기 정확도 Triple-S Score 성공률 노이즈가 없는 환경 노이즈가 있는 환경 대본 전환 평균 성공률 (음성인식 정확도 89%) 95% 대본 전환 평균 성공률 (음성인식 정확도 79%) 91% Test1: 서울대학교 2019학년도 신입생 입학식 식사 (44문장) Test2: 서울대학교 제73회 후기 학위수여식 식사 (44문장) Test3: 서울대학교 제73주년 개교기념식 기념사 (30문장) 노이즈: 발화자 옆에서 가사가 없는 클래식 음악을 재생 * 음성인식기 정확도: 발화 결과와 현재 대본을 Edit Distance로 비교 * Triple-S Score: 발화 결과와 현재 대본을 Triple-S Algorithm으로 계산 노이즈 없는 환경 노이즈 있는 환경 About Triple-S Algorithm
  • 40. 01. Background 02. Process 03. Develop 04. Experience - 어떤 기술인가요? - 어떤 과정이 있었나요? - 어떻게 구현하셨나요? - 무엇을 느끼셨나요?
  • 41. G Suite Marketplace TOP 38 Experience 1. 자연스러운 슬라이드 기능을 위해 다양한 테스트를 진행하면서 
 최적의 임계치, 가중치의 알고리즘 최적화를 진행 2. 파이썬으로 인해 2달만에 빠르게 베타 출시 경험
 90,000명 이상의 사용자 확보, 다양한 국가 기술 매체에서 소개 3. 딥러닝, NLP 기술을 사용해보고 싶었지만 
 빠르게 포기하고 기능의 성격에 맞게 다양한 시도
  • 42. 감사합니다 강지훈 E-mail : jihoon522@naver.com Github: https://github.com/thisishoon Linked-in: https://www.linkedin.com/in/thisishoon/