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
20. 자연어처리 도전기
NLP의 워드임베딩 작업을 통한
두 문장의 의미적 유사도 비교 방법
- 발화와 대본의 의미를 파악해 유사도를 계산하는 방법
방법1
1. 딜레이 없이 빠르게 계산해야하는 성능 이슈
(비동기로 처리하더라도 0.1~0.5초마다 신속하게 대응)
2. 다국어 지원 어려움
(각 언어마다 키워드 추출/랭귀지 모델 구축 필요)
(각 나라마다 다른 언어 - 띄어쓰기 유무, 표의어, 표음어)
3. 음성인식기의 정확도가 낮을 경우 의미 분석이 부적합
(소음, 거리 문제)
(한가지 언어를 선택해야하는 STT 엔진)
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
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
41. G Suite Marketplace TOP 38
Experience
1. 자연스러운 슬라이드 기능을 위해 다양한 테스트를 진행하면서
최적의 임계치, 가중치의 알고리즘 최적화를 진행
2. 파이썬으로 인해 2달만에 빠르게 베타 출시 경험
90,000명 이상의 사용자 확보, 다양한 국가 기술 매체에서 소개
3. 딥러닝, NLP 기술을 사용해보고 싶었지만
빠르게 포기하고 기능의 성격에 맞게 다양한 시도