Coder Social home page Coder Social logo

will-you-talk-with-me's People

Contributors

aiclaudev avatar keyong2523 avatar tgmins avatar

Stargazers

 avatar

Forkers

tgmins keyong2523

will-you-talk-with-me's Issues

19주차 회의록

  • 이번주에는 추가적으로 일을 진행하는 것보다 주제의 호응도에 대해서 교수님께서 피드백을 주신 사항들에 대해서 좀 더 고민해보고 아이디어를 공유하는 시간을 가졌습니다.
  • 지금까지 주제에 대한 상호 연관성만을 생각하고 사람이 생각하는 메커니즘으로만 고민하였습니다. 즉 너무 복잡하게 로직을 생각한 것이 아닌가 의문이 들었기에 복잡한 연관성을 생각하기 보다는 대화가 잘 통하는 경우에서 우리가 알게 모르게 있는 간단한 수리적 요소가 있는지 고민해 보았습니다. Ex. 음악의 비트 수로 장르 판별

[1] 서로 말하는 단어 수가 비슷하다.

  • 대화의 주제가 서로가 잘 아는 부분이면 두 사람이 주고받는 대화의 양이 서로 비슷할 것이라는 가정
  • 만약 주제가 한사람은 잘 모르는 분야, 다른 한 사람은 잘 아는 분야이면 잘 아는 사람만 이야기를 하거나 이제 다른 주제로 넘어가는 경우가 많을 것이라는 생각입니다.

[2] 물음표가 서로 비슷하게 나온다.

  • 호감이 갈수록 상대에게 질문하며 알아가고 싶은 심리를 가정
  • 이는 실제로 ‘대화를 잘하는 방법’에서도 자주 나옵니다. (평서문이 아닌 의문문으로 말하라.)
  • 하지만, 이러한 물음이 한 사람에게만 너무 많이 나온다면 인터뷰 형식 또는 일방적인 대화라고 생각할 수 있으므로 호응도가 좋은 대화가 아닐 것이라는 생각이 듭니다.

[3] 상대방이 말한 말을 내가 다시 나의 견해, 경험을 넣어서 대답할 때 이전의 상대방이 한 말을 다시 반복한다.
남: 에버랜드 다녀오셨어요?
여: 네 이번주에 친구들이랑 다녀왔는데 사람이 너무 많았어요
남: 아 사람이 많았어요? 날씨가 요즘 너무 좋아서 그런가봐요 사람이 많았으면 놀이기구도 많이 못 타셨겠네요
여: 네… 별로 못 탔어요 그래도 t 익스프레스는 기다려서 탔는데 역시나 재밌었어요
남: t 익스프레스 진짜 재밌죠! (중략…)

  • 이 방법을 어떻게 알고리즘화 시킬 것인가?
    -> 나누었던 모든 대화에서 각각 토픽을 추출함 이때 남,녀 구분해서 남의 대화에서 나온 토픽 단어와 여의 대화에서 나온 토픽 단어를 구분
    -> 군집화를 통해 군집별로 단어가 분포 되어있는 정도를 봄
    -> 한 군집에 균일하게 남,녀의 토픽 단어가 들어가 있다면 대화가 잘 이어진 것으로 간주
    -> 해당 방법론은 실효성이 잘 없을 것 같기도 합니다.

[4] 두 사람 간 답장 시간 간격이 좁다.

  • 상대에게 호감이 있거나, 흥미로운 주제를 다루고 있을 때, 즉 스스로 대화를 하며 ‘행복감’을 느낀다면 답장하는 시간 간격이 좁을 것이라는 가정에 기반하였습니다.
  • 문제점은 데이터입니다. AI Hub의 자유 대화 음성 데이터에 시간이 기록되어있기는 하지만, 저희의 목적에 맞는 정보는 없습니다. (즉, 대화를 하며 느끼고 있는 행복감, 상대에 대한 호감도 등의 정보가 담겨있지 않습니다.)

