=Paper=
{{Paper
|id=Vol-2604/paper77
|storemode=property
|title=Intelligent System of Visualization and Creation of Choreographic Setting
|pdfUrl=https://ceur-ws.org/Vol-2604/paper77.pdf
|volume=Vol-2604
|authors=Andrii Stefanchuk,Olga Lozynska,Taras Basyuk,Oksana Oborska,Anatolii Vysotskyi,Khrystyna Mykich,Iryna Zavuschak
|dblpUrl=https://dblp.org/rec/conf/colins/StefanchukLBOVM20
}}
==Intelligent System of Visualization and Creation of Choreographic Setting==
Intelligent System of Visualization and Creation of Choreographic Setting Andrii Stefanchuk1, Olga Lozynska[0000-0002-5079-0544]2, Taras Basyuk[0000-0003-0813-0785]3, Oksana Oborska4, Anatolii Vysotskyi5, Khrystyna Mykich[0000-0002-4324-2080]6, Iryna Zavuschak[0000-0002-5371-8775]7 Lviv Polytechnic National University, Lviv, Ukraine Taras.M.Basyuk@lpnu.ua Abstract. The purpose of this tusk is creation of an intelligent system for visu- alization and creation of choreographic performances, which would enable the user to perform his tasks related to dance performances quickly and convenient- ly. To achieve this goal, the following tasks were set: to carry out researches of the literary sources concerning a subject of work; to carry out the analysis of similar systems and to prove the development of the studied system; to carry out systematic analysis and substantiate the problem; to make the choice of methods and means for solving the problem; implement software implementa- tion of the mobile application to solve the problem; - to test the developed sys- tem. Object of study is the process of visualizing and creating choreographic productions. Subject of study is methods and tools for building an intelligent visualization system and creating choreographic productions. Research methods is application of system analysis methods. The obtained results enable the cho- reographers to visualize their productions quickly and effectively. With the help of a developed system, they can overlay music on their production and arranged pictures. This information will be accessible to them from any device as the da- ta will be stored on the server. Keywords. Visualization, Dance, Choreographic Scene, Information System, Mobile Application, Choreographic productions. 1 Introduction The history of dance begins with the history of human civilization. Initially, people tried to communicate with the deities in this way. Prayers for good hunting and abun- dant crops were expressed in the dance. As soon as sounds began to form tunes and music, so immediately people began to move into a rhythm, creating a dance [1-7]. Gradually the chaotic movements became clearer and over time the dance became a full-fledged kind of art with its history and its various kinds. Dance was created in many forms and was used in many places. These could be ritual tribal dances, wed- ding dances, choreographic performances in the theater, demonstration dances before gladiator battles, dances to support football teams, dance music by dancers or purely Copyright © 2020 for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0). dance shows. Hundreds of years of development of dance art have formed many of its manifestations - both official and widely recognized, as well as narrow and little known. However, the notion of choreography is a common concept for describing dance on stage. In Greek, "choreography" means the recording of movements. But the meaning of this word has become much broader and the term “choreography” today includes everything that pertains to the art of dance: professional classical ballet, folk and ballroom dancing, modern dance, variety dance and contemporary dance - all this is called choreography. Usually, people perceive dance as entertainment or a classic art that is shown in theaters. However, in recent years, dance and choreography have gained a lot of popularity on the Internet and are rapidly going beyond the classical representation. Modern dances are often found in the following cases: massive flash mobs in support of anything; choreography for music videos and commercials; pro- duction of a demonstration performance of the dance team / group; statement of sup- port groups; performances of show-ballets together with popular artists; dance videos that can garner a huge amount of views through the development of social networks. The core of the development of the modern dance industry can be considered Los Angeles. More than one hundred vocational training studios have been opened there. Dancers from these schools take part in world-class concerts such as Beyoncé or Drake, staging a long-running show. They also shoot videos that are watched by many users of video services such as YouTube and Instagram [8-12]. Due to this rapid development of the dance sphere, the dancers have moved from the status of a dancer on the background of the star to the status of stars who perform on a level with the singer or the central figure on the stage. Modern technologies al- low you to organize an incredible show and capture the attention of the viewer very firmly. This involves the organization of the stage, the lighting at every moment of the show, the transformation of the stage, the movement of dancers across the stage and the direct choreography. Due to the size of the stage, the viewer often does not pay attention to the movements of individual dancers, but pays more attention to the overall picture of all the dancers on stage. The choreographer, who creates and ar- ranges the choreographic drawings, arranges this painting on stage. Good dance performance is not always an easy task and requires considerable hands-on experience, musical listening and creative skills, including the ability to improvise, think artistically, and be able to show your intent through dance. Initially, the choreographer comes up with the idea of staging. Then he finds and composes the music that best describes the idea of the number. To create the most stunning perfor- mance that will be voluminous and use the entire stage area, you need to correctly and competently arrange the dancers at every moment of time. Creative and punchy drawings can turn music and choreographic movements into an unforgettable number that is unmatched by others. Dynamic and spectacular changes in the arrangements of the dancers on the stage are a tool that keeps the viewer energized and draws attention to the required areas of the stage. 2 The Problem of Rendering Productions and Choreographic Drawings Typically, the duration of choreographic performances varies from 3-4 minutes to 12- 20 minutes. Not always enough is enough to keep in touch with the viewer of an in- teresting idea of a room. An important role is played by the emphasis on what is hap- pening in a particular part of the scene. The classic way of accentuating among chore- ographers is interesting tricks and dynamic changes in the arrangements on stage (change of pictures). In order to organize and memorize the entire choreographer's performance, certain tools are clearly needed. Likewise, dancers need to know and remember all their positions throughout the room. In the case of a short number with the participation of several people, you can do the standard entries and sketches on a piece of paper. In this approach, the participants of the number are represented by bold dots, and their movements on the stage - by arrows. The additional designation of the dancers' names creates a clutter of drawings. However, when the number of participants in a production increases or the duration of a number exceeds the mark in a few minutes, problems arise. It becomes difficult to memorize or draw it all on paper. It becomes difficult to make some changes to the created drawings. There are many questions and misunderstandings between the dancers themselves. The very process of arranging the dancers on stage is long and exhausting. Initial developments of the choreographer require changes and modifica- tions. It is especially difficult to navigate when there are many drawings and they are unusual and require the dancer’s maximum attention. Typically, the image of the choreographic drawings looks as it does in Fig. 1. Fig. 1. Image of choreographic drawings on paper Some problems arise due to the dynamic changes in the number of dancers in rehears- als. In the absence of some people in training, there is a need to replace them with handy tools, such as shoes, to mark their placement on stage. Increasing or decreasing the number of dancers necessitates a change in all developments and can cause major problems due to the violation of symmetry and beauty of the figures. Music is a very important factor in creating productions. Transitions are created using mood and mu- sic dynamics. In the process of rehearsals and arrangements of dancers on stage, the imposition of music on the created drawings and arrangements takes almost the most time. This is because the dots on the paper are in no way correlated with the music track. The choreographer can usually record at what point the dancers must move to other positions, but this process will take a long time. Therefore, using standard methods for rendering productions, the production choreographer is likely to run into the following problems: much time used for large productions; the need to change all the achievements, even with a minimal change of the group of dancers; communica- tion of the choreographer with the dancers to breed all the drawings, which will take a long time to achieve the desired result; the gravity of the names of the dancers; work with complex forms; lack of means to synchronize music; the difficulty of spreading the drawing to a group of people and the incomprehensibility of the mark to others; the problem of making changes and redrawing the drawings. The most obvious and convenient solution for choreographers is to create a mobile application that combines all possible features to simplify the production process. 3 Analysis of Known Systems for Visualization of Choreographies Analyzing the market for mobile applications, web applications and software, not many systems were found to solve the problem of rendering choreographic perfor- mances. There are many different solutions for team player placement such as foot- ball, basketball or volleyball. There are also many programs for learning about certain dance moves or working with music tracks. However, several solutions for the iOS mobile operating system have been found and analyzed. The main criteria for evaluat- ing found applications were the following indicators: speed of performance of opera- tions on productions; user interface convenience; functionality; user reviews. Among the applications found, the following was analyzed: PlayBook Dance, ChoreoRoom, StageKeep. PlayBook Dance. The application lets you create a sequence of choreograph- ic drawings and see animations of transitions between them. It is possible to name dancers and perform basic operations on them (Fig.2). There is an op- portunity to share the work, so the task of rendering the application per- forms. However, this application has the following disadvantages: the appli- cation is not updated to the current version of the iOS operating system, which does not allow users to use the application; a large number of defects not taken into account details; outdated user interface; basic functionality on- ly. Fig. 2. Application interface Playbook.Dance ChoreoRoom. The functional application repeats the first example, but con- tains a number of improvements and modifications. It allows you to create new layouts better and faster. Added the ability to assign different colors to dancers (Fig.3). The graphics of the application are optimized and clear. However, the application does not add anything radically new and one of the drawbacks is the large size of the scene, which does not change and is not always necessary. Fig. 3. Application interface ChoreoRoom StageKeep. Among all found applications, StageKeep has the greatest func- tionality and solves a number of additional tasks that are not solved by other applications. This app allows you to synchronize your play with music and supports tablets. The disadvantages are the high cost of the application and the complexity of use (Fig.4). Fig. 4. Application interface StageKeep None of the products under consideration offers the user work with forms and does not contain data dissemination within the system. A potential enhancement to existing systems is to offer the most optimal movement between images. Among the considered analogues were highlighted the main functions that the sys- tems that solve the problem of visualization of choreographies have. The most im- portant indicators are performance and usability. Another important factor is the small features that help the user and eliminate the need to use other tools in the process of rendering the choreography. These include changing the color of dancers or adding notes to drawings. The analysis has shown that the urgent task is to design an intelli- gent system for creating choreographic productions using a mobile device so that valuable information is available to the user at any time. The new system will be able to correct any shortcomings of existing solutions and help the user to visualize their productions as efficiently as possible. 4 System Analysis of the Object of Study and Subject Area There are several basic principles of a systems approach. Among them were chosen the best fit into the analysis of intelligent visualization system of choreographic pro- ductions: The principle of the ultimate goal. This principle emphasizes that the ulti- mate goal is the highest priority [13-17]. The formulation of the ultimate goal is critical for the systematic approach, since all further studies will be based on it. Any change should have an impact analysis on the final goal. The main purpose of the intellectual system is to create the arrangement of dancers on stage, their transitions between drawings and synchronization with music. The system should also analyze the arrangements of the dancers and formulate the best subsequent placements. The principle of unity and connectedness. Guided by this principle, we con- sider systems collectively as one unit, consisting of many separate parts. Each subsystem performs a set of functions [18-21]. It is possible to identify which components are completely independent and which are dependent on others. This analysis will also help to break down the designed system into submodules, which will improve the system's functioning and facilitate com- ponent reuse. The system will contain such basic modules - work with input, work with dancers on stage, work with a list of works, work with music syn- chronization, work with a profile of the user, work on data and generation of offers. The principle of modularity. When decomposing the system, modules of varying degrees of generality are highlighted [22-26]. In particular, the tem- plate generation module can be divided into two sub-modules: identifying the most popular placements and generating the most optimal routes. Also worth mentioning is a submodule for analyzing user operations on stage and a module for working with a music track. The principle of hierarchy. This principle involves building a hierarchy of elements in the system and ranking them [27-31]. This process makes it easy to view and build the system components as a whole. By building a hierar- chy, the ordering and detailing of the components of the system by im- portance were implemented (the component of moving a dancer to a new po- sition includes the process of analyzing the movement of a dancer from pre- vious positions). The principle of functionality. Each function of the system has its own priori- ty and its place in the overall structure [32-34]. When new functionality is added, the entire structure is revised and modified as needed. The main func- tions of the system are the functions of choreography and work with music, and they have the highest priority. The editing functions of the dancers them- selves, their names, and the addition of notes have lower priorities as they are additional functions of the system and do not form the basic functionali- ty. The principle of development. The developed system is capable of expan- sion with new functionality and accumulation of information [35-37]. You can add music sync and conversion time depending on the dynamics of the music, etc. to the main functionality. It is also worth considering the user feedback factor that can generate a variety of ideas for improving the system. The principle of decentralization. In managing a system, the relationship be- tween centralization and decentralization is determined by the purpose and purpose of the system. The system is centralized because it is used by the us- er, who uses its capabilities. Modeling general requirements. In order to describe the general system re- quirements [38-41], a detailed description of precedents should be made ac- cording to the RUP, as it is the most informative and useful compared to oth- er methods. Rational Unified Process (RUP) is one of the most common flexible software development methodologies developed by Rational Soft- ware. According to this technique, the product is updated about once every six months, but it is possible more often. Unified Modeling Language (UML) is used to model the common knowledge base. RUP provides itera- tive product development. Each iteration is defined by a set of goals that must be completed by the end of the iteration. Therefore, the general requirements for the system include the following: 1. Interested persons of the precedent and their requirements: Choreographer: The main user of the system that will create the productions he wants to visualize. The main indicator for the user will be the speed and convenience of transactions. The user has no trouble doing all the manipula- tion of the scene, dancers and music. After creating the production, the cho- reographer should be able to expand his work with others. Dancer: This system user will be able to view the created choreography by another user and track their movements on stage during the number. He will also be able to comment on a particular post. 2. The user of the software system. This program can be used by any user of the device running the iOS operating system, but it will be applicable only for chore- ographers, dancers and people who create different kinds of staging, whether per- forming on stage or performing at a stadium support team. 3. Prerequisites for precedent: User login; User registration; Successful retrieval of stored user data. 4. Successful scenario: the user logs in; a user creates a new account or uses an existing one; a user requests a list of their saved choreographs; the system processes the request; the user views, edits and creates new data in the system; the system displays all changes through the user interface. 5. Scenario Extensions or Alternative Streams. The system should issue errors to the user if there is any error on the server side or show warnings if certain conditions have been violated and the user cannot take some action on the system. 6. Post-conditions: output a list of choreographs and templates at the request of the user; display animations of transitions between different images; information is stored locally and remotely; 7. Special system conditions: validation of user actions; ability to undo the most recent actions taken; real time work; clear graphic elements. Conceptual model of the system. You can imagine the system using a conceptual model. A number of concepts are used to model the system in detail, to make the system more explicit. Some models may be physical objects representing the concept. Conceptual models are often abstractions of real-world objects. Building a diagram of use cases. The precedent chart represents all possible user interactions with the system and the types of users interacting with the system. The use case is one of the main techniques used in system analysis, which is useful for defining, detailing and organizing system requirements. In the context of the use case diagram, the system is called what is being developed and will be operated. In our case, it will be a mobile application for visualizing choreographic performances. In Unified Modeling Language (UML), there are standards for marking certain real ob- jects using precedent diagrams. The system provides basic functions for creating cho- reographic productions that can be viewed, listened to with music and distributed to a team of dancers. The precedent diagram is shown in Fig.5. The diagram shows the main functions of the system, including displaying a list of choreographs, creating and editing choreographs, manipulation of dancers on stage. Three types of users are also visible: a choreographer who has access to all the basic functions of the system; a premium user who will have paid premium functionality, including music sync support; a dancer who will have the right to review and comment on their produc- tions. <> Display a list of choreographs Change the name of the dancer model < > < > A choreographer Create a choreography < > View the production < > Add a dancer to the stage < > < > < > Add music Perform scene configuration A dancer A premium user Change the location of the dancer < > Set the duration of the sound Extend choreography Create external link Fig.5. Use case diagram choreographer system database Create a choreography() Search for a scene template () Search for a template () List of templates () Sorted list of choreography templates () Perform scene configuration () Scene Configuration Add a dancer to the stage () Adding a dancer Search for dancers () Search for dancers () Recorded dancers () Display the names of the dancers () Change the location of the dancer () Add music () Set the duration of the sound () Scene Generation () Record a scene () Record () Report a scene recording () Display the scene () Fig.6 Sequence diagram Building a Sequence Diagram. The sequence diagram is used to describe interactions between different elements of the model. This chart shows the interaction of time- ordered objects. The diagram depicts the premium user, the system (the application itself) and the database. Formulation and justification of the problem. The purpose of the master's qualifica- tion work is to design and build an intelligent system that will enable to create and visualize choreographic productions. The main task is to provide the user with a set of features that will allow him to save the layout of the drawings in his choreographic setting as efficiently and quickly as possible. The system will also generate placement offers based on an analysis of the data collected. The offer system should increase the user's performance several times over its counterparts. The system will also allow the user to work with the music track and synchronize it with the pictures in the produc- tion. The main functions of the system are: 1. Working with a list of choreographies: adding new choreography; deletion of existing choreography; editing the name of the choreography; dissemination of choreography; quick preview of choreography drawings; filtering the list by name and date of last edit. 2. Work with the list of blanks: adding a new workpiece; removal of existing work- piece; filtering workpieces by the number of dancers in it. 3. Logging the user into the system: login with email and password; logging in us- ing social networks Facebook or Instagram. 4. Editing a single choreography image (working with a stage): scene zooming and zooming; adding a new dancer to the scene grid; movement of the dancer within the stage; removal of the dancer from the production; taking the dancer outside the stage; display of dancers' names; operations on a group of dancers (move- ment, color change, deletion); cancel the last user action; add comments to the picture; creating a workpiece from selected dancers. 5. Creating a transition between images: creation of new positions of dancers; gen- eration of optimal positions for dancers; suggesting the transformation of the cur- rent image into the next; create several variants of the following figure; set the transition interval relative to the music track. 6. Revision of the whole production: animated movements of dancers from previous positions to current ones; displays the current second of the music track. 7. Editing production options: resizing the scene; change the visual presentation of the scene; permutation of drawings in places. 8. Working with the dancers in the production: change of dancer's name; change the color of the dancer; display a list of dancers from previously created performanc- es; tracking the movement of the selected dancer. 9. Working with music: choosing a music track; editing the interval for a particular image; choosing the best moments to change the drawings in the production. Also, the non-basic functionality of the system may include localization in Ukrainian and English and stylization of the system. The proposed system provides efficient visualization of choreographic productions, which is guaranteed by the convenient placement of functions in the user interface and the workpiece function, which gener- ates potential arrangements of dancers. None of the existing systems offer auto placement generation features, making the projected system a favorite among others. Moreover, the system offers synchronization with music, which is also a very popular user experience. Expected effects of system implementation: labor productivity - the system offers its layout options, which in most cases will accelerate the work of the choreographer and reduce the time spent on rendering productions. Also, the convenience and security of the system will provide the user with a pleasant user experience. The history of past choreo- graphs can inspire the user for the following works; organizational effect - the choreographer can easily extend the created pro- duction with his team, which will allow all participants of the room to review their positions and be ready for rehearsal. It will also save time for the cho- reographer to find the optimal placement of the dancers on stage without even trying it out in practice. It will also allow dancers absent from rehearsal to be aware of events; economic effect - purchasing a premium account in the system to use addi- tional features will be able to profit from purchases. 5 Choosing and Justifying the Methods for Solving the Problem As a result of the analysis of the problem of visualization of choreographic produc- tions in the previous sections, the relevance of the problem was proved, the existing systems for the solution of the problem were considered and the requirements of the intelligent system were formed, which will be the most effective for the user in com- parison with other solutions. The user needs a system that can quickly and conven- iently visualize his or her choreography. The best solution for this would be the mo- bile application, as it has already been discussed in the previous sections, it is a tool that is common to most users. To implement some of the functionality, you need a certain shared data repository that will process and store a large amount of data. This will introduce a server to collect data from devices and write them to a database. As the amount of data is expected to be large, it is decided to make the database distrib- uted. The mobile application will contact the REST server, which is the most common solution among all. Specificity of the application requires that at every stage of devel- opment, the already working version of the system has been thoroughly considered by the end user. This is because the system requires maximum ease of use. Accordingly, each decision can affect the final convenience and impression of the user. To imple- ment this method of solving the problem, it was decided to split the development of the system into several iterations, each of which will repeat certain processes. Before starting the first iteration, all system requirements will be collected and a specification created as specified in the second section. And in the process of iteration, the follow- ing processes will be implemented: formulation of requirements for the current ver- sion of the application; design creation; technical implementation of the system in accordance with established requirements and design; testing of a product with the involvement of real users who will potentially use it in the future. After the iteration, the shortcomings will be analyzed, the new functionalities will be selected and a new iteration will be started. This will maximize the efficiency of system development. Also, at a stage when the system will have approximately similar functionality to analog products, it will be possible to boldly publish an application to the app store, as competitors' shortcomings will be taken into account and improved. This, even with- out additional functionality, will already attract the user. Need for method of recommendations and suggestions. The system should include the functions of recommending and suggesting the arrangements of the dancers. Basi- cally, a user can use blanks to generate ideas and quickly change layouts. The system will provide a large list of basic blanks, however, these blanks will not be contextual in certain choreographies, as each time the user can create something unique and not every time they come up with standard templates. That is why it is suggested to find a method that will generate its proposals based on the data that will be collected by all users of the system. It is also suggested to take into account the dynamics of the music and the wishes of the user. Thus, the user only needs to select a music track, specify the number of dancers in the production. With this input, the system will be able to generate the entire production, only confirming its decisions with the consent of the user. This approach to the production of productions is tremendously ahead of the systems that solve the problem of rendering productions, since none of them has yet implemented such an approach. Several methods of recommendation systems were considered: content-based, co-filtered, and hybrid, followed by cold start, scalability, interpretation, and exploitation/exploration. Content-based method. At Pandora, the music distribution company, the musicians have labeled each song with over 400 attributes. Then, when the user was selecting a music station, songs that matched the station's attributes were added to his playlist. This is a content recommendation. Users or elements have profiles that describe their characteristics, and the system recommends the element to the user if the two profiles overlap. Stitch Fix Fashion Box is another example of a content recommendation. User attributes are collected (height, weight, etc.), and the corresponding fashion items are placed in a window presented to the user. Pandora requires manual effort / expense to create musical attributes, but there are many cases without such need. Stitch Fix clients provide their own benefits, LinkedIn users provide their own work experience and skills, Amazon sellers provide information about their products, all of whom are free to use content-based recommendations. A direct way of matching users and elements is to match keywords. For example, for job recommendations, you can agree on a job description with a summary of job seekers. Document Reverse Fre- quency is often used to give more weight to keywords unique to an element or user. A more systematic way is to build an observational model that evaluates the propensity of a user to like an invisible object. In a feature model, it is the attributes of users and elements (for example, a variable, whether a job and a job seeker in one industry), and a response variable - whether a user likes the item (for example, whether a job seeker would apply for a job). Content-based methods are computationally fast and interpret- able. They can be easily adapted to new items or new users. However, some charac- teristics of elements / users may not be easy to accurately display or describe. Stitch Fix solved this by allowing machine learning to process structured data and human unstructured data (e.g., users' Pinterest pay). Co-filtration method. Shared filtration systems provide recommendations based on historical users' preferences for items (click, view, purchase, like, rating, etc.). The advantage can be represented as a matrix of user elements (Fig. 7). Here is an exam- ple of a matrix describing the preference of 4 users over 5 items, where p_ {12} is the preference of user 1 over item 2. Fig. 7. User Elements Matrix Although the entries can be numeric, such as the task of predicting a Netflix movie rating (rating is 1 to 5), in most applications they are binary (eg, click, watch, pur- chase). In fact, the user element matrix can be more than millions * million (e.g. Am- azon, Youtube), and most records are missing - the purpose of the recommendation systems is to fill in those missing entries (Fig. 8). Fig. 8. The matrix of user elements of huge companies There are three approaches to shared filtering: a closest neighbor and two methods for creating a new latent space: matrix factorization and deep learning. Nearest neighbor. Neighbor-based methods are based on similarities between pairs of elements or users. The sloping similarity is often used to measure distance. The preference matrix can be represented as element vectors: The similarity between I1 and I2 is calculated as cos (I1, I2). The matrix can also be represented as user vectors. The similarity between U1 and U2 is calculated as cos (U1, U2). Missing values in the preference matrix are usually filled with zeros. Subject-to-subject approaches are usually adapted in practice by Amazon (Amazon | 2013), Youtube (Youtube | 2012), Linkedin (Linkedin | 2018) and others. This approach can quickly process similar elements (similar elements for each element are pre-calculated and stored in the key data store). In addition, item recommendations may be more interpretable than user- to-user recommendations, for example, systems may explain why an item is recom- mended because "you liked X". There may be cases where the number of similar items is too small (after applying a threshold for similarity points). It would be possi- ble to expand the list of similar items to include similar items (Youtube | 2012). Hav- ing obtained the most similar elements, it may be a useful step after processing. (Youtube | 2012) categorized similar items by video quality (e.g., measured by rat- ing), diversity (e.g., by restricting one channel's recommendations), and user-specific (e.g., video-like video viewed more by a user, should be rated higher for the user). The three elements were combined with the linear model, providing the final rating. Deep learning. Hidden Factor methods create a new, and usually smaller, space for the original vector of a user or object, resulting in noise reduction and faster real-time calculations. Deep learning is very flexible, including various factors in modeling and embedding. For example, deep learning was used to model sequential information using a bandwidth model originally used to calculate word similarity. (Airbnb | 2018, Zillow | 2018). Let's say the sequence of user elements is item1 -> item2 -> item 3 -> item4 ->… The intuition is to use each element in a sequence to predict adjacent ele- ments, formulated as a classification problem, where each element is a single class. The training data includes the adjacent K elements of each element (left K and right K elements). The following figure (Fig. 9) illustrates pairs of objects with K = 1. Fig. 9. The sequence of user elements In addition, each element is represented as a hot vector having a length equal to the number of elements. The neural network takes the vector hot vector as input and out- puts a vector of one of its similar elements, illustrated in the following figure, using (Item2, Item1) as a training example. A hidden layer is a new function space (or hid- den space), and each element can be moved to a new function space by using the scales between the input layer and the hidden layer (essentially a linear combination of the original features). This diagram is shown in Fig. 10. Fig.10. Scheme of the hidden layer In fact, there can be millions of subjects, and billions of examples are used to train the network. A negative sampling idea can be used to simplify the calculation. The idea is to update only the weight of the original item (Item 1) and a small number of other items randomly selected. Next, we highlight the items and scales we need to update. This makes the calculation much faster (Fig. 11). Fig. 11. Negative sampling idea After each element is presented in a new function space, the similarity between the elements can be calculated and recommendations can be made based on similarity estimates. In some cases, users visit the funnel before converting, for example, an Amazon user makes a purchase after a pageview. An Airbnb user reserves a list after viewing several lists. This information can be included by adding the product pur- chased to each product training pair (Airbnb | 2018) shown in the figure below. Ele- ments recommended in this way can improve your conversion rates. Cold start. Precise recommendations cannot be given to new users / items that have little or no information. This is called a cold start problem. This is a common problem for common filtering systems that rely on interaction be- tween user elements. Some heuristics can be used. For the new user, you can recommend the most popular items in the user area. Some similarity criteria may be defined for a new element based on rules. For example, Airbnb used an average of 3 geographically closest lists of the same type and price range to navigate the new list (Airbnb | 2018). Scalability. Scalability is a key factor in determining what type of recom- mendation systems to use. More sophisticated systems need more people, potentially harder to hire, build / maintain, with greater equipment costs. This can be a long-term commitment, and therefore a business must under- stand the increase in business profits compared to the increase in costs. With that in mind, here are some of the basic elements of building scalable sys- tems. 6 Choosing and Justifying the Means of Solving the Problem There are currently two of the most common mobile app development platforms - iOS and Android. The advantages and disadvantages of both platforms were analyzed. As a result, the following categories were selected for comparison and the results of the study were obtained: Quality of applications. Apps almost always look more attractive and con- venient on iPhone and iPad. Statistically, apps for the iOS platform will have more fans than those for the Android platform; Quick update. IPhone and iPad users don't have to wait for manufacturers to prepare updates after the new iOS release. Most users still haven't received Android 5.0, which Google announced last year. IOS updates are released regularly and are instantly available for all compatible devices; Lasting support for old devices. Apple mobile phone support is 48 months, which is not the case with Android smartphones; The best programs are available first. Most developers choose to first re- lease the app on their iPhone and iPad and only after a while launch it on Android. This is due to the well-developed development tools for iOS; Apple's ecosystem. Today, when choosing a smartphone or tablet, the main thing is not different specifications such as battery capacity, camera resolu- tions, etc. They are more or less similar on all modern devices. The main thing for the user is the mobile ecosystem. And on iOS it is much more de- veloped. In recent promotional material, Apple introduced its ecosystem as four key products - Apple Watch, MacBook, iPhone 6 and iPad Air 2. Apple TV and AirPort routers can still be added here. Friendly interface. The iPhone has become popular among successful people because it is convenient. People whose time is expensive make that choice because the iPhone saves time, hassle and focuses on what they want to do: connect with the right people, write messages, use social networks, and do it all seamlessly. Both the handsets and the iPhone software look great. Gadg- ets look appropriate in the hand of an entrepreneur, a student; Reliability. The iPhone is far more reliable as the manufacturer hones the nu- ances of producing one model and one operating system over the years, each upgrade making it more reliable, simpler, more powerful, and more produc- tive. Scale sales of hundreds of millions of devices have allowed Apple to hone production technology and software to the smallest. Considering the above mentioned advantages of iOS platform and statistics of using plat- forms among choreographers, the iOS platform was unambiguously chosen. To develop mobile applications for the iOS platform, there are two most popular de- velopment environments: xCode (developed by Apple) and AppCode (developed by JetBrains). Both options were analyzed and the main reasons for the advantages of each were identified: Interdependence factor. For the full functioning of the AppCode environ- ment, some xCode tools are required. xCode contains all the tools you need to complete the development cycle for iOS mobile devices. Storyboard. The xCode integrated user interface tool is very user-friendly and allows you to quickly and without code create responsive application in- terfaces. AppCode does not support such tools and needs full code develop- ment. Code refactoring and syntax highlighting. AppCode provides the user with more tools to rewrite and improve code than xCode. However, the latest ver- sion of xCode has added a lot of enhancements to these tasks. Price. Xcode, unlike Appcode, is free. AppCode requires a monthly pay- ment. Stability. The chances of unexpected technical problems during development in Xcode are minimal, which cannot be guaranteed in the case of AppCode. User interface and settings. The xCode design is very efficient, simple and allows the developer to accomplish their tasks quickly. 7 Choosing a Programming Language to Design The following most common programming tools and languages are available for de- veloping iOS applications: Swift or Objective-C. The following advantages of Swift over Objective-C can be distinguished: Swift is easier to read, easier to maintain, more secure, requires less code, faster [8]. Instead, Objective-C has some powerful Run-Time tools that have not yet been implemented in Swift. Also, many popular libraries that were written on Objective-C have not yet been copied to Swift, and without the knowledge of this language can not do in certain situations. Considering all the benefits of modern and progressive Swift, she was chosen to write this work. Database selection. The Realm mobile database was chosen to develop the application because it has such advantages as: quick familiarization, simple structure when adding to a project, simple flowchart, clear syntax, high speed and support for many platforms [9]. Apple's Core Data tool was con- sidered as an alternative. Choosing other means. Cocoapods was selected to connect third-party librar- ies to the project. Fabric is a convenient tool for distributing iOS applica- tions. Branch IO is a service for creating and generating deep links. 8 Creating an Application Architecture Swift programming language, which is standard and native for development on iOS mobile platform, was used to develop the mobile application. The advantages of using it over other options were described in the previous section. Swift supports many programming paradigms, including imperative and declarative approaches. An imper- ative approach was chosen to implement the system because it is more reliable and easier to use. MVC (Model-view-controller), which is standard and recommended by Apple, was chosen as the main architectural template. However, its standard implementation does not sufficiently separate the responsibility of the objects, which contributes to the emergence of classes responsible for many unrelated things. Because of this, the standard architecture structure was modified and adapted to the needs of the project. As a standard, this architectural approach contains 3 types of objects that divide all classes in the system into 3 groups: View is classes that are responsible for the user interface of the application. These classes contain information about placing graphic elements on the screen. Their main function is to display the data they receive in pro- grammed and placed relative to each other. The view is also responsible for responding and transmitting user actions to the controller that processes them and performs the necessary actions. Model is classes that represent the business logic of the application. Here are all the model classes that represent the subject area of the program. Also, here is the logic of all modifications to objects in the system. Model classes are responsible for storing data on the system. Controller is classes, which is the interface between model and type. It han- dles all events and directs it where it is needed. These classes synchronize all input and output in the system. Often, these objects contain too much logic that other auxiliary objects can execute. Communication between the view and the model using the controller can be repre- sented in Fig. 12. Fig. 12. Communication in the MVC template The model notifies the controller of changes in its data, and the controller in response updates the data as. The view can then notify the controller of the actions taken by the user, either updating the model as needed, or retrieving data that the user needs. All this separation is done to delineate the code and to reuse it. Ideally, the look should be completely isolated from the model. If it does not depend on the particular model implementation, it can be easily reused with another model to represent com- pletely different data. MVC on iOS. For starters, it is worth making sure that each class in the project is either a controller, a view, or a model. It is not necessary to combine the responsibili- ties of two different roles in one class. Next, you need to create three project groups to group the code, each for the appropriate category. One of the benefits of an MVC template is the ability to design the project independently, and then easily combine them. The diploma project will be divided into several components: lists that will be responsible for displaying and filtering choreographs; a scene that will contain all the logic of displaying dancers, their transitions and manipulations; audio is a separate component to separate all work with audio files. 9 Creating an Application Database As a result of the work carried out and described in the previous section, a mobile Realm database was selected. This is a non-relational database that allows you to easily handle objects stored on disk as with normal objects in the program. Given the specifics of the software being developed, the database structure will not be compli- cated and will not contain a large number of links. To meet the needs of the user only combinations of basic properties will be enough to save the choreographic drawings that the user will create. The main entities will be choreography, template, dancer, drawing, stage configuration, position and background. Choreography is stores information about the production, all the drawings it con- sists of, their order and transitions between them, the dancers, the music track and the scene refinement. Contains the following fields: Title - the name of the setting; date of creation; Date the last changes were made; Scene configuration; Id - a unique identifier for distinguishing choreography during distribution; Dancers - a list of all dancers participating in the production; Drawings - a list of all created drawings. Template is saves information about one particular drawing without being tied to specific dancers or music. Contains the following fields: is the name of the template; Positions - a list of positions that form a picture. Dancer is stores information about the dancer in the production. Contains the follow- ing fields: name - identifies the dancer; may be empty, if this is not significant for the choreographer; Color - the color to represent the dancer on stage. Scene configuration is stores scene size information. Contains the following fields: Scene width (number of vertical lines); Scene length (number of horizontal lines); The size of the field on the sides of the stage; Check box to show or hide off-stage space. All these dimensions are set in relative units, which will be displayed as one square of the scene. The stage itself is essentially a set of lines that form a rectangle and allow the dancers to be placed at the intersection of these lines. Picture is- stores information about the arrangement of dancers on stage. Contains the following fields: positions - a list of all the positions where the dancers are placed; The duration of the transition to the next image is given in seconds; The name of the part of the production to which the picture relates. Position is stores information about the placement of a particular dance on the stage. x and y - relative placement coordinates. Musical accompaniment is stores the information needed to synchronize your images with music. Contains the following fields: a list of time frames indicating the time of a particular drawing; - The path in which the audio file will be stored. All of the above entities will be represented as the descendants of the base class Ob- ject, which is basic when working with Realm and provides a link between the objects in the program and the stored data on the disk. Object allows you to define primary keys, indexed properties, ignored properties. At the same time, all of these classes form the database structure - each class is a separate table with a corresponding name and fields. The schematic of the database is presented in Fig. 13. Fig. 13. Database schema 10 Implementation of the Main Classes of the System Each model class described in the design section is a descendant of the base class of the Realm - Object database. Object allows you to handle data stored on disk as sim- ple objects. A common RealmService class manager has been created to unify all database objects. This is the wrapper by which the database is accessed. If you need to move to another database, you will simply need to override the logic of all methods in this class. Template methods allow you to apply basic operations to any types that are descendants of Object. These methods include the following: add() - create / update row / rows in table; update() - updating table row specific properties; Delete() - delete row; removeAll() - deleting table; write() - record any changes to the table by changing the properties of the ob- jects. Another responsibility of this class is the initial configuration of the database and the migration between different versions of the database schema. 11 Working with Choreographies The specificity of the Realm database is such that it is enough to get objects of a cer- tain type only once, which will be stored in the Results structure