DOI QR코드

DOI QR Code

Course recommendation system using deep learning

딥러닝을 이용한 강좌 추천시스템

  • 임민아 (안양대학교 ICT융합학부 소프트웨어전공) ;
  • 황승연 (안양대학교 컴퓨터공학과) ;
  • 신동진 (안양대학교 컴퓨터공학과) ;
  • 오재곤 ((주)한국정보기술) ;
  • 김정준 (안양대학교 ICT융합학부 소프트웨어전공)
  • Received : 2023.03.29
  • Accepted : 2023.06.09
  • Published : 2023.06.30

Abstract

We study a learner-customized lecture recommendation project using deep learning. Recommendation systems can be easily found on the web and apps, and examples using this feature include recommending feature videos by clicking users and advertising items in areas of interest to users on SNS. In this study, the sentence similarity Word2Vec was mainly used to filter twice, and the course was recommended through the Surprise library. With this system, it provides users with the desired classification of course data conveniently and conveniently. Surprise Library is a Python scikit-learn-based library that is conveniently used in recommendation systems. By analyzing the data, the system is implemented at a high speed, and deeper learning is used to implement more precise results through course steps. When a user enters a keyword of interest, similarity between the keyword and the course title is executed, and similarity with the extracted video data and voice text is executed, and the highest ranking video data is recommended through the Surprise Library.

딥러닝을 이용한 학습자 맞춤 강의 추천 프로젝트를 연구한다. 추천시스템은 웹과 앱에서 쉽게 발견할 수 있으며 이 특성을 이용한 예제는 사용자 클릭으로 특성 영상 추천과 SNS에서 평소 사용자가 관심 있던 분야의 아이템을 광고하는 것이 있다. 본 연구에서는 문장 유사도인 Word2Vec를 주로 이용하여 2번의 필터링을 거쳤으며 Surprise 라이브러리를 통해 강좌 추천을 하였다. 이러한 시스템으로 사용자에게 간편하고 편리하게 원하는 분류의 강좌 데이터를 제공한다. Surprise 라이브러리는 Python scikit-learn 기반의 라이브러리이며 추천시스템에 편리하게 사용된다. 데이터를 분석하여 시스템을 빠른 속도로 구현하고 딥러닝을 사용하여 강좌 단계를 거쳐 보다 더 정밀한 결과를 구현해낸다. 사용자가 관심 있는 키워드를 입력하면 해당 키워드와 강좌 제목과의 유사도를 실행하고 추출된 영상 데이터로 또 음성 텍스트와의 유사도를 실행하여 추출된 데이터로 Surprise 라이브러리를 통해 가장 높은 순위의 영상 데이터를 추천한다.

Keywords

Ⅰ. 서론

현대 우리 주변에서 보이는 전자제품이나 인터넷의 수 많은 웹사이트 대부분은 사용자를 위한 서비스를 제공한다. 서비스는 사용자에게 편의성을 제공한다. 대부분 서비스는 알고리즘 형태로 구성되어 그중에서도 사용자의 특성에 맞게 추천해주는 알고리즘이 있다. 유튜브는 사용자의 관심 분야를 파악하여 관련 영상을 클릭하도록 유도하며 추천한다. 이 외에도 쇼핑 사이트에서의 제품 추천과 SNS에서의 광고성 게시물 및 친구 추천까지 실생활에서 추천 알고리즘은 없어질 수 없는 기술이다.

인터넷을 이용한 모든 서비스는 사용자의 특성에 맞는 알고리즘을 추천하도록 하는 알고리즘으로 이루어져 있다. 쇼핑몰 사이트나 의료사이트, 교육사이트 등 여러 분야의 사이트에서 알고리즘은 작용한다. 알고리즘의 종류는 다양한데 이 중에서 추천시스템에 적합한 알고리즘에 대해 자세히 알아보고 응용할 예정이다.