[5] ‘그나저나’, ‘그러고 보니’와 같은 ‘주제의 전환’ 관련 단어가 자주 나온다.

  • 지금까지 주제의 연관성 측정에 대한 기준을 정하려다 보니 어려움이 많았습니다.
  • 주제의 연관성이 없을 때, 즉 주제가 전환될 때 자주 나오는 단어를 Counting하는 것도 의미가 있을 것이라 생각합니다.

(추가) 다른 생각의 방향 : 대화가 잘 맞는 것을 측정하지 말고, 잘 맞지 않을 때를 측정하자.

  • 지금까지 저희는 ‘어떤 대화가 잘 맞는 대화일까?’를 위주로 생각했었는데, ‘어떤 대화가 잘 안맞는 대화일까?’를 생각해보는 것도 의미있을 것이라 생각했습니다.
  • 여러 사람에게 같은 대화 내용을 보여주고 ‘이 대화가 잘 통한다고 생각되나요?’라고 질문했을 땐 사람마다 YES/NO가 골고루 나올 것이지만, ‘이 대화가 안 통한다고 생각되나요?’라고 질문했을 땐 YES/NO 중 한 곳에 사람들이 몰려있을 것이라는 생각에 기반하였습니다.

16주차 회의록

  1. 주제 변경 및 팀원 증원에 대한 논의
  • 새로운 주제
    A, B
    친구 관계 -> 토픽 존재
    만일 처음? -> 대화 주제 선정 과정 -> 잘 맞는지 보는 과정이 있음 -> 주제가 공통적으로 잘 통하면
    -> 서로 잘 통하는 것 -> 대화 패턴을 분석해서 서로 매칭 -> 잘 대화가 통하는 사람이라고 예측
    -> 계속 대화 내용을 바탕으로 갱신 -> 서로 간에 이야기를 시작하는 대화 주제의 유사도, -> 토픽
    -> 감정이 어떤 느낌으로 흘러가는지 -> 감정
    -> 대화 뭉치가 필요함 -> 다양한 감성을 다룬 데이터 필요

  • 논의 결과
    ① 팀원 모두 주제 변경에 대해 찬성하였습니다.
    ② 팀원은 일단 기존인원으로 진행 -> 추후 상황에 따라서 가능하다면, 교수님께 다른 팀과 협업 혹은 팀원 충당을 요청드리고 싶습니다.

  1. 데이터 확보
    (1) 감성 대화 말뭉치 (AIHub)
  • 상업/연구 목적으로 모두 활용가능
  • 60가지 감정상태가 포함된 대화 문장 (27만 문장)

ex. 팀장님은 나와 성별이 같은데 내가 좋아한다는 걸 들킬까 봐 긴장돼 -> 팀장님을 좋아하는 마음을 누군가 알 까봐 걱정되시겠어요. -> 그럼 나만 곤란한 게 아니라 팀장님도 난처하시겠지? -> 이전에는 누군가를 좋아할 때 어떻게 하셨나요? -> 티 내지 않고 조용히 좋아했어. 들키지 않았지만 잘못이 아니니 억지로 마음을 숨기고 싶지는 않아. -> 바라는 대로 잘 해결되길 바랄게요.

(2) 한국어SNS (AIHub)

  • 상업/연구용 목적으로 모두 사용 가능

  • json파일 형식으로 제공되며, 아래와 같은 주제로 분류됨

  • 위 데이터의 장점은, 실제 SNS 상에서 주고받은 대화 내용과, 대화 주제를 담고 있다는 것입니다.

(3) 한국어 단발성 대화

  • 공포, 놀람, 분노, 슬픔, 중립, 행복, 혐오 감정으로 라벨링 된 문장 데이터

(4) 감정 분류를 위한 대화 음성 데이터셋

  • 각 발화문의 상황, 감정, 감정세기와, 발화자의 나이, 성별 (10000여 개)

