기계학습 기반의 뉴스 추천 서비스 구조와 그 효과에 대한 고찰 - 사이버커뮤니케이션학보 - 사이버커뮤니케이션학회 : 논문 - DBpia
카카오의 루빅스를 중심으로
박승택(신한카드), 성인재(카카오), 서상원(에이팀벤처스), 황지수(카카오), 노지성(카카오), 김대원(카카오)
사이버커뮤니케이션 학보 제34권 제1호
5 - 48 (44 pages)
박승택, 성인재, 서상원, 황지수, 노지성, 김대원. (2017). 기계학습 기반의 뉴스 추천 서비스 구조와 그 효과에 대한 고찰. 사이버커뮤니케이션학보, 34(1), 5-48.
#뉴스 추천 서비스
#멀티암드밴딧 알고리듬
#News Recommendation Service
고한준	, 박진우	, 김건표	외 1명
요약 1. 서론 2. 논의 배경 3. 루빅스 알고리듬에 대한 설명 4. 루빅스 도입에 따른 효과 5. 결론 : 기계학습 기반 뉴스 추천 구조의 적용 전망 및 함의 참고문헌 ABSTRACT
/gi,">");	} if(titleEN.indexOf("/gi,">");	} if(lang=="ko_KR"){ $("span.articleTitle").html(titleKR); $("span.equalTitle").html(titleEN); }else{ if(titleEN == ""){ $("span.articleTitle").html(titleKR); }else{ $("span.articleTitle").html(titleEN); $("span.equalTitle").html(titleKR);	} } /*테스트용 자동 팝업*/ //recommendPopup("NODE07129658", lang);	/*오늘 하루 안보기*/ $("#pub_today_check_01").click(function(){ $.fn.closeLayer('#pub_modalRecommendThesis'); setCookie("downloadPop","N",1); }); /*다운로드 버튼 클릭 시 $("#nodeSave_top, #nodeSave_btm").click(function(){ if(getCookie("downloadPop") != "N"){ if(dev_b2bId_chk != "" || dev_b2cId_chk!=""){	recommendPopup("NODE07129658", lang);	}	}	}); */ //관심저자 신규 논문 전체 클릭 $("#ck_model_alarm_03").click(function(){ $(".pub_author").prop("checked",$(this).prop("checked")); }); //관심저자 피인용 전체 클릭 $("#ck_model_alarm_04").click(function(){ $(".pub_author_quote").prop("checked",$(this).prop("checked"));	});	//리뷰 쓰기 시 로그인 체크 $(".reviewHead input, .reviewInputBox textarea, #revwRegist").click(function(){	/* if(dev_b2bId_chk == ""){ $.fn.openLayer('#pub_modalOrganPop');	} */ if(dev_b2cId_chk == ""){ $(this).blur(); $.fn.openLayer('#pub_modalLoginPop'); } }); /*입력 $(".reviewInputBox textarea").keyup(function(){ $("#dev_revwCnt").html(commaChk(revwCntChk($(this),1000))); $(this).siblings(".reviewFoot").focus(); }); */ //등록 $("#revwRegist").click(function(){ var params = {}; if($(".reviewHead input[type='text']").val().trim() ==""){ $.jQueryAlert("작성자를 입력하세요."); $(".reviewHead input[type='text']").focus(); return false;	} if($(".reviewInputBox textarea").val().trim() ==""){ $.jQueryAlert("리뷰 내용을 입력하세요."); $(".reviewInputBox textarea").focus(); return false;	} params.url= "/journal/revwWrite/"; params.writer = $(".reviewHead input[type='text']").val(); params.content = $(".reviewInputBox textarea").val(); params.title = $("#dev_node_title").html(); params.help = $(".reviewHead input[name='helpYN']:checked").val();	params.autrs = ""; $("p.author a").each(function(){ var url = $(this).attr("href");	params.autrs += url.substring(url.indexOf("=")+1,url.length); params.autrs += ","; }); updateSend(params);	});	reviewListCall();	/*Stick Up 설정*/	$("#stickyAnchor a").click(function() { var scrollPosition = $($(this).attr("href")).offset().top; $('html,body').animate({ scrollTop: scrollPosition - 100 }, 100); return false; }); jQuery(function($) { $(document).ready( function() { $('.stickyAnchorArea').stickUp({ parts: { 0: 'pub_abstract', 1: 'pub_index', 2: 'pub_keyword', 3: 'pub_reference', 4: 'pub_quote', 5: 'pub_download', 6: 'pub_recommend', 7: 'pub_review' }, itemClass: 'menuItem', itemHover: 'active', topMargin: 'auto' }); }); }); //리뷰쓰기 보이기 $("#dev_noReview button").click(function(){ $("#dev_noReview").hide(); $("#dev_reviewInputBox").show();	});	}); // 원문복사 신청 function showBanner() {//원문 저장 신청 var nodeId = "NODE07129658"; var btnType="2"; var b2bId = "";	if(btnType == "2" && b2bId != ""){ $.ajax({ type: "POST", url: ProxyUrl + '/journal/showBanner', dataType:"JSON", success: function(data) { if(data != null && Object.keys(data).length){ $("#pub_notification").show();	$("#pub_notification").find("a").attr("onclick","fnArticleCopyRequest('NODE07129658','"+data.LIBY_HMPG_ADRS+"')");	}	},error:function(e){ console.log(e); } });	} } //리뷰 글자수 function fnRevwCnt(e){ var $revwCnt = $(e).closest("div.reviewBody").next().find("span span.dev_revwCnt"); $revwCnt.html(commaChk(revwCntChk(e,1000))); } //관리자 인용양식 불러오기(제공 양식 불러오기 클릭 시) function fnAdminQuoteList() { var last_quote_type = ""; var last_quote = ""; var quote_type = $("#dev_btn_quoteType").children('span').text(); $.ajax({ type: "POST", url: ProxyUrl+"/mylib/searchAdminQuote", success:function(data) { if(Array.isArray(data) == true) { $("#dev_quoteList").empty(); if(data.length == 0) { $("#dev_quoteList").append('
'; $("#dev_quoteList").append(quoteList); }); }else { $.fn.closeLayer("#pub_modalQuoteThesis"); $.fn.openLayer('#pub_modalLoginPop'); } } }); $("#dev_btn_quoteType").children('span').text("기본 양식 불러오기"); $("#dev_btn_quoteType").attr("onclick","fnAdminQuoteList()");	} //인용양식 선택 했을 때 function fnSelectQuote(cttnDivCode, sel) { $("#quote_type").val(cttnDivCode); $("#dev_sel_quote").val($(sel).find('#dev_quote_id').val()); //선택된 인용양식 번호 셋팅 $("#dev_sel_quote_nm").val($(sel).find('#dev_quote_nm').text()); $(".gSelectedOne").removeClass("selected"); if(!$(sel).next().is(":visible")){ $(sel).addClass("selected"); } } //리뷰쓰기,수정 전송 function updateSend(params){	params.nodeId = "NODE07129658"; params.userId = "";	if(params.userId != ""){ var msg="처리 실패. 다시 시도해 주세요."; $.ajax({ url:ProxyUrl+params.url, type:"POST", data:params, dataType:"json", success:function(data){	if(data.success == -1){ msg="아이디 혹은 비밀번호를 다시 입력해 주세요."; }else if(data.success == 0){ if(params.url=="/journal/revwDelete"){ msg = "리뷰가 삭제되었습니다.";	}else{ msg = "리뷰 신고가 접수되었습니다."; } //내용 초기화 $('textarea').val(''); $("#radio_01").prop("checked",true); $("#dev_reviewInputBox .reviewFoot").find("span.dev_revwCnt").html("0"); reviewListCall(); } }, error:function(e){ //console.log(e)	}, complete:function(){ $.jQueryAlert(msg);	} });	}else{ fnLoginLayer(); } } //리뷰 불러 오기 function reviewListCall(){ $.ajax({ url:ProxyUrl+"/journal/revwList/", type:"POST", data:{nodeId:"NODE07129658"}, dataType:"json", success:function(data){	if(data.reviewer != null){ printReviewInput(data.reviewer); }	printReviewList(data);	}, error:function(e){ //console.log(e); }	}); } //글자바이트 수 체크 function revwCntChk(elem, end){ var cnt = calByte.getByteLength($(elem).val()); //var cnt = parseInt($(elem).val().length);	if(cnt > end){ var txt = calByte.cutByteLength( $(elem).val(), end );	//txt = txt.substring(0,end); $(elem).val(txt); $.jQueryAlert(end+" byte까지만 작성하실 수 있습니다."); cnt = calByte.getByteLength($(elem).val()); }	return cnt; } //리뷰 쓰기 창 그리기 function printReviewInput(info){ if(info != null){ $("div.reviewHead").find("span.dept").html(info.major); } if(info.block>0){ $("#dev_noAuth").show();	$("#dev_noReview").hide();	}else { $("#dev_noAuth").hide();	$("#dev_noReview").show();	} } //리뷰 리스트 출력 function printReviewList(info){	$("p.review span.count").html(commaChk(info.size)); $("#dev_revw_cnt").html("("+commaChk(info.size)+")");//리뷰 수	$("#dev_revw_cnt_ank").html("("+commaChk(info.size)+")");//리뷰 수	$("#dev_helpY_cnt").html(commaChk(info.help));//도움 수	$("#dev_helpN_cnt").html(commaChk(info.nhelp));//안도움 수 var $listArea = $(".reviewList ul.list"); var content = ''; var maxSize = 10; if(info.size>0){ $("#dev_noReview").hide(); $("#dev_reviewInputBox").show(); $("#dev_reviewInputBox").prev("#dev_noAuth").css("position","absolute"); }	info.reviews.forEach(function(item, idx){ if(idx'; if(item.majr_nm != null){ content += ''+item.majr_nm+''; }	content +='
북마크하신 논문을 내서재에서 확인하시겠습니까?";	$.jQueryAlertTwoButton(msg); $(".bookmarkSelected").addClass("selected"); $(".ui-dialog-buttonset button").on("click",function(){ if($(this).html()=="확인"){ location.href="/mylib/totalNodeList"; } }); }	}	} } //참고문헌 오픈 function fnModalApplyReference(){ if(dev_b2cId_chk != ""){ $("#pub_formGroup>li:gt(0)").remove(); $("input[name=modalApplyReferenceStep_url]").val(""); $.fn.openLayer('#pub_modalApplyReferenceStep1'); }else{ fnLoginLayer(); } } //참고문헌 - 이름 추출 function getNodeName(){	var nodeList = []; var msg=""; $("input[name=modalApplyReferenceStep_url]").each(function(){ var url = $(this).val(); if(url != ""){ var idx = url.indexOf("NODE"); if(idx< 0){ msg="DBpia 논문페이지의 URL을 입력해 주세요."; return false; }else{ var id=url.substring(idx,idx+12); if(id == $("#articleId").val()){ msg="보고 계신 논문과 동일한 논문입니다. 다시 입력해 주세요."; return false; }else{ nodeList.push(id); } } } }); if(msg !=""){ $.jQueryAlert(msg); return; } if(nodeList.length >0){ var uniq = nodeList.reduce(function(a,b){ if (a.indexOf(b) < 0 ) a.push(b); return a; },[]); var param={}; param.node= uniq; loadingOpen(); $.ajax({ url:ProxyUrl+"/journal/getNodeName", type:"POST", data:param, dataType:"json", success:function(data){	if(data.list.length<=0){ $.jQueryAlert("DBpia 논문페이지의 URL을 입력해 주세요."); }else{ nodeNamePrint(data.list); } }, error:function(e){ console.log(e); alert("조회결과가 없습니다."); } }); loadingClose();	}else{ //여기 얼럿창 $.jQueryAlert("DBpia 논문페이지의 URL을 입력해 주세요."); return false; } } //참고문헌 등록 function refBookRegist(){	var param={}; param.node = "NODE07129658"; param.notdNode = []; $("#pub_modalApplyReferenceStep2").find("input[name='notdNode']").each(function(){ param.notdNode.push($(this).val()); }); if(param.notdNode.length>0){ ajaxSend("/journal/setRefBook",param);	}else{ $.jQueryAlert("등록할 참고문헌이 없습니다.");	} } function ajaxSend(url, param){ loadingOpen(); $.ajax({ url:ProxyUrl+url, type:"POST", data:param, dataType:"json", success:function(data){	var msg=""; if(data.success < 0){ msg="로그인해야 이용하실 수 있습니다."; }else if(data.success == 0){ msg="등록이 완료되었습니다."; }else{ if(data.results == null){ msg = "등록 실패. 다시 시도해 주세요."; }	} //} if(msg != ""){ $.jQueryAlert(msg); } }, error:function(e){ console.log(e); } }); loadingClose();	} //참고 문헌 신고 1단계 출력 function nodeNamePrint(list){ var content = ""; list.forEach(function(item,idx){ console.log("item",item); if("K" == "E" && item.articleTitleEn != '') { content += '
';	});	$("#pub_modalApplyReferenceStep2").find("ul.listArea").empty();	$("#pub_modalApplyReferenceStep2").find("ul.listArea").append(content);	$.fn.closeLayer('#pub_modalApplyReferenceStep1'); $.fn.openLayer('#pub_modalApplyReferenceStep2'); } //참고 문헌 리스트 삭제 function refListDel(elem){ $(elem).parent().remove(); } //인용하기 클립보드복사 function fnCopyClipboard(){ var nodeId = "NODE07129658"; var copytext = document.getElementById("copyText"); var content = copytext.value; content = content.replace(//g,'').replace(/<\/ITLC>/g,''); copytext.value = content; copytext.style.display = 'block'; copytext.select(); document.execCommand("copy"); copytext.style.display = 'none'; $.jQueryAlert("논문의 정보가 복사되었습니다. 논문을 인용할 위치에서 붙여넣기 하세요.");//논문 정보가 XXX 양식으로 복사되었습니다. 논문을 인용할 위치에서 붙여넣기 하세요. } //오류제보하기 클릭 function fnModalReportError(){ if(dev_b2cId_chk != ""){ $.fn.openLayer('#pub_modalReportError'); $("#mainTtl").val(''); $("#subTtl").val(''); $("#eqTtl").val(''); $("#dev_tocUpdate").val(''); $("#dev_update_spage").val(''); $("#dev_update_epage").val(''); $('#dev_autrErr input[name=autrNmOrg]').each(function(idx){	$('#dev_autrErr input[name=autrNm]:eq('+idx+')').val($(this).val().trim()); }); $('#dev_autrErr input[name=autrIstnOrg]').each(function(idx){	$('#dev_autrErr input[name=autrIstn]:eq('+idx+')').val($(this).val().trim()); }); }else{ fnLoginLayer(); } } //오류 신고 function errReportSend(){ var $content;	var param = {}; var url=""; param.nodeId = $("#articleId").val();// 논문 아이디 var valimsg=""; switch($("#pub_selectDataType").val()){ case "416001"://제목 //$content = $('#pub_reportErrorInfo').children('.layer1').show();	if($("#mainTtl").val().trim() =="" && $("#subTtl").val().trim() =="" && $("#eqTtl").val().trim() ==""){ valimsg="수정하실 제목을 입력해 주세요."; }else{ url="/journal/errReport/title"; param.mainTtl = $("#mainTtl").val(); param.subTtl = $("#subTtl").val(); param.eqTtl = $("#eqTtl").val();	} break; case "416002"://목차 //$content = $('#pub_reportErrorInfo').children('.layer3').show(); if($("#dev_tocUpdate").val().trim() ==""){ valimsg="수정하실 목차 내용을 입력해 주세요."; }else{	url="/journal/errReport/toc"; param.toc=""; param.utoc=$("#dev_tocUpdate").val().replace(/\n/g,'
');	} break; case "416003"://페이지 //$content = $('#pub_reportErrorInfo').children('.layer4').show(); if($("#dev_update_spage").val().trim() =="" && $("#dev_update_epage").val()==""){ valimsg="수정하실 페이지 정보를 입력해 주세요."; }else{	url="/journal/errReport/page"; param.start = '5'; param.end = '48'; param.ustart = $("#dev_update_spage").val(); param.uend = $("#dev_update_epage").val(); } break;	case "416006"://저자 //$content = $('#pub_reportErrorInfo').children('.layer2').show(); $('#dev_autrErr input[name=autrNm]').each(function(){ if($(this).val().trim()==""){ valimsg="수정하실 저자명을 입력해 주세요."; $(this).focus(); return; } }); /* $('#dev_autrErr input[name=autrIstn]').each(function(){ if($(this).val()==""){ valimsg="저자 소속기관을 공백으로 신고할수 없습니다."; return; } }); */ url="/journal/errReport/author"; param = $("#dev_autrErr").serialize(); break;	}	if(valimsg !=""){ $.jQueryAlert(valimsg);	}else{ $.fn.closeLayer("#pub_modalReportError"); ajaxSend(url,param); //이메일 발송 요청 sendMail(param.nodeId); } } //신고 하기 메일 발송 function sendMail(nodeId){	var params = {}; params.name=""; params.title=$("#dev_node_title").html(); params.item=$("#pub_selectDataType").val(); params.nodeId=nodeId;	$.ajax({ typs:'POST', url:ProxyUrl+'/journal/errReport/sendMail', data:params, dataType:'JSON', success:function(result){ $.jQueryAlert("수정 요청이 접수되었습니다."); } });	} //저자검색 function fnSearchAutrNm(keyword){ $("#search").clearForm(); var keyword = "<"+"SRCH_AUTR_NM"+":contains:"+keyword.trim()+">"; $("#search input[name='collectionQuery']").val(keyword);	$('#search').attr("target", "_blank"); $('#search').submit(); } //셀렉트 박스 숨김/보이기 $("#pub_selectDataType").change(function() { var state = $('#pub_selectDataType option:selected').val(); //console.log(state); var $btnArea =$('#pub_modalReportError').find('#pub_modalFooter'); switch(state){ case "416000": $('#pub_reportErrorInfo').children().hide(); $btnArea.hide(); break; case "416001": $('#pub_reportErrorInfo').children().hide(); $('#pub_reportErrorInfo').children('.layer1').show();	$btnArea.show(); break; case "416006"://저자 $('#pub_reportErrorInfo').children().hide(); $('#pub_reportErrorInfo').children('.layer2').show(); $btnArea.show(); break; case "416002": $('#pub_reportErrorInfo').children().hide(); $('#pub_reportErrorInfo').children('.layer3').show(); $btnArea.show(); break; case "416003": $('#pub_reportErrorInfo').children().hide(); $('#pub_reportErrorInfo').children('.layer4').show(); $btnArea.show(); break;	} }); function moreListView(elem){ var cls = $(elem).parent().attr("class").split(" ")[1]; console.log("cls : "+cls); if(cls == "recommend"){ $("#dev_recommend_list").find("li").removeClass("hidden"); $(elem).hide(); }else{ $("#dev_withDownload_list").find("li").removeClass("hidden"); $(elem).hide(); } } function goArcPage(arg1,ancId){ location.href="/author/authorDetail?ancId="+ancId; } //개별체크버튼 해제 시 전체 체크버튼 해제 function fnUnChkAllCK(thisArea, type) { if($(thisArea).is(":checked") == false) { $('#'+type).prop("checked",false); }	}