본 논문에선 교육사이트에서 학습자가 학습하는 데에 있어서 도움이 될 수 있도록 학습자 맞춤 강좌를 추천하는 추천알고리즘에 관련해서 적합한 강좌를 추천해주는 연구를 진행하였다.

Ⅱ. 관련 연구

1. 데이터 수집

데이터의 형태에는 정형데이터와 반정형 데이터, 비정형 데이터로 나뉜다. 정형데이터는 비교적 수집하기 쉬운 데이터인 반면 비정형 데이터는 정해진 구조가 없으므로 수집이 어려운 데이터이다. 데이터 수집이란 말 그대로 데이터를 수집하는 것을 뜻하며 모인 데이터를 통해 정보를 얻는다. 수집하는 기술에는 데이터의 형태나 종류에 따라 다양하다. 먼저 정형 데이터의 수집 기술에는 Sqoop 및 Higo가 있으며 반정형 데이터에는 Chukwa와 Ftp 등이 사용된다. 비정형 데이터는 HTTP와 Ftp 등이 사용된다. 비정형 데이터를 수집하는 대표적인 기술 중에 ‘크롤링’이라는 기술이 있으며 이 기술에 대한 자세한 설명은 관련 연구의 2에서 볼 수 있다. 크롤링 외에도 RSS Scrapy 등 다양한 수집 방식이 있다.

2. 크롤링(Crawling)

크롤링은 비정형 데이터를 수집하는 기술 중 하나로 인터넷의 수많은 정보로부터 사용자에게 필요 있고 의미있는 데이터를 손쉽게 수집할 수 있는 기술이다. 크롤러 방식[1]에는 집중 크롤러(Focused Crawler), 분산 크롤러(Distributed Crawler) 등이 있다.

웹 크롤링은 웹사이트의 링크를 타고 들어가 웹페이지에 포함되어있는 내용이나 별점 또는 댓글들이나 긁어오는 기술이다. 필요한 데이터 수집을 위해 URL들을 리스트에 저장해야한다. 각 웹 서버 URL를 호출하기 위해선 동기, 비동기 처리 방식을 사용하며 동기 처리방식은 실행 작업이 완료 될때까지 기다리고, 비동기 처리방식은 작업 완료와 상관없이 동시 작업 및 빠른 웹사이트 결과를 얻을 수 있다.[2]

3. 추천알고리즘

추천알고리즘은 콘텐츠 기반 필터링과 협업 필터링으로 나뉜다. 콘텐츠 기반 필터링은 패턴을 분석하여 유사한 아이템을 찾는다. 즉 사용자의 소비 패턴이 일관된다면 해당 아이템과 특성이 비슷하고 관련된 아이템을 추천한다. 주로 아이템의 특성으로 텍스트 데이터인 카테고리와 이름 이미지 데이터인 이미지로 나타낼 수 있다. 본 연구에선 Word2Vec 모델을 활용하여 강좌 추천을 위한 필터링 작업에 사용되었다.

다음으로 협업 필터링은 콘텐츠 기반 필터링과 달리 사용자들로부터 얻은 정보에 맞게 아이템을 추천하는 시스템이다. 유사 아이템의 평가 이력에 따라 아이템을 추천하는 것이며, 사용자의 사용 정보를 참고하여 추천하는 것이다. 본 연구에서 협업 필터링에 Surprise 라이브러리가 활용되어 강좌의 평가 데이터를 고려하여 추천해 준다.[3]

4. Word2Vec(Word to vector)

word2Vec는 대표적인 콘텐츠 기반 필터링으로 자연어 처리(NLP, Natural Language Processin)분야에 속하며 그중에서도 단어 임베딩으로 분류된다. 단어 임베딩은 단어들을 벡터화하는 것을 뜻한다. 즉 문장 유사도로 문장을 벡터로 변환하여 유사한 단어를 추출 해내는 기법이다. 비지도 학습 알고리즘으로 스스로 비슷한 단어들을 찾아내는 특성을 가진다.[4]

