## 2 Materials and Methods
### Implementation
#### 2.3.2 User Modeling
For instance, if a user named A watches 3 movies and gives 3 points to Movie A, 4 points to Movie B, and 2 points to Movie C, then A user's movie frequency profile will be [\"Movie A\", \"Movie A\", \"Movie A\", \"Movie B\", \"Movie B\", \"Movie B\", \"Movie B\", \"Movie C\", \"Movie C\", \"Movie C\", \"Movie C\", \"Movie C\", \"Movie C\", \"Movie C\", \"Movie C\", \"Movie C\", \"Movie C\", \"Movie E\", \"Movie E\", \"Movie E\", \"Movie E\", \"Movie E\"]. In the LDA model, Movie E would statistically receive more benefit, thus getting a higher weight. (11) Creation of movie frequency profile per user  
The u.data stores \"user, movie, rating, time\" data. Step 1 involves assigning weights to the movies that the user has rated highly. In LDA used for topic modeling, the weight in the topic increases if the frequency is high. In this study, the weights are given in the form of \"movie ID * rating\", and a variable vector is created by adding the movie ID per user. For instance, if a user named A watches 3 movies and gives 3 points to Movie A, 4 points to Movie B, and 2 points to Movie C, then A user's(2) Creation of Movie Dictionary  
The movie dictionary consists of movie IDs that hold the implied meaning of the movie. A movie data dictionary, including unique identifier, movie title, release year, genre, etc., is created from the 1682 movies excluding those that did not receive a rating. The gensim's corpora module was used to create the movie data dictionary. If the movie frequency profile per user is put as an argument, the corpora module creates a word dictionary. The completed word dictionary is stored in the form of Python's Dictionary, like \"[0: 111, 1: 668, 2: 908...]\" in order of index number: occurrence frequency. SET dictionary TO corpora.Dictionary(topics_c)  
(3) Creating a Corpus per User  
This step is the process of creating a corpus per user using the movie dictionary and movie information per user, generating 943 corpus data corresponding to the number of users. The completed movie dictionary data and corpus per user are stored in the database. The concept of hashing and mapping can be used to convert words into numbers and check the frequency of those words. It is possible to hash words and map numeric IDs to each word using the doc2 bow function with the converted dictionary. This makes it possible to express the words in a document in numbers and check the frequency of those words. SET corpus TO [dictionary.doc2 bow(text) FOR text IN topics_  
Figure 8 illustrates the process of transformation from Raw data to User Profiles. The created movie dictionary data and corpus data per user are used to perform topic modeling through LDA. The Coherence Value [12] is calculated to determine the optimal number of topics. We used gensim library to calculate the Coherence Value. As a result, the coherence value results in [Figure 9] can be obtained, and the highest Coherence Value is considered as the optimal number. The coherence value measures how semantically consistent a given topic is. A high coherence value means that the words within each topic are well connected and that the topic expresses a clear subject. Therefore, the highest number was selected to determine the number of topics (60) for the final topic modeling in this study. The result of LDA topic modeling is shown in [Figure 10]. The circles on the left side of the area represent the topics, and the right side represents the words (movies) contained in the topic. In the bar graph on the right, the sky blue represents the total number of words (movies), and the red bar represents the number of movies in that topic. In the end, the movie with the longest red bar is selected as the main movie of the selected topic and becomes the first priority for recommendations. Figure 9: Coherence Score—determine the number of topics (60) for the final topic modeling. Figure 10: _Cont._