본문 바로가기메뉴 바로가기


카카오 AI추천 : 카카오페이지와 멜론으로 살펴보는 카카오 연관 추천

글 작성에는 추천팀 brie.l과 daniel.py가 함께해 주셨습니다.

 

온라인 쇼핑몰에서 원하는 물건을 장바구니에 넣었을 때 ‘유사한 상품’이 추천되거나, 동영상 플랫폼에서 영상을 보고 나면 자동으로 비슷한 클립을 추천해 주는 경험을 한 적이 있으신가요?
대부분 이런 추천들은 여러분이 가장 쉽게 보실 수 있는 추천의 형태 중 하나일 텐데요, 이러한 추천 방식을 보통 ‘연관 추천’이라고 부릅니다.

카카오 추천팀에서는 추천할 아이템과 유사한 아이템을 모으고 서비스의 목표 지표를 최대화하는 방향의 실시간 최적화를 통해 연관 추천 솔루션을 제공하고 있는데요, 이번 글에서는 연관 추천이 활용되고 있는 서비스 중 카카오페이지와 멜론을 예로 들어 좀 더 깊이 알아보려고 합니다.

 


 

카카오페이지: 이 작품 다음엔 뭘 보면 좋을까

웹툰, 웹 소설은 물론 영상까지 다양한 콘텐츠를 서비스하고 있는 카카오페이지에서는 작품 소개 영역과 마지막 편의 마지막 장에서 독자들에게 연관 추천을 제공하고 있습니다.

<경이로운 소문> 작품에 대한 ‘연관 추천’

 

연관 추천의 기본 전제는 누군가가 작품을 끝까지 보고 마지막 편 뷰어 엔드에 도달했거나, 작품 소개를 살펴보러 들어왔다면 이 작품에 대해 꽤 관심이 있을 만한 독자라는 것입니다. 그래서 이러한 독자들에게 이 작품과 비슷한 결의 작품을 추천한다면, 전혀 관련이 없는 작품을 추천하는 것보다 더 많은 관심을 불러일으킬 수 있을 것이라고 예상하는 것이죠.

이러한 연관 추천을 위해서는, 연관 추천을 요청하는 작품과 이와 유사한 작품들이 필요합니다. 작품을 기준으로 보았을 때 유사한 작품인지는 어떻게 알 수 있을까요? 유사한 아이템을 추천하고자 할 때 사용할 수 있는 속성은 서비스에 따라 그리고 ‘유사함’을 정의하는 방식에 따라 다양합니다. 제목과 설명을 기반으로 텍스트 속성을 추출하는 방법을 사용할 수도 있고, 섬네일과 같은 이미지의 특성을 추출해 활용할 수도 있습니다. 또한 사용자들이 서비스 콘텐츠를 이용하는 성향을 고려할 수도 있습니다.

추천 결과 고도화

추천 결과를 고도화하는 과정에서 서비스와 논의했던 목표 지표에 따른 성능을 높이기 위해 어떤 속성들을 어떤 방식으로 사용할지 테스트를 진행하기도 합니다. 예를 들어 각 작품의 제목과 소개가 텍스트로 구성되어 있으니 두 가지 속성을 사용할 수 있을 텐데요, 유사한 정도를 판단하기 위해서는 Word2Vec1과 같은 알고리즘을 통해 단어를 벡터로 만드는 과정이나 TF-IDF 가중치2를 사용하는 등 제목과 소개 문장들을 또 하나의 벡터로 만드는 과정이 필요합니다.

이런 과정들을 통해 하나의 작품을 벡터 공간(vector space) 상의 하나의 점으로 위치시키게 되고 점으로 나타난 작품 간의 거리를 통해 유사성을 판단할 수 있는 것이죠. 어떤 데이터와 어떤 알고리즘을 통해 작품을 어디에 위치시키느냐에 따라 판단한 유사성의 정확도가 달라지기도 합니다.