CBOW(Continuous Bag Of Word)모델과 SG(Skip-Gram)모델로 나뉘며 CBOW 모델은 연속된 단어들에서 주변 단어(맥락)으로 타겟 단어를 유사도를 계산하여 예측한다. SG 모델은 반대로 타겟 단어를 통해 나머지 단어(맥락)의 존재를 계산하여 예측하는 모델이다.[5] 본 연구에선 SG 모델을 사용했으며 데이터의 필터링을 위한 문장 유사도로 활용된다.

5. Surprise 라이브러리

Surprise 라이브러리는 Python 기반의 라이브러리로 Scikit-learn API와 비슷한 형태로 구축한다. 협업 필터링 알고리즘으로 SVD, KNN, BaselineOnly 등 다양한 클래스를 활용하여 추천시스템을 구현할 수 있다. 주로 K-최근접 이웃(K-Neighbor Nearest, KNN) 알고리즘과 특이값 분해(Singular Value Decomposition, SVD) 알고리즘 클래스가 사용되며 본 연구에선 SVD 클래스를 활용하여 추천시스템을 구축하였다.

SVD는 행렬을 분해하여 잠재요인을 추출한다. 즉 행렬 분해는 고차원에서 저차원으로 축소함으로써 잠재적인 요인을 발견해내는 것을 말한다. 행렬 A에 대한 식은 A ≈ USVT와 같이 정의되며 U = m * n, S = m * n, V = n * n으로 각각 사용자 요소 행렬(U), d 차원으로 축소된 벡터(S), 아이템 요소 행렬(VT)로 구성된다.[6][7] 다음 그림 1은 행렬을 분해한 데이터 세트를 내적 곱으로 결합해내어 사용자가 평가하지 않은 데이터에 평점을 예측하는 기법을 나타낸 그림이다.

OTNBBE_2023_v23n3_193_f0001.png 이미지

그림 1. 잠재요인 행렬 분해 기법 과정

Fig. 1. Latent Factor Matrix Decomposition Technique Process

Surprise 라이브러리로 구현할 때 데이터 로딩, 모델 설정 및 학습, 예측되는 과정으로 진행되며 각 단계에서 사용되는 클래스와 함수의 설정 및 포맷으로 정확성이 좌우된다. 예측 알고리즘 함수로는 predict() 함수를 제공하며 trainset은 predint() 함수에서 훈련되어 평가를 예측한다. 모델을 학습하기 위해 Reader 클래스로 지정 데이터 파일을 분석하고 평점 범위를 지정하여 학습시킬 때 예측 평점을 매길 수 있도록 한다.

현재 프로젝트는 강좌를 추천하는 시스템이므로 강좌의 평점을 예측하여 가장 높은 평점인 강좌를 추천해준다. 즉 사용자가 아직 평가하지 않은 영상을 추천 리스트에 넣어 예측 평점 순으로 보여주는 시스템이다.

Ⅲ. 연구 설계

유튜브 웹사이트에서 크롤링을 이용하여 제목, 조회수, 좋아요 수, 사이트 주소(Uniform Resource Locator, URL) 및 채널명을 스크래핑하여 데이터들을 수집한다. 수집된 데이터들은 csv 파일로 저장하여 스크래핑 한 정보들(제목, 조회수 … )을 컬럼으로 지정한다. 또 이후 생성될 강좌 음성을 텍스트화한 데이터의 저장을 위한 컬럼도 지정한다. 이는 파일에 저장된 URL의 음성을 텍스트로 변화하기 위함이다. 크롤링을 통해 수집된 종합 데이터는 Word2Vec 알고리즘을 통해 사용자가 입력한 키워드와 비슷한 키워드를 추출 해낸다. 예로 ‘파이썬’을 입력 키워드로 지정하면 가장 높은 유사도를 가진 10개의 키워드가 순서대로 출력되며 가장 높은 유사도를 나타낸 키워드로 ‘정보처리기사’가 출력된다.