(5) 과거 삼성카드 데이터 공모전

  • 예선용 데이터이기에 메인 데이터로 활용하기에는 수가 1000개 정도로 적습니다. 하지만 실험적으로 모델을 테스트해볼 때 사용해볼 가능성이 있다는 생각이 듭니다.

 데이터 전처리 기법

  1. 감정 분류 조사
    GRU, LSTM, Bi-LSTM + 텍스트 분류를 위한 Naïve Bayes Classifier

  2. 토픽 추출 조사

17주차 회의록

  1. 주제 호응도 측정
    먼저 이번주 핵심 내용은 어떻게 주제 호응도를 측정할 것인지에 있었습니다. 모델링 하기에 앞서, 대화의 기술에 관해서 쓴 책들도 보았고 이와 관련된 논문이 있는지 살펴보았습니다. 하지만 주제자체가 주관적인 요소가 매우 강해서 1,0으로 딱 떨어지는 기준을 찾지 못했습니다. 따라서 대중적으로 대화가 잘 되는 기준이 무엇일까 생각해보았고 대화가 일정한 흐름에 맞게 잘 이어진다는 것은, 말을 이어 나가는 상황에서 발화마다 교집합이 존재한다고 판단을 하였습니다.
    대화의 흐름이 잘 이어진다 = 발화마다 교집합이 존재한다
    이를 토대로 주제 호응도 측정을 위한 두가지 방법론을 생각해보았습니다.

  2. 첫번째 방법론 (상대방과 당사자의 대화를 한 문서로 합쳐 토픽 추출)

    1. 특정 시간 기준으로 상대방과 당사자가 나눈 대화를 한 문서로 합친다.
    2. 한 문서로 합친 문장의 토픽을 추출해 낸다. (BERT 사용)
    3. 발화별로 추출된 토픽이 얼마나 나왔는지 개수 측정
  3. 만약 상대방과 당사자가 나눈 발화에서 주기적으로 토픽이 나온 횟수가 비슷하면 이 둘의 대화에서 주제 호응도가 유의미한 것으로 판단.

  4. 두번째 방법론 (발화마다 토픽 추출)

    1. 발화마다 토픽을 추출 (한국어로 사전 학습된 BERT 기반으로 추출 시 어느정도 짧은 문장도 주제가 추출 되는 것을 확인) + 전/후처리 필요
  5. 추출된 토픽과 연관된 키워드를 인터넷에서 데이터를 불러오거나, 사전에 구축된 데이터 베이스 안에서 추출한다. (블로그 태그 기반 연관단어 추출 기법 사용)

  6. 발화별로 토픽, 관련 키워드끼리 연관성을 분석한다. 그들의 유사도가 발화마다 일정하게 유지가 된다면 주제의 호응도가 좋은 것으로 판단.

  7. Data Understanding : 저번주에 수집한 데이터셋에 대한 장/ 단점과 저희의 프로젝트에 어떻게 적용할 수 있을지 생각해보았습니다.

  1. 감성 대화 말뭉치 (AIHub)
  • 문제점 : 사람과 사람 간 대화가 아닌, 사람과 시스템 간 대화입니다. 따라서 시스템은 사람이 말한 문장에 대해 호응, 되묻기만 할 뿐 새로운 주제를 던지는 등의 유기적인 대화 데이터가 담겨있지 않았습니다. 하지만, 사람이 말한 문장에 대해 분노/슬픔/불안/상처/당황/기쁨의 감정으로 라벨링 되어있어서 각 문장에 대해 감정을 분류하는 모델을 설계해보았습니다.

