[지난] 왓츠뉴 챗봇 작업 로그

[우당탕탕 챗봇 만들기] 엔티티 관련 정보 데이터프레임화

Haejiness 2022. 6. 12. 13:32

본 게시글은 비개발자가 우당탕탕 구글링과 삽질로 꾸역꾸역 챗봇이 작동하게 만드는 과정에 대한 기록입니다. 작성자의 웹개발 지식은 0이며, 개인이 운영 상에 있어 맥락 파악을 목적으로 기록해놓은 것으로, 도움이 된다면 정말 다행이지만 도움이 되지 못하더라도 양해해주시면 감사하겠습니다... 반대로, 도움이 될 만한 코멘트도 환영합니다! 왜냐하면 또 챗봇을 만들어볼 생각이거든요!!

 

+ 해당 글은 2020년 10월에 작성된, 과거의 글이라는 점 참고해주시기 바랍니다.


엔티티가 추가되는대로 주구장창 코드를 몇 줄이고 추가하긴 어렵기 때문에, 데이터프레임에 데이터를 정돈해두고 해당 파일에서 자동으로 불러오는 코드를 쓰는 게 나을 듯 했음! 그래서 도전한 결과

content = request.get_json()
content = content['action']['detailParams']['news_keyword']['value']
keyword = pd.read_csv("entity_keyword.csv")
i = keyword[keyword['entity'] == content].index.values[0]

상단의 코드를 위와 같이 바꿨다.

즉, content는 사용자 발화에서 뽑아온 부분이고, keyword는 사전에 준비해놓은 csv 파일을 불러온 dataframe이다.

결국 위의 코드는, keyword라는 dataframe에서 'entity' 열이 content와 같은 행의 인덱스 번호를 i로 설정한 것.

이후 응답으로 내보낼 정보를 모두 해당 dataframe에서 가져온다.

"title": keyword['title'][i],
"description": keyword['description'][i],
"thumbnail": {
    "imageUrl": keyword['image'][i],
    "link": {
        "web": keyword['link'][i]
    }
}

이렇게 인덱스 i를 활용해 데이터프레임에서 자동으로 값을 불러올 수 있도록 만드는 데에 성공! 이제 구글 스프레드시트에서 수시로 엔티티를 업데이트하고, ide에 들어가는 csv 파일만 업데이트해주면 된다. 코드 수정이 필요하지 않도록 업데이트를 할 때에는 무조건 파일명을 'entity_keyword.csv'로 통일하는 걸로! 당연히 이전 버전은 삭제한다. 불안하니 받은 csv 파일을 버전 넘버를 매겨 내 컴퓨터에 저장해두기는 했다 ㅎㅎ...

발전 버전 (중복 엔티티를 캐러셀로 가져올 수 있도록)

기존의 키워드 검색 DB는 중복 엔티티 없이 작성되었다. 사용자가 특정 '소식'을 원할 것이라는 가정 하에서 만들어진 것. 하지만 사실 사용자는 '키워드 검색'이라하믄, 특정 키워드와 관련된 '이런 저런' 소식을 원할 가능성이 더 크다고 판단! 유정언니 제안으로 키워드 검색도 브랜드 검색과 같이 다수의 콘텐츠 검색이 가능하도록 코드를 수정했다.