Word2Vec 알고리즘은 유사 키워드가 추출함과 동시에 해당 키워드가 포함된 데이터를 뽑아내어 2차 파일로 추출하여 저장하기 위해 사용된다. 즉 ‘정보처리기사’ 키워드가 포함된 csv 파일 내 텍스트 데이터가 행 단위로 추출된다. 이 과정을 2번 반복함으로써 정밀한 데이터를 필터링해낸다. 마지막으로 Surprise 라이브러리를 이용하여 데이터를 추천해준다. 협업 필터링이기 때문에 개인 회원들의 강좌 평가가 필요로 하지만 수집된 데이터는 유튜브에서 추출된 데이터이기 때문에 개인 회원의 개념을 따로 출력해낼 수 없다. 그러므로 가상의 회원을 생성하여 라이브러리를 구현하였다.

다음 그림 2는 시스템의 전체적인 흐름을 간단하게 표현한 구성도이다.

OTNBBE_2023_v23n3_193_f0002.png 이미지

그림 2. 강좌 추천 시스템 절차 구성도

Fig. 2. Course Recommendation System Procedure Chart

프로그램은 총 5단계의 거치도록 시스템을 구현하였다. 처음 1단계에선 크롤링으로 수집된 종합 데이터를 기반으로 사용자는 키워드를 입력한다. 입력한 키워드와 가장 높은 유사도 키워드로 1차 필터링 파일을 생성한다. 2단계에선 1차 필터링 된 파일의 컬럼 중 URL를 활용하여 파일 내 인덱스 순서대로 영상들의 음성을 추출한다. 3단계는 추출된 음성들을 텍스트화하는 작업을 실행한다. 이 또한, 파일의 인덱스대로 실행되었으며 해당 영상과 같은 행과 일치하도록 m2t(mp3 to text)컬럼에 데이터를 저장시킨다. 4단계는 m2t 컬럼에 저장된 텍스트 데이터로 2차 Word2Vec를 활용하여 2차 필터링 파일을 생성한다. 마지막 5단계에선 Surprise 라이브러리로 2차 필터링 된 파일에서 좋아요 수(평점)를 예측하여 가장 높은 좋아요 수를 추천한다.

Ⅳ. 실험 및 결과

수집된 모든 데이터를 대상으로 1차 필터링을 하기 위해 Word2Vec 알고리즘을 사용한다. 사용자는 특정 키워드를 입력하여 ‘해당 키워드’와 영상 데이터의 ‘제목’과의 유사도를 측정한다. 이는 가장 높은 유사도를 보이는 단어가 영상 데이터에 포함되면 해당 데이터들을 추출해내기 위함이다. 사용자가 ‘소프트웨어’를 입력했을 때 추출된 결과는 다음 표 1과 같다.

표 1. 1차 유사도 결과

OTNBBE_2023_v23n3_193_t0001.png 이미지

Table 1. 1st similarity result

1차 필터링 된 데이터들은 영상의 제목이 가장 유사한 단어가 포함된 제목들로 구성되어있다. 즉 ‘설계’라는 키워드가 포함된 제목들로 구성된 데이터만 모인 csv 파일이 생성된다.[8]

2단계는 1차 필터링의 영상 데이터들의 음성을 가져 오는 것이다. 음성을 텍스트화하여 2차 필터링하기 위함이다. 음성을 가져오기 위해선 해당 사이트의 URL이 필요하다. csv 파일에 있는 URL을 인덱스대로 읽어와 Python에서 제공하는 Pytube 라이브러리로 Youtube 영상을 다운로드한다. 다운로드 된 영상 파일들은 3단계 영상을 텍스트로 변환하는 과정에 사용된다. SpeechRecognition 패키지는 파이썬에서 음성인식을 도와주는 라이브러리이다. csv에 저장된 인덱스대로 텍스트한 데이터는 m2t컬럼(mp3 to text)에 저장한다. 이는 4단계에서 2번째 Word2Vec로 2차 필터링을 하기 위함이다. 다음 그림 3는 1차 필터링된 데이터의 텍스트화한 파일이다.