< Bi -LSTM을 이용해 문장 별로 감정을 분류하는 모델>
이처럼 각 문장에 대한 감정을 추출하고 두 사람의 감정 흐름이 일치한다면 대화가 잘 통한다고 할 수 있을 것입니다.
ex) 사람1과 사람2가 대화를 주고받은 상황
사람1 : 저는 조만간 승진할 수 있을 것 같아요! 너무 행복하네요ㅎㅎ -> 기쁨
사람2 : 우와 축하드려요! 저번에 진행하시던 프로젝트가 잘 되었나봐요?! -> 기쁨
사람1 : 네ㅎㅎ 운좋게 성과가 좋아서 이렇게 됐네요! A씨는 잘 되어가나요? -> 기쁨
사람2 : 저는 당분간 승진을 못할 것 같아요ㅠㅠ -> 슬픔
사람1 : 헉 정말요? 무슨 일 있으세요? -> 당황
사람2 : 과장님이 저를 마음에 안 들어 하세요 .. 별 일도 아닌 걸로 화만 내시더라고요 -> 슬픔
사람1: 아.. 그렇구나ㅠㅠ 그래도 계속 버티다보면 좋은 일이 있지 않을까요? -> 슬픔
사람2 : 저도 그렇게 생각하면서 버티고는 있지만.. 먼저 승진하는 동기들 보면 힘드네요 -> 불안
사람1 : 과장님이 정말 이상하시네요!! 제가 다 화가나요. -> 분노
사람1의 감정 흐름 : 기쁨->기쁨->당황->슬픔->분노
사람2의 감정 흐름 : 기쁨->슬픔->슬픔->불안
• 이와 같은 경우라면 두 사람의 감정 흐름이 크게 다르지 않으므로, 서로의 감정에 공감하고 대화가 잘 통한다고 할 수 있을 것.

(2) 한국어SNS (AIHub)

  • 위 데이터의 장점은, SNS(카카오톡) 상에서 주고받은 실제 대화 내용과, 대화 주제를 담고 있다는 것입니다. 하지만, ‘이미 친한 사람들’ 간 대화가 대부분이어서 문장에 격식이 없고, 의미 없는 말들이 존재합니다. 또한, 대화 주제가 포괄적으로 제시되어 있어서 (영화가 아니라 여가생활로 라벨링) 이 데이터가 ‘서로 알아가는 단계인 두 사람의 대화 호응도 측정’ 라는 목표에 적합한 지 모호합니다. 그렇지만, 대략적인 주제에 대한 정보는 제시되어 있으므로, 주제 추출에 중점을 두어 사용해야할 것 같음.

20주차 회의록

서로의 호응도를 수치화할 수 있는 간단한 기준을 추가로 생각해보려 했지만, 딱히 떠오르지 않았습니다. 따라서 지금까지 생각한 방법론을 우선적으로 구현한 후, 새로운 방법이 생각난다면 추가하는 형식으로 진행하려고 계획하였습니다.

[1] 서로 말하는 단어 수가 비슷하다.

  • 구현 자체는 간단하나, 여러 경우를 생각해보아야 했습니다.
    (1) 모든 형태소에 대해 (2) 명사에 대해 (3) 어미와 조사를 제외한 형태소에 대해
  • 위 경우들에 대한 코드는 구현해놓은 상태이며, 위 경우들 중 어떤 경우를 사용해야할 지는 추가적인 고려가 필요할 것 같습니다.

[2] 물음표가 서로 비슷하게 나온다.

  • 간단한 기준이었기에, 코드 구현을 완료 했습니다.

[3] 상대방이 말한 말을 내가 다시 나의 견해, 경험을 넣어서 대답할 때 이전의 상대방이 한 말을 다시 반복한다.

  • 상대방의 말을 다시 반복한다는 것을 코드로 구현하기가 까다로웠습니다.
  • 이것을 구현하는 것은 이번 주차에 실패하였습니다. 따라서 다음주차에 구현을 다시 시도할 예정입니다.