기준이 되는 작품과 유사한 작품들이 파악되었다면 이 작품들을 가지고 실시간 최적화가 진행됩니다. 작품들을 일부 노출해서 목표 지표(예: 클릭률)의 기대값을 측정하고 기대값이 높은 콘텐츠들이 노출될 확률을 높여가는 식으로 진행이 되는데요, 노출이 된 이후에 독자들이 어떤 액션을 하는지(예: 클릭을 하는지 등)에 따라 기대값이 실시간으로 조정되어 다음 추천 결과에 반영됩니다. (추천팀에서는 주로 톰슨 샘플링(Thompson Sampling)[1]을 사용하고 있는데 이와 관련된 좀 더 자세한 내용은 다음 편에서 다뤄질 예정입니다.) 카카오페이지의 연관 추천은 이러한 과정을 거친 후 <경이로운 소문>을 모두 본 저에게 <승리호>를 추천해 주었네요.

 

1 ‌워드투벡터(Word2Vec):‌ ‌
단어‌ ‌간‌ ‌유사도를‌ ‌반영할‌ ‌수‌ ‌있도록‌ ‌단어의‌ ‌의미를‌ ‌벡터화하는‌ ‌방법‌ ‌중‌ ‌대표적인‌ ‌방법으로,‌ ‌이‌ ‌방법을‌ ‌통하면‌ ‌단어‌ ‌간‌ ‌연산이‌ ‌가능해‌ ‌집니다.‌ ‌2013년‌ ‌구글이‌ ‌발간한‌ ‌논문(<벡터‌ ‌공간에서의‌ ‌단어‌ ‌표현의‌ ‌효율적인‌ ‌추정(Efficient‌ ‌Estimation‌ ‌of‌ ‌Word‌ ‌Representations‌ ‌in‌ ‌Vector‌ ‌Space>)에서‌ ‌나타낸,‌ ‌벡터‌ ‌공간에서‌ ‌단어의‌ ‌벡터‌ ‌값을‌ ‌추정하는‌ ‌뉴럴‌ ‌네트워크‌ ‌기반의‌ ‌기계학습‌ ‌모델입니다.‌ ‌ ‌

2 ‌‌TF-ID‌F(Term‌ ‌Frequency-Inverse‌ ‌Document‌ ‌Frequency):‌ ‌
단어의‌ ‌빈도와‌ ‌역‌ ‌문서‌ ‌빈도를‌ ‌사용하여‌ ‌DTM(Document-Term‌ ‌Matrix)‌ ‌
내의‌ ‌각‌ ‌단어들마다‌ ‌중요한‌ ‌정도를‌ ‌가중치로‌ ‌주는‌ ‌방법입니다.‌ ‌주로‌ ‌문서의‌ ‌유사도를‌ ‌구하는‌ ‌작업,‌ ‌검색‌ ‌시스템에서‌ ‌검색‌ ‌결과의‌ ‌중요도를‌ ‌정하는‌ ‌작업,‌ ‌문서‌ ‌내에서‌ ‌특정‌ ‌단어의‌ ‌중요도를‌ ‌구하는‌ ‌작업‌ ‌등에‌ ‌사용할‌ ‌수‌ ‌있습니다.

멜론:‌ ‌지금‌ ‌이‌ ‌음악‌ ‌스타일이‌ ‌마음에‌ ‌든다면‌ 

음악을‌ ‌듣다‌ ‌보면 ‌‘이런‌ ‌스타일의‌ ‌곡을‌ ‌더‌ ‌듣고‌ ‌싶어!’‌ ‌라는‌ ‌생각이‌ ‌들 때가 있지 않으신가요?
그런‌ ‌분들을‌ ‌위해‌ ‌멜론에는‌ ‌유사곡‌ ‌추천이‌ ‌마련되어‌ ‌있습니다.‌ ‌

지금‌ ‌듣고‌ ‌있는‌ ‌곡과‌ ‌유사한‌ ‌곡을‌ ‌추천받고‌ ‌싶을‌ ‌때‌ ‌그‌ ‌리스트를‌ ‌볼‌ ‌수‌ ‌있는‌ ‌방법은‌ ‌아래와‌ ‌같이‌ ‌다양한데요,

  1. 음악‌ ‌재생‌ ‌화면‌ ‌앨범‌ ‌커버‌ ‌하단의‌ ‌‘유사곡’‌ ‌클릭‌ ‌시‌ 유사곡‌ ‌리스트‌ ‌제공‌ 
  2. ‘유사곡‌ ‌전체듣기’ 또는
  3. ‘이‌ ‌곡과‌ ‌유사한‌ ‌곡‌ ‌보기’‌ ‌클릭‌ ‌시‌ ‌
  4. 유사곡‌ ‌전체‌ ‌리스트‌ ‌제공‌ ‌ ‌
  5. 개별‌ ‌곡‌ ‌정보‌ ‌하단에서도‌ ‌유사곡‌ ‌리스트‌ ‌제공

유사곡을 만드는 과정

이‌ ‌영역들을‌ ‌통해‌ ‌소개되는‌ ‌곡들의‌ ‌리스트는‌ ‌어떤‌ ‌방식으로‌ ‌만들어지는‌ ‌것일까요?‌ ‌ ‌
유사곡‌ ‌추천에서‌ ‌”유사곡”이라는‌ ‌단어가‌ ‌다양한‌ ‌관점으로‌ ‌해석이‌ ‌가능하기‌ ‌때문에‌ ‌여러‌ ‌방법으로‌ ‌추천‌ ‌결과를‌ ‌생성되게‌ ‌되는데요,‌ ‌그‌ ‌방법들을‌ ‌하나씩‌ ‌살펴보겠습니다.‌

  1. 사용자들의‌ ‌곡‌ ‌소비‌ ‌패턴,‌ ‌음악‌ ‌취향을‌ ‌고려해‌ ‌곡의‌ ‌유사함을‌ ‌비교하는‌ ‌협업‌ ‌필터링(Collaborative‌ ‌Filtering,‌ ‌CF)‌ ‌기법입니다.‌ ‌CF는‌ ‌비슷한‌ ‌취향으로‌ ‌음악을‌ ‌듣는‌ ‌A,‌ ‌B,‌ ‌C,‌ ‌D‌ ‌유저가‌ ‌있을‌ ‌때,‌ ‌A,‌ ‌B,‌ ‌C‌ ‌유저가‌ ‌특정‌ ‌곡들을‌ ‌좋아한다면,‌ ‌D에게도‌ ‌이‌ ‌곡들을‌ ‌추천해 주는‌ ‌방식입니다.‌ ‌곡의‌ ‌템포나‌ ‌악기,‌ ‌음색과‌ ‌같은‌ ‌음악의‌ ‌속성들과‌ ‌상관 없이‌ ‌멜론의‌ ‌많은‌ ‌사용자들이‌ ‌어떤‌ ‌곡들을‌ ‌같은‌ ‌맥락에서‌ ‌들었는가를‌ ‌파악해서‌ ‌곡을‌ ‌벡터‌ ‌공간‌ ‌안에‌ ‌하나의‌ ‌벡터로‌ ‌위치시키고,‌ ‌‌곡의‌ ‌벡터‌ ‌간에‌ ‌유사도를‌ ‌측정해‌ ‌유사한‌ ‌곡을‌ ‌추천하게‌ ‌됩니다.‌
  2. ‌user-item‌ ‌interaction‌ ‌데이터에‌ ‌Matrix‌ ‌Factorization‌ ‌기법인‌ ‌ALS(Alternating‌ ‌Least‌ ‌Square)[2]나‌ ‌BPR(Bayesian‌ ‌Personalized‌ ‌Ranking)[3]‌ ‌등을‌ ‌적용해‌ ‌user‌ ‌matrix와‌ ‌item‌ ‌matrix를‌ ‌추출하고,‌ ‌item‌ ‌matrix를‌ ‌사용해‌ ‌곡의‌ ‌item‌ ‌vector를‌ ‌구하거나‌ ‌딥러닝‌ ‌모델인‌ ‌Auto-Encoder‌3‌를‌ ‌이용해‌ ‌item‌ ‌vector를‌ ‌추출하는‌ ‌방법이‌ ‌있습니다.‌
  3. ‌ ‌사용자나‌ ‌멜론‌ ‌DJ가‌ ‌생성한‌ ‌플레이리스트에‌ ‌포함된‌ ‌곡들이‌ ‌각각의‌ ‌플레이리스트의‌ ‌컨셉에‌ ‌맞게‌ ‌구성되어‌ ‌있다는‌ ‌가정‌ ‌하에‌ ‌플레이리스트‌ ‌내‌ ‌곡들의‌ ‌상대적인‌ ‌느낌을‌ ‌활용하여‌ ‌추천을‌ ‌하기도‌ ‌합니다.‌ ‌플레이리스트에‌ ‌포함된‌ ‌곡을‌ ‌아이템(item)으로,‌ ‌플레이리스트를‌ ‌시퀀스(sequence)로‌ ‌가정하고,‌ ‌item‌ ‌sequence에‌ ‌Item2Vec‌4 ‌모델을‌ ‌적용해서‌ ‌item‌ ‌vector를‌ ‌추출하고‌ ‌유사도를‌ ‌측정할‌ ‌수도‌ ‌있습니다.‌ ‌Item2Vec은‌ ‌플레이리스트에‌ ‌포함된‌ ‌곡과‌ ‌같이‌ ‌포함된‌ ‌주변‌ ‌곡들‌ ‌간의‌ ‌컨텍스트를‌ ‌파악해서‌ ‌곡의‌ ‌상대적인‌ ‌위치를‌ ‌vector로‌ ‌표현하기‌ ‌때문에,‌ ‌a라는‌ ‌곡과‌ ‌b라는‌ ‌곡이‌ ‌비슷한‌ ‌컨셉의‌ ‌플레이리스트에‌ ‌여러‌ ‌번‌ ‌포함되어‌ ‌있다면‌ ‌a와‌ ‌b를‌ ‌유사한‌ ‌컨셉을‌ ‌가진‌ ‌곡으로‌ ‌보고‌ ‌추천에‌ ‌반영하게‌ ‌됩니다.‌
  4. 음원의‌ ‌관점에서‌ ‌‘유사하다’라는‌ ‌의미도‌ ‌중요한‌ ‌역할을‌ ‌할‌ ‌수‌ ‌있을‌ ‌텐데요,‌ ‌음원‌ ‌데이터를‌ ‌멜스펙트로그램[4]으로‌ ‌변환한‌ ‌후‌ ‌딥러닝‌ ‌모델‌ ‌학습을‌ ‌통해‌ ‌추출된‌ ‌정보를‌ ‌이용해서‌ ‌음원‌ ‌간의‌ ‌유사함을‌ ‌정의하고‌ ‌이를‌ ‌활용하는‌ ‌방식도‌ ‌있습니다.‌ ‌이‌ ‌방법을‌ ‌활용하면‌ ‌협업‌ ‌필터링에‌ ‌따른‌ ‌한계점‌5‌을‌ ‌보완할‌ ‌수‌ ‌있습니다.‌
  5. 마지막으로,‌ ‌유사곡‌ ‌추천에서는‌ ‌UI‌ ‌상에서‌ ‌한‌ ‌화면에‌ ‌노출될‌ ‌수‌ ‌있는‌ ‌유사곡‌ ‌추천‌ ‌결과가‌ ‌제한되어‌ ‌있기‌ ‌때문에‌ ‌사용자들이‌ ‌다양한‌ ‌경험을‌ ‌할‌ ‌수‌ ‌있도록‌ ‌하는‌ ‌것이‌ ‌중요합니다.‌ ‌따라서‌ ‌추천‌ ‌결과의‌ ‌상위에‌ ‌노출되는‌ ‌곡이‌ ‌고정되어‌ ‌있지‌ ‌않으면서‌ ‌좀‌ ‌더‌ ‌많은‌ ‌사용자들이‌ ‌선호할‌ ‌만한‌ ‌곡이‌ ‌위치할‌ ‌수‌ ‌있도록‌ ‌하기‌ ‌위하여‌ ‌최근에‌ ‌유사곡‌ ‌추천‌ ‌사용자들이‌ ‌추천된‌ ‌유사곡‌ ‌결과에서‌ ‌스트리밍한‌ ‌피드백을‌ ‌활용하는데요, ‌이를‌ ‌기반으로‌ ‌스트리밍‌ ‌전환율을‌ ‌측정하고,‌ ‌추천‌ ‌모델에서‌ ‌예측된‌ ‌선호도‌ ‌점수와‌ ‌스트리밍‌ ‌전환율을‌ ‌이용한‌ ‌순위‌ ‌보정‌ ‌장치가‌ ‌적용되어‌ ‌있습니다.‌

3 ‌Auto-Encoder:‌ ‌ 비지도‌ ‌학습방법‌ ‌중‌ ‌하나로,‌ ‌입력을‌ ‌출력으로‌ ‌복사하는‌ ‌신경망‌ ‌방식입니다.‌ ‌다양한‌ ‌제약을‌ ‌부여해‌ ‌단순히‌ ‌입력을‌ ‌바로‌ ‌출력으로‌ ‌복사하지‌ ‌못하도록‌ ‌방지하여,‌ ‌데이터를‌ ‌효율적으로‌ ‌표현하는‌ ‌방법을‌ ‌학습할‌ ‌수‌ ‌있도록‌ ‌합니다.‌ ‌

4 ‌Item2Vec:‌ ‌ 아이템‌ ‌기반의‌ ‌협업‌ ‌필터링에‌ ‌Word2Vec을‌ ‌활용하면,‌ ‌아이템에‌ ‌대해서도‌ ‌벡터‌ ‌공간에서의‌ ‌아이템의‌ ‌벡터값을‌ ‌추정해‌ ‌낼‌ ‌수‌ ‌있습니다.‌ ‌

5 ‌협업‌ ‌필터링의‌ ‌한계:‌ ‌ 대규모의‌ ‌기존‌ ‌사용자‌ ‌행동‌ ‌정보를‌ ‌분석하여‌ ‌해당‌ ‌사용자와‌ ‌비슷한‌ ‌성향의‌ ‌사용자들이‌ ‌기존에‌ ‌좋아했던‌ ‌항목을‌ ‌추천하는‌ ‌기술입니다.‌ ‌‌일반적으로‌ ‌잘‌ ‌알려진‌ ‌협력‌ ‌필터링의‌ ‌한계는‌ ‌크게‌ ‌두‌ ‌가지로,‌ ‌초기‌ ‌평가자‌ ‌문제(First-Rater‌ ‌Problem)와‌ ‌콜드‌ ‌스타트‌ ‌문제(Cold-Start‌ ‌Problem)가‌ ‌있습니다.‌ ‌즉,‌ ‌어느‌ ‌사용자에게도‌ ‌평가받지‌ ‌못한‌ ‌새로운‌ ‌아이템이‌ ‌있을‌ ‌경우와,‌ ‌지금까지‌ ‌한번도‌ ‌평가를‌ ‌하지‌ ‌않은‌ ‌사용자들이‌ ‌있을‌ ‌경우에는,‌ ‌시스템이‌ ‌예측과‌ ‌추천을‌ ‌할‌ ‌수가‌ ‌없습니다.‌

유사곡 추천 결과

이렇게‌ ‌만들어진‌ ‌유사곡‌ ‌추천을‌ ‌사용하는‌ ‌사용자의‌ ‌1주일간‌ ‌평균‌ ‌스트리밍‌ ‌수는‌ ‌유사곡‌ ‌추천을‌ ‌사용하지‌ ‌않은‌ ‌사용자의‌ ‌1주일간‌ ‌평균‌ ‌스트리밍수와‌ ‌대비하여‌ ‌약‌ ‌24%가‌ ‌높다고‌ ‌합니다.‌ ‌

또한 스트리밍한‌ ‌인당‌ ‌평균‌ ‌유니크‌ ‌곡‌ ‌수는‌ ‌유사곡‌ ‌추천을‌ ‌이용하지‌ ‌않은‌ ‌사람보다‌ ‌유사곡‌ ‌추천을‌ ‌이용한‌ ‌사람이‌ ‌53%‌ ‌많았습니다.‌


이렇게‌ ‌연관‌ ‌추천은‌ ‌아이유의‌ ‌‘celebrity’와‌ ‌비슷한‌ ‌음악을‌ ‌찾는‌ ‌사람에게‌ ‌오마이걸의‌ ‌‘살짝‌ ‌설렜어’를‌ ‌추천해 주고,‌ ‌<경이로운‌ ‌소문>을‌ ‌감상한‌ ‌사람에게‌ ‌<승리호>를‌ ‌추천해 주는‌ ‌방식으로‌ ‌사용자들이‌ ‌추가로‌ 소비할만한‌ ‌선택지를‌ ‌제공해 주는‌ ‌역할을‌ ‌하고‌ ‌있는데요,‌ ‌이‌ ‌과정을‌ ‌통해‌ ‌자연스럽게‌ ‌사용자들의‌ ‌관심사를‌ ‌확장하고‌ ‌새로운‌ ‌것을‌ ‌탐색할‌ ‌수‌ ‌있도록‌ ‌하는‌ ‌과정이라고‌ ‌할‌ ‌수‌ ‌있습니다.‌ ‌ ‌

지금까지‌ ‌카카오‌ ‌추천팀에서‌ ‌제공하는‌ ‌연관‌ ‌추천에 대해 ‌살펴보았는데요,‌ ‌다음 편에서는‌ ‌개인화추천에‌ ‌대해‌ ‌좀‌ ‌더‌ ‌자세히‌ ‌알아보려고‌ ‌합니다.‌ ‌감사합니다.

[참조]

[1]‌ ‌논문‌ ‌|‌ ‌‌Junpei‌ ‌Komiyama‌,‌ ‌‌Junya‌ ‌Honda‌,‌ ‌‌Hiroshi‌ ‌Nakagawa‌.‌ ‌Optimal‌ ‌Regret‌ ‌Analysis‌ ‌of‌ ‌Thompson‌ ‌Sampling‌ ‌in‌ ‌Stochastic‌ ‌Multi-armed‌ ‌Bandit‌ ‌Problem‌ ‌with‌ ‌Multiple‌ ‌Plays.‌ ‌32nd‌ ‌International‌ ‌Conference‌ ‌on‌ ‌Machine‌ ‌Learning,‌ ‌ICML‌ ‌2015,‌ ‌2015.‌ ‌

[2]‌ ‌논문‌ ‌|‌ ‌Hu,‌ ‌Yifan,‌ ‌Yehuda‌ ‌Koren,‌ ‌and‌ ‌Chris‌ ‌Volinsky.‌ ‌“Collaborative‌ ‌filtering‌ ‌for‌ ‌implicit‌ ‌feedback‌ ‌datasets.”‌ ‌Data‌ ‌Mining,‌ ‌2008.‌ ‌ICDM’08.‌ ‌Eighth‌ ‌IEEE‌ ‌International‌ ‌Conference‌ ‌on.‌ ‌,‌ ‌2008.‌ ‌

[3]‌ ‌논문‌ ‌|‌ ‌Rendle,‌ ‌Steffen,‌ ‌et‌ ‌al.‌ ‌“BPR:‌ ‌Bayesian‌ ‌personalized‌ ‌ranking‌ ‌from‌ ‌implicit‌ ‌feedback.”‌ ‌Proceedings‌ ‌of‌ ‌the‌ ‌twenty-fifth‌ ‌conference‌ ‌on‌ ‌uncertainty‌ ‌in‌ ‌artificial‌ ‌intelligence.‌ ‌AUAI‌ ‌Press,‌ ‌2009.‌ ‌

[4]‌ ‌설명‌ ‌|‌ ‌멜스펙트로그램:‌ ‌‌오디오의‌ ‌웨이브‌ ‌시그널을‌ ‌짧은‌ ‌시간별로‌ ‌잘라서‌ ‌조각마다‌ ‌푸리에‌ ‌변환을‌ ‌취한‌ ‌후‌ ‌붙이면‌ ‌해당‌ ‌오디오의‌ ‌2D‌ ‌표현을‌ ‌얻을‌ ‌수‌ ‌있는데요.‌ ‌이를‌ ‌인간의‌ ‌청각적‌ ‌지각능력(인접한‌ ‌주파수와‌ ‌높은‌ ‌주파수‌ ‌대역을‌ ‌잘‌ ‌듣지‌ ‌못하는‌ ‌특성을‌ ‌가짐)에‌ ‌맞춰서‌ ‌로그‌ ‌스케일로‌ ‌주파수‌ ‌축을‌ ‌줄이고‌ ‌다시‌ ‌몇‌ ‌개의‌ ‌주파수‌ ‌대역대로‌ ‌묶은‌ ‌방식을‌ ‌멜스펙트로그램‌ ‌방식이라고‌ ‌합니다.‌ ‌데이터의‌ ‌크기는‌ ‌줄이되‌ ‌가장‌ ‌중요한‌ ‌정보는‌ ‌보존할‌ ‌수‌ ‌있다는‌ ‌장점이‌ ‌있습니다.‌

함께 하면 좋은 글 🔍

angela.oh
angela.oh 카카오 추천팀에서 좋은 추천 서비스에 대해 고민하고 있습니다.
Top Tag
2021
2021-new-krew
Ad Platform
Ad tech
adaptive-hash-index
adt
adtech
agile
agilecoach
ai
algorithm
Algorithm/ML
Algorithm/Ranking
almighty-data-transmitter
Analyzer
android
angular
anycast
App2App
applicative
Architecture
arena
ast
async
aurora
babel
babel7
Backend
BApp
bgp
big-data
binary
ble
blind-recruitment
block
Block Chain
blockchain
bluetooth
brian
business
Cache
cahtbot
canvasapi
Caver
cch
cd
CDR
ceph
certificate
certification
CF
cgroup
chrome
ci
cite
client
clojure
close-wait
cloud
cloudera-manager
clustered-block
cmux
cnn
code-festival
code-review
codegame
codereview
coding
coding test
Collaborative Filtering
communication
competition
Compliance
component
conference
consul
container
contents
contest
contribution
cookie
core-js@3
Corporate Digital Responsibility
couchbase
COVID-19
cpp
culture
Data
data-engineering
DB
deep-learning
Dependency
dependency-graph
desktop
dev
dev-session
dev-track
developer
developer relations
developers
devops
digitalization
digitaltransformation
dns
docker
dr
Electron
employeecard
emscripten
eslint
event
extract-text
Feature List
Featured
Feedback
friendstime
front-end
frontend
functional-programming
funfunday
fzf
garbage-collection
gawibawibo
GC
GHC
github
globalpollution
go
Grace Hopper Celebration
graphdb
graphql
Ground X
growth
ha
hadoop
hate speech
hbase
hbase-manager
hbase-region-inspector
hbase-snashot
hbase-table-stat
hbase-tools
hri
ICPC Sinchon
id
if kakao
ifkakao
infrastructure
innodb
internship
ios
item
Java
javascript
javascript web-assembly
JCMM
JIRA
jsconf
jsconfkorea
json
k8s
kafka
kakao
kakao-Career-Boost-Program
kakao-commerce
kakao-games
kakaoarena
kakaobrain
kakaocommerce
kakaocon
kakaoenterprise
kakaok
kakaokey
kakaokrew
kakaomap
kakaopage
kakaotalk
KAS
KCDC
khaiii
Klaytn
Klip
KnowledgeGraph
kubernetes
l3dsr
l4
License
links
Linux
load-balancing
MAB
Machine Learning
machine-learning
map
marathon
meetup
melon
mesos
message
Messaging
microservice
Microsoft TypeScript
mm
mobil
mobile
mocking
monad
monorepo
ms-office
MSA
mtre
mysql
mysql-realtime-traffic-emulator
nand-flash
network
new
new-krew
nfc
Nickface
nomad
ocp
olive
onboarding
open
open source
opensource
openstack
OpenWork
OSS
page
pair programming
parallel
PBA
performance
planning poker
Platform
polyfill
preview
programming-contest
project
project-structure
pycon
python
quagga
react
reactive-programming
reactor
recap
recommendation
recommendation system
recruitment
redis
redis-keys
redis-scan
related-blind
Renderer
rest
Rome
rubics
ruby
rxjs
s2graph
scala
scalaz
seminar
Serve
server
service
service worker
session
sharding
shopping
Shuffle Partition
socket
spark
spark-streaming
SpringBoot
ssd
Statistics/Analysis
Stomp
storage
storm
style-guide
summer internship
support
System
talk
talkchannel
tcp
tech
Techtalk
test
thread
Thread-Debugging
time-wait
tmux
Topic Modeling
typescript
Untact
update
User Story
vim
vim-github-dashboard
vim-plugin
vue
vue.js
WASM
web
web-cache
web-worker
webapp
webgl
WebSocket
webworkers
weekly
Women Technologists
work
workplatform
개인화 추천
길찾기
라이선스
연관 추천
오픈소스
오픈소스검증
의존성분석
일하는방식
협업
All Tag
2021
2021-new-krew
Ad Platform
Ad tech
adaptive-hash-index
adt
adtech
agile
agilecoach
ai
algorithm
Algorithm/ML
Algorithm/Ranking
almighty-data-transmitter
Analyzer
android
angular
anycast
App2App
applicative
Architecture
arena
ast
async
aurora
babel
babel7
Backend
BApp
bgp
big-data
binary
ble
blind-recruitment
block
Block Chain
blockchain
bluetooth
brian
business
Cache
cahtbot
canvasapi
Caver
cch
cd
CDR
ceph
certificate
certification
CF
cgroup
chrome
ci
cite
client
clojure
close-wait
cloud
cloudera-manager
clustered-block
cmux
cnn
code-festival
code-review
codegame
codereview
coding
coding test
Collaborative Filtering
communication
competition
Compliance
component
conference
consul
container
contents
contest
contribution
cookie
core-js@3
Corporate Digital Responsibility
couchbase
COVID-19
cpp
culture
Data
data-engineering
DB
deep-learning
Dependency
dependency-graph
desktop
dev
dev-session
dev-track
developer
developer relations
developers
devops
digitalization
digitaltransformation
dns
docker
dr
Electron
employeecard
emscripten
eslint
event
extract-text
Feature List
Featured
Feedback
friendstime
front-end
frontend
functional-programming
funfunday
fzf
garbage-collection
gawibawibo
GC
GHC
github
globalpollution
go
Grace Hopper Celebration
graphdb
graphql
Ground X
growth
ha
hadoop
hate speech
hbase
hbase-manager
hbase-region-inspector
hbase-snashot
hbase-table-stat
hbase-tools
hri
ICPC Sinchon
id
if kakao
ifkakao
infrastructure
innodb
internship
ios
item
Java
javascript
javascript web-assembly
JCMM
JIRA
jsconf
jsconfkorea
json
k8s
kafka
kakao
kakao-Career-Boost-Program
kakao-commerce
kakao-games
kakaoarena
kakaobrain
kakaocommerce
kakaocon
kakaoenterprise
kakaok
kakaokey
kakaokrew
kakaomap
kakaopage
kakaotalk
KAS
KCDC
khaiii
Klaytn
Klip
KnowledgeGraph
kubernetes
l3dsr
l4
License
links
Linux
load-balancing
MAB
Machine Learning
machine-learning
map
marathon
meetup
melon
mesos
message
Messaging
microservice
Microsoft TypeScript
mm
mobil
mobile
mocking
monad
monorepo
ms-office
MSA
mtre
mysql
mysql-realtime-traffic-emulator
nand-flash
network
new
new-krew
nfc
Nickface
nomad
ocp
olive
onboarding
open
open source
opensource
openstack
OpenWork
OSS
page
pair programming
parallel
PBA
performance
planning poker
Platform
polyfill
preview
programming-contest
project
project-structure
pycon
python
quagga
react
reactive-programming
reactor
recap
recommendation
recommendation system
recruitment
redis
redis-keys
redis-scan
related-blind
Renderer
rest
Rome
rubics
ruby
rxjs
s2graph
scala
scalaz
seminar
Serve
server
service
service worker
session
sharding
shopping
Shuffle Partition
socket
spark
spark-streaming
SpringBoot
ssd
Statistics/Analysis
Stomp
storage
storm
style-guide
summer internship
support
System
talk
talkchannel
tcp
tech
Techtalk
test
thread
Thread-Debugging
time-wait
tmux
Topic Modeling
typescript
Untact
update
User Story
vim
vim-github-dashboard
vim-plugin
vue
vue.js
WASM
web
web-cache
web-worker
webapp
webgl
WebSocket
webworkers
weekly
Women Technologists
work
workplatform
개인화 추천
길찾기
라이선스
연관 추천
오픈소스
오픈소스검증
의존성분석
일하는방식
협업

위로