OTNBBE_2023_v23n3_193_f0003.png 이미지

그림 3. 1차 필터링의 음성 텍스트화

Fig. 3. Speech-to-text in first-order filtering​​​​​​​

그림 2에서와 같이 m2t컬럼에는 음성에서 텍스트화(Speech-to-text)된 데이터들이 저장되어 있다. 2차 필터링에서는 m2t 데이터들로 유사도를 진행한다. 마찬가지로 Word2Vec를 이용했으며, 2차 필터링은 1차 필터링과 달리 음성을 텍스트화한 문장을 이용하여 유사도를 실행했기 때문에 불용어 처리를 1차 때보다 정의해야 할 필요가 있다. Word2Vec는 자연어 처리로 불용어 정의는 중요한 정규화 작업을 거쳐야 한다. 불용어 정의가 부족할 시에 다음과 같은 결과가 출력된다. ('기', 0.9904847145080566), ('본', 0.9904614090919495), ('계시다', 0.9841553568840027) … ('건', 0.9833410382270813)과 같이 조사, 동사 결과가 출력됨을 볼 수 있다. 출력 결과는 다음과 표 2와 같다.

표 2. 2차 유사도 결과

OTNBBE_2023_v23n3_193_t0002.png 이미지

Table 2. 2st similarity result

출력 결과는 ‘프로그램’이 가장 높은 유사도를 가지며 m2t 컬럼에서 ‘프로그램’이라는 키워드가 포함된 데이터를 2차 필터링하여 추출한다. 이렇게 추출된 데이터는 마지막 5단계에서 Surprise 라이브러리에 활용되며 유튜브의 ‘좋아요 수’를 이용하여 강좌를 추천해준다.

2차 필터링 파일과 좋아요 수(평점)표 파일을 Pandas의 merge()함수를 이용해 데이터 프레임을 합쳐 새로운 csv파일을 재생성한다. Reader 클래스를 이용하여 데이터의 평점을 분석한다. 2차 필터링 파일에서 좋아요 수는 최대 200개로 저장되어 있으므로 rating_scale은 1~200으로 설정한다. 학습 데이터(train data)와 테스트 데이터(test data)로 분리해주고 fit() 함수를 사용하여 학습 데이터를 학습시킨다. SVD 행렬 분해 기법을 실행하기 위해 잠재 요인의 크기를 50으로 지정하고 fit() 함수를 통해 모델을 학습하여 테스트 데이터로 평점을 예측한다.

Surprise는 예측 함수로 test() 함수와 predict() 함수를 제공한다. test()를 호출해 RMSE(Root Mean Squared Error) 성능을 평가한다. RMSE는 평균 제곱근 오차로 모델이 예측한 값과 실제 값의 차이를 뜻한다. 즉 RMSE 값이 작을수록 예측 정확성은 높아진다. 현재 프로젝트에서의 RMSE는 1.1426 결과를 출력해냈다. 반환된 예측 목록으로 predictions 매개변수를 이용했으며 test() 함수에서 반환된 예측 목록은 다음 표 3과 같다.

표 3. test() 함수 반환 예측 목록

OTNBBE_2023_v23n3_193_t0003.png 이미지

Table 3. test function return prediction list

20개의 강좌들이 추천되었으며 가장 높은 est(예측 평점)는 강좌 ID가 7번인 199.93360064946833으로 최대 값인 200과 가장 가까운 값을 나타낸다.

Ⅴ. 결론