[4] 두 사람 간 답장 시간 간격이 좁다.

  • 상식적인 수준에서는 답장 시간 간격이 짧을 때, 두 사람이 서로에게 호감을 느끼고 대화가 잘 통한다고 생각이 되지만, 이 기준은 사실 사람마다 다르다고 생각합니다.
  • 코드로 구현하는 것은 어렵지 않을 것으로 예상되나, 실제 효과가 있을 지는 잘 모르겠습니다.

[5] ‘그나저나’, ‘그러고 보니’ 와 같은 ‘주제의 전환’ 관련 단어가 자주 나온다.

  • 주제의 전환과 관련된 단어들을 충분히 찾아야한다고 생각합니다.
  • 위에 나와있는 것처럼 ‘그나저나’, ‘그러고 보니’ 와 비슷한 맥락의 단어가 많을수록 더 효과적일 것이라고 생각하고, 단어 수집은 프로젝트를 진행하며 꾸준히 할 생각입니다.

[6] 주제와 관련된 감정의 흐름이 비슷하다.

  • 짧은 문장 혹은 문단에서 감정을 추출하는 방법론을 생각해 보았습니다. 각 문장에 감정이 라벨링된 데이터를 확보하고 있기 때문에, 문장 속 감정 예측이 아닌 감정 ‘분류’ 문제로 생각해도 된다고 판단했습니다.
  1. 감정사전 구축(Rule Based) : 각 감정에 해당하는 단어사전을 구축한 후에 -> 새로운 문장이 들어오면 -> 감정에 해당하는 단어가 얼마나 많이 포함되는지 판단하고 -> 가장 많이 나오는 감정으로 분류.
  • 단어사전을 얼마나 잘 구축하는지가 관건.
  • 이미 다양한 도메인에서 구축된 단어사전이 존재해, 이를 활용해도 좋을 것 같습니다.
  • 감정사전 예시
  1. 나이브 베이즈 분류기
  • 베이즈 정리를 사용하여 특정 감정을 나타낼 확률을 예측
  • 전통적인 텍스트 분류 방법이나, ML 알고리즘에 비해 성능이 떨어짐
  1. ML 알고리즘
    • 텍스트를 전처리한 후, 하나의 벡터로 표현(임베딩)
    • Bi-LSTM, CNN, Bert 모델을 이용하여 감정 분류 모델 학습 (지도 학습)

18주차 회의록

<주제 호응도 관련해서 고민사항들>

  1. Learning from experts
    The best way to devise heuristics is to see what experts are currently doing.
  2. Examining the data
    The second best way to devise heuristics is to look at your data. Based on your dataset,
    how would you solve this task if you were doing it manually?
  3. Stand on the Shoulders of Giants
  4. Open data
  5. Open source code
    <최종 결정 사항>
    목적: 대화 주제의 흐름이 얼마나 잘 이어지는지에 대한 평가
    많은 책들과 인터넷에 나와있는 대화를 잘하는 법 혹은 보통 일반적인 경우를 분석해본 결과 잘 이어지는 대화의 공통점은 처음 대화 주제가 던져지면 그 주제를 가지고 하위 혹은 주제와 관련된 대화로 이어지는 것을 볼 수 있었음. 또한 그렇게 나온 대화 사이에 나타난 감정 또한 비슷하게 표출이 됨. 이러한 사항들을 어떻게 하면 컴퓨터가 인식을 할 수 있게 만들까를 고민해 보았음
    <잘 이어지는 대화의 특징>
  6. 대화의 주제의 연결이 지속적으로 발생
    영화 -> SF -> 인터스텔라 -> 로맨스 -> 라라랜드 ->영화관 …
  • 꼬리에 꼬리를 무는 주제로 대화를 이어나감
  • chain Rule
  1. 주제에 대한 감정이 두 사람이 비슷함
    “저는 영화 보는거 좋아해요 oo씨는 영화 자주 보시나요?” -> “저도 영화 자주 보고 좋아해요!!”
  2. 대화가 잘 통할 ‘가능성’ 이 높기 위해서는 두 사람의 가치관, 지적수준, 학력, 경험, 주위 사람들, 성향 등 많은 부분이 비슷하거나 맞아 들어가야 한다.
    -> 데이터셋에 ‘연령’과 ‘성별’ 관련 feature을 활용. 일치하면 높은 가중치
  3. 들어주는 사람은 상대방의 말을 경청, 호응을 잘 해주는 경향
    -> 상대방의 긍정적인 말에 ‘정말, 진짜, 좋아, 그럼’ 등의 긍정적인 호응이나,
    ->상대방의 부정적인 말에 ‘어떡해.. ,에이, 설마, 말도 안돼’ 등의 부정적인 호응을 하면 대화가 잘 통한다고 판단.