이번 연구에서는 여러 기술이 종합적으로 사용되었다. 웹사이트에서 필요한 정보들만 뽑아오는 크롤링과 음성을 텍스트로 변환하는 기술, 단어를 벡터화하여 비슷한 단어의 유사도를 구해는 Word2Vec, 파이썬 기반의 라이브러리인 Surprise 라이브러리로 추천 시스템을 구현하였다. 협업 필터링의 특성으로 개인 회원의 평점이 필요로 된다. 하지만 유튜브에서 추출한 강좌이기 때문에 개인의 평점을 매길 수 없다는 단점이 있지만 좋아요 수 또는 조회수로 평점을 대신하여 가상의 회원과 예측 평점을 출력하여 강좌를 추천하는 방식을 이용했다.

결론적으로 충분한 데이터양은 정확성과 비례된다. 이러한 이유로 충분한 데이터양과 각 기술들의 설정들을 정밀하게 조정한다면 만족스러운 결과를 얻을 것이다.

References

  1. Tae-su Wang, JaeBaek Song, Dayeon Son, Minyoung Kim, Donggyu Choi, Jongwook Jang, "Web crawler Improvement and Dynamic process Design and Implementation for Effective Data Collection", Journal of the Korea Institute of Information and Communication Engineering, Vol. 26, No. 11, pp.1729-1740, Nov 2022 DOI:https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE11169034  https://doi.org/10.6109/JKIICE.2022.26.11.1729
  2. Dong-Hyun Won, Hyuk-Gyu Park, Yun-Jeong Kang, Min-Hye Lee, "Asynchronous Web Crawling Algorithm", Journal of the Korea Institute of Information and Communication Engineering, pp.364-366, Oct 2022 DOI:https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE11161558 
  3. Wooyong Jung, Chanuk Kyeong, Seongwoo Lee, Soo-Hyun Kim, Young-Ghyu Sun, Jin-Young Kim, "Exercise Recommendation System Using Deep Neural Collaborative Filtering", The Journal of The Institute of Internet, Broadcasting and Communication (IIBC), Vol. 22, No. 6, pp.173-178, Dec. 31, 2022 DOI:http://koreascience.or.kr/article/JAKO202201856699617.page 
  4. Sejoon Park, Yungcheol Byun, "Improving Recommendation Accuracy based on Machine Learning using Multi-Dimensional Features of Word2Vec", Journal of KIIT, . Vol. 19, No. 3, pp. 9-14, Mar. 31, 2021 DOI:http://dx.doi.org/10.14801/jkiit.2021.19.3.9 
  5. Jee-Uk Heu, "Korean Language Clustering using Word2Vec", The Journal of The Institute of Internet, Broadcasting and Communication (IIBC), Vol. 18, No. 5, pp.25-30, Oct. 31, 2018 DOI:http://koreascience.or.kr/article/JAKO201833469090754.page 
  6. Tae-Hoon Kim, Sung Kwon Kim, "SVD-based Cross-Domain Recommendation Using K-means Clustering", Journal of KIISE, Vol. 49, No. 5, pp. 360-368, May, 2022 DOI:https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE11063208&language=ko_KR&hasTopBanner=true  1063208&language=ko_KR&hasTopBanner=true
  7. Hyunjong Lee, Hogyeong Jeong, Gwangseop Gim, Dohyun Yun, "Evaluation Methods for Personalized Collaborative Filtering and Improvement using Singular Value Decomposition", Korea Information Science Association, Vol.38, No.2(B), pp.283 - 286, Nov, 2011 DOI:https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE11063208&language=ko_KR&hasTopBanner=true  1063208&language=ko_KR&hasTopBanner=true
  8. Seon-Woong Gil, Ki-Young Lee, "A Behavior-based Authentication Usingthe Measuring Cosine Similarity", The Journal of The Institute of Internet, Broadcasting and Communication (IIBC), Vol. 20, No. 4, pp.17-22, Aug. 31, 2020 DOI:https://doi.org/10.7236/JIIBC.2020.20.4.17