<주제가 이어지는지 아닌지 컴퓨터에게 인식을 시킬 방법>

  1. 먼저 프로토타입을 내기 위해서 초면인 사람이 가장 많이 대화 주제로 선정하는 case 5개를 뽑았음
    1)영화 2)여행 3)반려동물 4)운동 5)음식

  2. 1에서 추출한 주제와 관련된 키워드를 태그 기반 관련 키워드 추출과, 크롤링으로 데이터 베이스 구축 -> 그래프 형태로 데이터 베이스 구축
    -><취미에 해당하는 데이터 베이스 구축 예시 사진>

  3. 대화가 진행됨에 따라 각 발화별로 핵심 주제 추출
    [1]영화 [2] 영화 [3] SF, 인셉션

4-1. 첫번째 방법론
1. 그래프 형태로 데이터를 구축
2. 발화1, 발화2의 주제끼리의 데이터상 거리(edge 수)로 유사도를 측정
-> 거리가 크면 유사도 떨어지는 것
-> 거리가 작으면 유사도 큰 것
3. 만약 사전에 구축한 데이터셋에 주제가 포함이 안 되어 있다면 해당 주제에 대해서 크롤링 후 데이터 셋에 추가 그리고 1,2 작업 실시
4. 발화마다 주제의 거리관계 즉 상대방과 나의 대화 주제간 거리가 지속적으로 작게 유 가 되는지 여부 측정

(1) 대화가 잘 통하는 예시: ‘영화’라는 주제 내에서 이야기가 이어짐
A: 저는 평소에 영화보는거 좋아해요!
B: 영화 보는거 좋아하시는구나~ 무슨 영화 보는거 좋아하세요?
A: 전 SF면 다 좋아하는데, 인셉션이 가장 좋더라구요ㅎㅎ

(2) 대화가 잘 통하지 않는 예시: ‘영화’와 ‘여행’이라는 주제에서 왔다갔다함
A: 저는 평소에 영화보는거 좋아해요!
B: 저는 평소에 여행 다니는거 좋아해요ㅎㅎ 일본도 휴가마다 가는 편이에요!
A: 아하 저는 휴가때는 그냥 집에서 공포영화 자주 보는 것 같아요

4-2. 두번째 방법론
1. 발화마다 토픽을 추출
2. 토픽과 연관된 키워드 다수 추출
- 이 과정에서 사전에 구축한 데이터 베이스에 존재시에 사용
- 없을 시에 크롤링으로 키워드 추출
3. 상대방의 주제와 키워드 나의 주제와 키워드끼리의 연관성 측정
4. 이 연관성이 대화가 진행됨에 따라서 일정하게 유지하는지 평가
(1) 대화가 잘 통하는 예시 : 두 키워드 테이블 간 유사도가 높다.
A: 영화 보는거 좋아하시는구나~ 무슨 영화 보는거 좋아하세요?
B: 전 인셉션이 가장 좋더라구요ㅎㅎ

(2) 대화가 잘 통하지 않는 예시: 두 키워드 테이블 간 유사도가 낮다.
A: 저는 평소에 영화보는거 좋아해요!
B: 저는 평소에 여행 다니는거 좋아해요ㅎㅎ

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.