WO2024215057A1 - 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치 - Google Patents
콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치 Download PDFInfo
- Publication number
- WO2024215057A1 WO2024215057A1 PCT/KR2024/004729 KR2024004729W WO2024215057A1 WO 2024215057 A1 WO2024215057 A1 WO 2024215057A1 KR 2024004729 W KR2024004729 W KR 2024004729W WO 2024215057 A1 WO2024215057 A1 WO 2024215057A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- content
- vector
- language model
- search
- token
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 135
- 239000013598 vector Substances 0.000 claims abstract description 319
- 238000012549 training Methods 0.000 claims description 52
- 238000004891 communication Methods 0.000 claims description 23
- 230000000873 masking effect Effects 0.000 claims description 22
- 230000001419 dependent effect Effects 0.000 claims description 14
- 239000002131 composite material Substances 0.000 claims description 4
- 238000011017 operating method Methods 0.000 abstract 1
- 238000007781 pre-processing Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 17
- 238000013145 classification model Methods 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 11
- 230000014509 gene expression Effects 0.000 description 9
- 238000011176 pooling Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 238000013528 artificial neural network Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000001914 filtration Methods 0.000 description 6
- 238000003058 natural language processing Methods 0.000 description 6
- 230000008451 emotion Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000000877 morphologic effect Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 241000278713 Theora Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000002567 electromyography Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/70—Information retrieval; Database structures therefor; File system structures therefor of video data
- G06F16/73—Querying
- G06F16/732—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/70—Information retrieval; Database structures therefor; File system structures therefor of video data
- G06F16/73—Querying
- G06F16/738—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/70—Information retrieval; Database structures therefor; File system structures therefor of video data
- G06F16/78—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/783—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/284—Lexical analysis, e.g. tokenisation or collocates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
- G06N3/0455—Auto-encoder networks; Encoder-decoder networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Definitions
- the present disclosure relates to a content streaming system, and more particularly, to a method and device for searching content in a content streaming system.
- the OTT service is a media platform based on the Internet and mobile communication, and provides various contents to consumers without the need for separate equipment such as set-top boxes, beyond the existing broadcasting service.
- the concept of the OTT service started by providing movies, television programs, etc. in the form of VOD (video on demand), but it is still expanding, as it currently provides contents produced by OTT service providers and expands its scope to mobile platforms.
- the present disclosure may provide a method and device for effectively searching content in a content streaming system.
- the present disclosure can provide a method and device for searching content based on the similarity between a search word and content in a content streaming system.
- the present disclosure can provide a method and device for determining the similarity between a search word and content using a language model in a content streaming system.
- the present disclosure can provide a method and device for determining a vector of a search word using a language model learned based on metadata of content.
- the present disclosure can provide a method and device for determining a vector of a search word using a language model learned based on a hashtag of content.
- the present disclosure can provide a method and device for determining a vector of a search word using a language model learned based on the genre of the content.
- the present disclosure can provide a method and device for determining a vector of a search word using a language model learned based on a synopsis of content.
- the present disclosure may provide a method and device for determining a vector of a search term using a language model learned based on hashtags and synopsis of content.
- the present disclosure can provide a method and device for determining a vector of content using a language model learned based on metadata of the content.
- the present disclosure may provide a method and device for generating and providing a content search list based on the similarity between a vector of a search word and a vector of content.
- a method of operating a server in a content streaming system may include a step of obtaining a search term, a step of determining a first vector corresponding to the search term using a language model learned based on synopsis information included in metadata of content items, a step of determining a similarity between the search term and the first content item based on the first vector corresponding to the search term and a second vector of the first content item, and a step of providing a content search list including information on at least one content item including the first content item selected based on the similarity.
- the second vector of the first content item can be obtained through a language model learned based on the synopsis information.
- the second vector of the first content item can be obtained by inputting sequence text data including information included in the first metadata of the first content item into a language model learned based on the synopsis information.
- the language model can be learned through training to predict synopsis information of the content items based on a masked language model (MLM).
- MLM masked language model
- the language model may be first learned through training to predict synopsis information of the content items based on the MLM, and second learned through training to predict hashtag information of the content items based on the MLM.
- the language model may be first learned through training to predict hashtag information of the content items based on the MLM, and second learned through training to predict synopsis information of the content items based on the MLM.
- the step of determining a first vector corresponding to the search term may include the step of dividing the search term into token units, the step of inserting at least one delimiter into the search term divided into token units to obtain a converted search term, and the step of inputting the converted search term into the language model to obtain the first vector.
- the converted search term may include at least one of a separator token or a special token.
- the method further includes a step of converting text metadata describing the contents of the content items into sequence-type text data, a step of masking (making) a synopsis token located in a synopsis area of the sequence-type text data, and a step of training the language model to predict the masked synopsis token, wherein the text metadata may include at least one of a title, a synopsis, a composite genre, a director, an actor, or a hashtag information.
- the step of converting the text metadata into the sequence-type text data includes the step of dividing the text metadata into a plurality of tokens, and the step of generating the sequence-type text data by inserting at least one delimiter between the tokens, wherein the at least one delimiter may include at least one of a separating token for distinguishing different types of features and a special token inserted before and after a specific feature to indicate the specific feature.
- the step of masking the synopsis token includes the step of selecting an independent token from among a plurality of synopsis tokens located in the synopsis area, and the step of masking the selected independent token, wherein the independent token may be a token that does not start with a designated symbol.
- the training is performed using a prediction model
- the prediction model may include a language model that takes as input sequence-type text data including masked synopsis tokens and outputs vector values corresponding to the sequence-type text data, and a masked language model (MLM) head layer configured to predict at least one input token corresponding to at least one vector value output from the language model.
- MLM masked language model
- each of the first vector and the second vector can be determined by weighting a vector value corresponding to a position of a designated feature among output vector values of a last hidden layer of the learned language model.
- the method further includes a step of determining a similarity between the search term and the plurality of content items based on a first vector corresponding to the search term and a vector of each of the plurality of content items, and the step of providing the content list may include a step of selecting two or more content items including the first content item in a descending order of similarity with the search term among the first content item and the plurality of content items, and a step of providing the content list including information of the two or more selected content items.
- the method prior to determining a first vector corresponding to the search term, the method further includes a step of performing a text search based on the search term, and if a result obtained through the text search does not satisfy a specified condition, a step of determining a first vector corresponding to the search term can be performed.
- the specified condition may be a condition on at least one of whether at least one content item is searched, or the number of content items searched.
- a content streaming system includes a server, a communication unit for transmitting and receiving signals with at least one client device, and a processor electrically connected to the communication unit, wherein the processor obtains a search term, determines a first vector corresponding to the search term using a language model learned based on synopsis information included in metadata of content items, determines a similarity between the search term and the first content item based on the first vector corresponding to the search term and a second vector of the first content item, and provides a content search list including information on at least one content item including the first content item selected based on the similarity.
- a program stored in a recording medium according to an example of the present disclosure can execute any one of the above-described methods when operated by a processor.
- contents similar to a search term can be searched.
- FIG. 1 illustrates a content streaming system according to one embodiment of the present disclosure.
- FIG. 2 illustrates the structure of a client device according to one embodiment of the present disclosure.
- FIG. 3 illustrates the structure of a server according to one embodiment of the present disclosure.
- FIG. 4 illustrates the concept of a content streaming service according to one embodiment of the present disclosure.
- Figure 5 shows an example of the relative relationship between vectors.
- FIG. 6 illustrates an example of the structure of a server for searching content according to one embodiment of the present disclosure.
- FIGS. 7A and 7B illustrate examples of the structure of a model learning unit according to one embodiment of the present disclosure.
- FIG. 8 illustrates an example of converting text metadata of content into sequence-type text data according to one embodiment of the present disclosure.
- Figures 9a and 9b illustrate examples of learning a language model according to one embodiment of the present disclosure.
- FIG. 9c illustrates an example of the structure of a prediction model according to one embodiment of the present disclosure.
- FIG. 10a illustrates an example of learning a language model according to one embodiment of the present disclosure.
- FIG. 10b illustrates an example of an input/output structure of a prediction model according to one embodiment of the present disclosure.
- Figure 10c illustrates the concept of a multi-class prediction model and a multi-label prediction model applicable to the present disclosure.
- FIG. 11 illustrates an example of calculating the similarity between a search term and content using a learned language model according to one embodiment of the present disclosure.
- FIG. 12 illustrates an example of a procedure for searching content using a learned language model according to one embodiment of the present disclosure.
- FIG. 13a illustrates an example of a procedure for performing learning on a language model according to one embodiment of the present disclosure.
- FIG. 13b illustrates an example of learning a language model using hashtag prediction according to one embodiment of the present disclosure.
- FIG. 14a illustrates an example of a procedure for performing learning on a language model according to one embodiment of the present disclosure.
- FIG. 14b illustrates an example of learning a language model using genre prediction according to one embodiment of the present disclosure.
- FIG. 15a illustrates an example of a procedure for performing learning on a language model according to one embodiment of the present disclosure.
- FIG. 15b illustrates an example of a procedure for performing learning on a language model according to one embodiment of the present disclosure.
- FIG. 15c illustrates an example of learning a language model using hashtags and synopses according to one embodiment of the present disclosure.
- FIG. 17 illustrates a specific example of a procedure for searching content using a learned language model according to one embodiment of the present disclosure.
- FIG. 18 illustrates an example of a search scenario according to one embodiment of the present disclosure.
- FIG. 19 illustrates an example of performing a search based on a Python module according to one embodiment of the present disclosure.
- FIG. 20 illustrates an example of performing a search based on an elastic search engine according to one embodiment of the present disclosure.
- FIG. 21a illustrates an example of the structure of a transformer applicable to an embodiment of the present disclosure.
- FIG. 21b illustrates an example of a detailed structure of encoder and decoder blocks of a transformer applicable to an embodiment of the present disclosure.
- Figure 22 illustrates an example of the structure of a BERT model applicable to an embodiment of the present disclosure.
- the content streaming system may include a client device (110) and a server (120).
- the client device (110) is exemplified as a set of three client devices (110-1 to 110-3), but the content streaming system may include two or fewer or four or more client devices.
- the server (120) is exemplified as one, but the content streaming system may include a plurality of servers that share various functions and interact with each other.
- the client device (110) receives and displays content.
- the client device (110) can receive content streamed from the server (120) after connecting to the server (120) through a network. That is, the client device (110) is hardware on which client software or an application designed to use the content service provided by the server (120) is installed, and can interact with the server (120) through the installed software or application.
- the client device (110) can be implemented as various types of devices.
- the client device (110) can be one of a movable portable device, a device that is movable but generally fixed during use, and a device that is fixedly installed in a specific location.
- the client device (110) may be implemented in the form of at least one of a smart phone (110-1), a desktop computer (110-2), a tablet PC, a laptop PC, a netbook computer, a workstation, a server, a personal data assistant (PDA), a portable multimedia player (PMP), a camera, or a wearable device.
- the wearable device may be implemented in the form of at least one of an accessory type (e.g., a watch, a ring, a bracelet, an anklet, a necklace, glasses, a contact lens, an HMD (head-mounted-device)), a clothing type, a body-attached type (e.g., a skin pad or tattoo), and a bio-implantable circuit.
- an accessory type e.g., a watch, a ring, a bracelet, an anklet, a necklace, glasses, a contact lens, an HMD (head-mounted-device)
- a clothing type e.g., a skin pad
- the client device (110) may be implemented as a home appliance, for example, in the form of at least one of a television (110-3), a digital video disk (DVD) player, an audio, a refrigerator, an air conditioner, a vacuum cleaner, an oven, a microwave oven, a washing machine, and an air purifier.
- a television 110-3
- DVD digital video disk
- an audio a refrigerator
- an air conditioner a vacuum cleaner
- an oven a microwave oven
- washing machine a washing machine
- an air purifier for example, in the form of at least one of a television (110-3), a digital video disk (DVD) player, an audio, a refrigerator, an air conditioner, a vacuum cleaner, an oven, a microwave oven, a washing machine, and an air purifier.
- the server (120) performs various functions for providing content services.
- the server (120) can provide content streaming and various content-related services to the client device (110) by using various functions.
- the server (120) can data-process the content so that it can be streamed and transmit it to the client device (110) through a network.
- the server (120) can perform at least one function among encoding the content, segmentation of the data, transmission scheduling, and streaming transmission.
- the server (120) can further perform at least one function among providing a content guide, managing a user's account, analyzing the user's preference, and recommending content based on the preference.
- a plurality of functions among the various functions described above can be provided, and for this purpose, the server (120) can be implemented as a plurality of servers.
- a client device (110) and a server (120) exchange information through a network, and a content service can be provided to the client device (110) based on the exchanged information.
- the network can be a single network or a combination of various types of networks.
- the network can be understood as a form in which different types of networks are connected depending on the section.
- the networks can include at least one of a wireless network and a wired network.
- the networks can include a cellular network based on at least one of 6G (6th generation), 5G (5th generation), LTE (Long Term Evolution), LTE-A (LTE Advance), CDMA (code division multiple access), WCDMA (wideband CDMA), UMTS (universal mobile telecommunications system), WiMAX (Wireless Broadband), or GSM (Global System for Mobile Communications).
- the networks may include short-range networks based on at least one of wireless local area network (WLAN), Bluetooth, Zigbee, near field communication (NFC), and ultra wideband (UWB).
- the networks may include wired networks such as the Internet and Ethernet.
- FIG. 2 illustrates the structure of a client device according to one embodiment of the present disclosure.
- FIG. 2 illustrates a block structure of a client device (e.g., client device (110) of FIG. 1).
- the client device includes a display (202), an input unit (204), a communication unit (206), a sensing unit (208), an audio input/output unit (210), a camera module (212), a memory (214), a power supply unit (216), an external connection terminal (218), and a processor (220).
- a display 202
- an input unit 204
- a communication unit 206
- a sensing unit 208
- 210 a camera module
- 212 a memory
- a power supply unit 216
- an external connection terminal 218
- a processor 220
- the display (202) outputs information such as visually recognizable images, graphics, etc.
- the display (202) may include a panel and a circuit that controls the panel.
- the panel may include at least one of an LCD (liquid crystal display), an LED (Light Emitting Diode), an LPD (light emitting polymer display), an OLED (Organic Light Emitting Diode), an AMOLED (Active Matrix Organic Light Emitting Diode), and an FLED (Flexible LED).
- the input unit (204) receives an input generated by a user.
- the input unit (204) may include various types of input detection means.
- the input unit (204) may include at least one of a physical button, a keypad, and a touch pad.
- the input unit (204) may include a touch panel.
- the input unit (204) and the display (202) may be implemented as a single module.
- the communication unit (206) provides an interface for the client device to form a network with other devices and to transmit or receive data through the network.
- the communication unit (206) may include circuits for physically processing signals (e.g., encoder/decoder, modulator/demodulator, RF (radio frequency) front end, etc.), a protocol stack for processing data according to a communication standard (e.g., modem), etc.
- a communication standard e.g., modem
- the communication unit (206) may include a plurality of modules to support a plurality of different communication standards.
- the sensing unit (208) collects sensing data including data about the status of the client device or the surrounding environment. For example, the sensing unit (208) may measure a physical value or a change in the value related to the operating status or posture of the client device, and generate an electrical signal representing the measured result. In addition, the sensing unit (208) may measure a physical value or a change in the value of the surrounding environment of the client device, and generate an electrical signal representing the measured result. To this end, the sensing unit (208) may include at least one sensor and a circuit for controlling at least one sensor.
- the sensing unit (208) may include at least one of a gyro sensor, a magnetic sensor, an acceleration sensor, a grip sensor, a proximity sensor, a color sensor, a biometric sensor, a pressure sensor, a temperature sensor, a humidity sensor, an illuminance sensor, an ultra violet (UV) sensor, an e-nose sensor, a gesture sensor, an electromyography (EMG) sensor, an electroencephalogram (EEG) sensor, an electrocardiogram (ECG) sensor, an infrared (IR) sensor, an iris sensor, and a fingerprint sensor.
- the audio input/output unit (210) outputs sound according to an electric signal generated based on audio data and detects external sound. That is, the audio input/output unit (210) can mutually convert sound and electric signals.
- the audio input/output unit (210) may include at least one of a speaker, a microphone, and a circuit for controlling them.
- the camera module (212) collects data for generating images and videos.
- the camera module (212) may include at least one of a lens, a lens driving circuit, an image sensor, a flash, and an image processing circuit.
- the camera module (212) may collect light through the lens and generate data expressing color values and brightness values of the light using the image sensor.
- Memory (214) stores operating systems, programs, applications, commands, setting information, etc. required for the client device to operate.
- Memory (214) can store data temporarily or non-temporarily.
- Memory (214) can be composed of volatile memory, non-volatile memory, or a combination of volatile memory and non-volatile memory.
- the power supply unit (216) supplies power required for the operation of components of the client device.
- the power supply unit (216) may include a converter circuit that converts power into power of a size required by each component.
- the power supply unit (216) may depend on an external power source or may include a battery. If the battery is included, the power supply unit (216) may further include a circuit for charging.
- the circuit for charging may support wired charging or wireless charging.
- the external connection terminal (218) is a physical connection means for connecting the client device to another device.
- the external connection terminal (218) may include at least one of various terminals of different standards, such as a USB (universal serial bus) terminal, an audio terminal, an HDMI (high definition multimedia interface) terminal, an RS-232 (recommended standard-232) terminal, an infrared terminal, an optical terminal, and a power terminal.
- the processor (220) controls the overall operation of the client device.
- the processor (220) can control the operation of other components and perform various functions using other components.
- the processor (220) can request content data from the server through the communication unit (206) and receive the content data.
- the processor (220) can restore the content by decoding the received content data.
- the processor (220) can output the content received from the server through the display (202) and the audio input/output unit (210).
- the processor (220) can control a state related to the playback of the content based on information input or detected by at least one of the input unit (204), the communication unit (206), the sensing unit (208), the audio input/output unit (210), the camera module (212), the power supply unit (216), and the external connection terminal (218).
- the processor (220) may include at least one of at least one processor, at least one microprocessor, and at least one digital signal processor (DSP).
- the processor (220) may control other components and perform necessary operations so that the client device operates according to various embodiments described below.
- the components are exemplified as being all connected to the processor (220). Although not shown in FIG. 2, at least some of the components may be connected via a bus. In this case, direct data exchange between some of the components may be performed under the control of the processor (220).
- FIG. 3 illustrates the structure of a server according to one embodiment of the present disclosure.
- FIG. 3 illustrates a block structure of a server (e.g., server (120) of FIG. 1).
- the communication unit (302) provides an interface for communication between the server and other devices.
- the communication unit (302) may include a circuit that generates and interprets a physical signal for communication.
- the interface provided by the communication unit (302) may support wired communication or wireless communication.
- the memory (304) stores various information, commands and/or information, and can load computer programs, commands, etc. stored in the storage (306).
- the memory (304) temporarily stores data and commands, etc. for server operations, and may include a RAM (random access memory). Alternatively, the memory (304) may include various storage media.
- Storage (306) may non-temporarily store an operating system for the operation of the server, a program for performing the function of the server, setting information for the operation of the server, etc.
- storage (306) may include at least one of non-volatile memory such as a read only memory (ROM), an erasable programmable ROM (EPROM), an electrically erasable programmable ROM (EEPROM), a flash memory, a hard disk, a removable disk, a solid state drive (SSD), or any form of computer-readable recording medium widely known in the art to which the present disclosure belongs.
- ROM read only memory
- EPROM erasable programmable ROM
- EEPROM electrically erasable programmable ROM
- flash memory a hard disk, a removable disk, a solid state drive (SSD), or any form of computer-readable recording medium widely known in the art to which the present disclosure belongs.
- the processor (308) controls the overall operation of the server.
- the processor (308) can control the operation of other components and perform various functions using other components.
- the processor (308) can include at least one of a central processing unit (CPU), a micro processor unit (MPU), a micro controller unit (MCU), or a processor of a type widely known in the technical field to which the present disclosure belongs.
- the processor (220) can control other components and perform necessary operations so that the server can operate according to various embodiments described below.
- control data and content data can be transmitted and received between a client (410) and a server (420). Specifically, control data can be transmitted from a client (410) to a server (420), control data can be transmitted from a server (420) to a client (410), and content data can be transmitted from a server (420) to a client (410).
- Control data from the client (410) to the server (420) may include information about user login, information about user content selection, information about user content control, etc.
- the client (410) may generate and transmit control data from user input through a user input processing operation (401).
- the control data from the client (410) is processed through a control/management operation (403) and used to provide content.
- control data and/or content may be selected based on the control data from the client (401) through the control/management operation (403).
- the user's consumption history and behavior may be analyzed through the control/management operation (403) to determine preference, and content to be recommended may be selected based on the determined preference.
- the procedure for providing content to a user is as follows with reference to FIG. 4.
- the client (410) generates control data including login information (e.g., ID and password) input by a user through a user input processing operation (401), and transmits the control data.
- the server (420) searches for the login information included in the control data from the client (410) in the user information (422a), thereby determining whether the user is a valid user, and determines the range of content and services allowed according to the user's authority. However, if a service that does not require login or can be provided without login is supported, the transmission and processing of login information may be omitted.
- the server (410) extracts content guide information from the content information (422b) through the control/management operation (403) and transmits control data including the content guide information to the client (410).
- the client (410) outputs the content guide information included in the control data and confirms the user's selection.
- the user's selection is transmitted to the server (410) as control data through the user input processing operation (401).
- Information about the user's selection is processed by the control/management operation (403) and used for selecting content to be streamed.
- the server (420) searches for the selected content in the content DB (422), performs compression and segmentation on the searched content through the encoding operation (407), and then transmits the content data.
- the content data may be compressed in advance and stored through the encoding operation (407).
- the encoding operation (407) may include not only an operation of compressing the original content image, but also an operation of decoding the content data generated through the compression and then compressing it again.
- compression can be performed based on the resolution, bit rate, and number of frames per second of the content image. If it is compressed and stored in advance, the compression operation is omitted, and the server (420) can perform segmentation on the content data.
- the content data can be restored through a decoding operation (409) and provided to the user through a playback operation (411).
- at least one of various video codecs and various audio codecs can be used.
- the various video codecs can include at least one of MPEG-2 (Moving Picture Experts Group-2), H.264 AVC (Advanced Video Coding), H.265 HEVC (High Efficiency Video Coding), H.266 VVC (Versatile Video Coding), VP8 (Video Processor 8), VP9 (Video Processor 9), AV1 (AOMedia Video 1), DivX, Xvid, VC-1, Theora, and Daala.
- MPEG-2 Moving Picture Experts Group-2
- H.264 AVC Advanced Video Coding
- H.265 HEVC High Efficiency Video Coding
- H.266 VVC Very Video Coding
- VP8 Video Processor 8
- VP9 Video Processor 9
- AV1 AOMedia Video 1
- Audio codecs can include MP3 (MPEG 1 Audio Layer 3), AC3 (Dolby Digital AC-3), E-AC3 (Enhanced AC-3), AAC (Advanced Audio Coding, MPEG 2 Audio), FLAC (Free Lossless Audio Codec), HE-AAC (High Efficiency Advanced Audio Coding), OGG Vorbis, and OPUS.
- MP3 MPEG 1 Audio Layer 3
- AC3 Dolby Digital AC-3
- E-AC3 Enhanced AC-3
- AAC Advanced Audio Coding
- MPEG 2 Audio MPEG 2 Audio
- FLAC Free Lossless Audio Codec
- HE-AAC High Efficiency Advanced Audio Coding
- OGG Vorbis OPUS.
- the content video can be compressed to pre-generate multiple content data.
- the client (410) can measure the throughput (or bandwidth) and determine the bit rate based on the measured throughput (or bandwidth).
- a client (410) can receive information about a plurality of content data from a server (410).
- the received information can include information indicating a bit rate, resolution, number of frames per second, and location for the plurality of content data.
- the client (410) can determine at least one content data among a plurality of content data based on a bit rate, and determine the playable content data and its location corresponding to the playable resolution and the number of frames per second among the at least one content data based on capability information of the client (410).
- the capability information can include, but is not limited to, the maximum supported resolution and the maximum supported frame number of the client.
- the client (410) can transmit a content request to the server (420) based on the location of the playback content data.
- the server (420) can transmit content data corresponding to the content request to the client (410) based on the received content request.
- the client (410) may receive user input regarding at least one of the resolution and frames per second of the video, determine playback content data and its location based on the user input, and transmit a content request to the server (420).
- the present disclosure relates to a technology for searching content using a language model learned based on text metadata (hereinafter, "text metadata") describing the content of the content itself in a content streaming system.
- text metadata describing the content of the content itself in a content streaming system.
- the present disclosure relates to a method and device for determining the similarity between a search term and content using a language model learned based on text metadata of the content, and generating a content search list based on the similarity between the search term and the content.
- the text metadata may include at least one of a title, a synopsis, a genre, a director, an actor, or a hashtag.
- the language model may be a content-based filtering (CBF) model that processes natural language.
- CBF content-based filtering
- the text metadata of the content which is composed of natural language, that is, unstructured data
- the technology of digitizing that is, vectorizing, the unstructured data, which is natural language, into data that a computer can understand
- the unstructured data which is natural language
- the distance and/or direction between the vectors can be interpreted as relative relationship information between the vectors.
- Fig. 5 illustrates an example of the relative relationship between vectors.
- v1 a vector (501) representing a king in FIG. 5
- v2 a vector (502) representing a queen
- v3 a vector (503) representing a man
- v4 a vector (504) representing a woman
- the distance (v1, v5) will be further than the distance (v1, v2), and the directions (v1, v5) and (v1, v2) will be different. In this manner, the relative similarity between vectors can be determined.
- the embedding size which is the length of the vector, is set to three dimensions, but the embedding size in an actual CBF model can be set to a higher multidimensionality. This is because when a vector has a multidimensional embedding size, it can contain more complex meanings.
- the RoBERTa model is an advanced model from the BERT model.
- the BERT model is the predecessor of the RoBERTa model and is a language model that has pre-learned a large amount of text data through unsupervised learning.
- the BERT model has a structure in which encoder blocks of the transformer structure are stacked in multiple layers, and is pre-learned using the MLM (masked language model) method and the NSP (next sentence prediction) method. A specific description of the structure of the transformer and the structure of the BERT model will be described later with reference to FIGS. 21a, 21b, and 22.
- FIG. 6 illustrates an example of a structure of a server for searching content according to one embodiment of the present disclosure.
- the server e.g., server (120) of FIG. 1
- the processor (308) of FIG. 3.
- FIGS. 7 to 11 a description of at least some components of FIG. 6 will be provided with reference to FIGS. 7 to 11.
- the server (120) may include a content storage unit (610), a model learning unit (620), a search word acquisition unit (630), a similarity determination unit (640), and a content determination unit (650).
- the content storage (610) stores content items that can be provided to clients.
- the content items include movie content, drama content, and program content that can be streamed, and one content item corresponds to one movie, one drama, or one program.
- the first content item and the second content item may correspond to different movies.
- the content storage (610) may exist outside the server (120), and in this case, the server (120) may access the external content storage (610) and search and obtain content items.
- the preprocessing unit (710) of the model learning unit (620) obtains text metadata of a content item for learning a language model, and converts the obtained text metadata into sequence-type text data.
- the sequence-type text data refers to data in the form of a string in which text data are continuously connected.
- the reason why the preprocessing unit (710) converts the text metadata into sequence-type text data is because text data, which is classified as structured data such as metadata of a content item, cannot be directly input into a language model. Therefore, the preprocessing unit (710) can convert the text metadata into sequence-type text data by dividing the text metadata of a content item into token units and then inserting at least one delimiter.
- a token refers to an input unit of a language model that is replaced with a unique embedding value
- at least one delimiter that is inserted can also be treated as a token.
- At least one delimiter can include at least one of a separator token (e.g., [SEP]) for distinguishing different types of features, and special tokens representing specific features.
- the special tokens may include at least one of special tokens [GENRE] and [/GENRE] representing genres, for example, special tokens [DIR] and [/DIR] representing directors, special tokens [ATR] and [/ATR] representing actors, and special tokens [TAG] and [/TAG] representing hashtags.
- Each special token may be inserted before or after the text corresponding to the feature.
- the reason why special tokens are used in the present disclosure is that various types of features are included in the text metadata of a content item. That is, it may be difficult for a language model to recognize various types of features with only the separating tokens and/or the order of the separating tokens included in the input sequence.
- the special tokens may be added to the vocabulary of the language model.
- the preprocessing unit (710) can convert text metadata including an identification code, title, genre, director, actor, hashtag, and synopsis of a content item into sequence-type text data including delimiters as shown in Table 1 below.
- the preprocessing unit (710) can generate sequence-type text data as illustrated in FIG. 8.
- FIG. 8 illustrates an example of converting text metadata of content into sequence-type text data according to an embodiment of the present disclosure.
- the preprocessing unit (710) can convert text metadata of content into sequence-type text data (820) by adding separation tokens and special tokens to text metadata (810) of a content item.
- the preprocessing unit (710) can limit the number of directors and/or actors included in the sequence-type text data. For example, the number of directors and/or actors may be limited to a maximum of 5, but the present disclosure is not limited thereto.
- the preprocessing unit (710) provides the generated sequence-type text data to the learning unit (720).
- the learning unit (720) of the model learning unit (620) performs learning on a language model based on sequence-type text data. That is, the learning unit (720) can perform learning on a language model by performing training on a prediction model based on a specific type of information among the sequence-type text data acquired from the preprocessing unit (710).
- the specific type of information may include hashtag information, genre information, or synopsis information.
- the learning unit (720) can perform any one of the first to third embodiments below.
- the learning unit (720) can perform learning on the language model by training the prediction model based on hashtag information in the sequence-type text data.
- the prediction model can include a hashtag prediction model, which is a prediction model of the MLM method configured to predict or infer masked hashtag tokens based on the language model.
- the learning unit (720) can perform learning on the language model as illustrated in FIG. 9A.
- FIG. 9A illustrates an example of learning a language model according to one embodiment of the present disclosure.
- the learning unit (720) may mask one token (e.g., 'tag 2') corresponding to a hashtag among tokens included in the sequence text data, and define the value of the masked token as a label.
- the learning unit (720) may input text data (910) including the masked token (901) into the hashtag prediction model (920), determine a loss value using the output value and the label, and perform backpropagation based on the loss value, thereby performing training and/or learning for the hashtag prediction model (920). Accordingly, the hashtag prediction model (920) may be trained and/or learned to predict (930) and/or infer the value of the masked token (901).
- Table 2 shows that when the token of 'tag2' among the multiple tokens located in the hashtag area is masked and input into the hashtag prediction model (920), the hashtag prediction model (920) is trained to infer the token of 'tag2'.
- the reason why only one token is masked even though there are multiple tokens in the hashtag area is because, when two or more tokens are masked, it is not easy for the language model to identify the positional relationship between the masking tokens included in the input and the target tokens. Therefore, the learning unit (720) according to the first embodiment can operate in a manner of masking and inferring one token in the hashtag area, and then masking and inferring another token in the hashtag area.
- tokens to be masked in a hashtag area may vary by epoch.
- the learning unit (720) may mask tokens that do not start with '#' among tokens located in the hashtag area, i.e., non-dependent tokens.
- the hashtag area may be determined based on special tokens [TAG] and [/TAG] representing hashtags.
- the learning unit (720) can perform learning on the language model by training the prediction model based on the synopsis information in the sequence-type text data.
- the prediction model can include a synopsis prediction model, which is a prediction model of the MLM method configured to predict or infer masked synopsis tokens based on the language model.
- the learning unit (720) can perform learning on the language model as illustrated in FIG. 9b.
- FIG. 9b illustrates an example of learning a language model according to one embodiment of the present disclosure.
- the learning unit (720) may mask one token (e.g., 'Synopsis Token 1') corresponding to a synopsis among tokens included in the sequence-type text data, and define the value of the masked token as a label.
- the learning unit (720) may input text data (950) including the masked token (951) into the synopsis prediction model (960), determine a loss value using the output value and the label, and perform backpropagation based on the loss value, thereby performing training and/or learning for the synopsis prediction model (960). Accordingly, the synopsis prediction model (960) may be trained and/or learned to predict (970) and/or infer the value of the masked token (951).
- Table 3 shows that when the token of 'Synopsis Token 1' among the multiple tokens located in the synopsis area is masked and input into the synopsis prediction model (960), the synopsis prediction model (960) is trained to infer the token of 'Synopsis Token 1'.
- the reason why only one token is masked even though there are multiple tokens in the synopsis area is because, when two or more tokens are masked, it is not easy for the language model to identify the positional relationship between the masking tokens included in the input and the target tokens.
- the learning unit (720) according to the second embodiment may operate in a manner of masking and inferring one token in the synopsis area, and then masking and inferring another token in the synopsis area.
- the token masked in the synopsis area may vary by epoch.
- the learning unit (720) according to the second embodiment is not limited to masking and inferring tokens of the synopsis area, and may also mask and infer tokens of the title area.
- the learning unit (730) may mask and infer tokens of the title area in addition to the synopsis area.
- the learning unit (730) may mask and infer tokens of the title area instead of the synopsis area.
- the learning unit (720) can mask tokens that do not start with '#', i.e., non-dependent tokens, among tokens located in the synopsis area.
- the synopsis area can be determined based on a separator token and/or a special token.
- the synopsis area can be determined as an area between a separator token [SEP] and a special token [GENRE] for a genre.
- SEP separator token
- GENE special token
- the synopsis area can be determined as the area between [SYNOPSIS] and [/SYNOPSIS], which are special tokens representing the synopsis. In other words, the synopsis area can vary depending on how the sequence text data is composed.
- the reason why tokens that do not start with '#' are masked is because, due to the characteristics of the BPE (Byte Pair Encoding) tokenizer of the RoBERTa model, tokens that start with "#" are dependent on the preceding token or are tokens with grammatical meaning.
- the learning unit (720) can mask tokens that do not start with '#' among the tokens located in the synopsis area. For example, when the BPE tokenizer divides a text sentence into token units, it can divide "Mr.
- the tokenizer can indicate that a token is dependent on the preceding token by adding '#' to the dependent token.
- the way to indicate a dependent token is not limited to the method of adding '#' to the token.
- '##' or '_' can be added to the dependent token, and various other methods can be used to indicate that the token is a dependent token. Therefore, the form of the dependent token is not limited to a specific form, and the learning unit (720) can mask tokens that are not dependent tokens.
- the hashtag prediction model (920) and/or the synopsis prediction model (960) may include a masking block (921) that masks at least one token among a plurality of input tokens (e.g., [W 1 , W 2 , W 3 , W 4 , W 5 ]), as illustrated in FIG.
- a language model (922) that outputs vector values (e.g., [O 1 , O 2 , O 3 , O 4 , O 5 ]) corresponding to the plurality of input tokens (e.g., [W 1 , W 2 , W 3 , [MASK], W 5 ]) including the masked token, a classification layer (923) that infers vector values of the masked tokens from vector values output from the language model, and an embedding to vocabulary layer (924) that converts the vector values into tokens.
- the language model (922) may include a RoBERTa model.
- the classification layer (923) may include a fully connected layer, a Gaussian error linear unit (GELU), and a norm, and may be referred to as an MLM head layer.
- the classification layer (923) may output prediction tokens (e.g., [W' 1 , W' 2 , W' 3 , W' 4 , W' 5 ]) corresponding to a plurality of input vector values (e.g., [O 1 , O 2 , O 3 , O 4 , O 5 ]).
- the prediction model (920) can be trained to predict and/or infer a masked token (e.g., W 4 ), i.e., a target, that is appropriate to the context and does not overlap with the unmasked tokens, based on contextual information from the unmasked tokens (e.g., [W 1 , W 2 , / 3 , W 5 ]).
- a masked token e.g., W 4
- a target i.e., a target
- the learning unit (720) can perform learning on a language model by training a prediction model based on genre information in sequence-type text data.
- the prediction model can include a genre prediction model, which is a prediction model of a text classification method configured to predict or infer genres for content items based on a language model.
- the learning unit (720) can perform learning on a language model as illustrated in FIG. 10A.
- FIG. 10A illustrates an example of learning a language model according to one embodiment of the present disclosure.
- the learning unit (720) obtains input sequence-type text data that does not include genre-related tokens, and performs a text classification task using a genre prediction model (1020), thereby predicting a genre to which a content item having the input sequence-type text data belongs.
- the text classification task refers to a task of distinguishing which class a text input to a prediction model belongs to.
- the input sequence-type text data can be generated by removing genre-related tokens from the sequence-type text data.
- the genre-related tokens can include special tokens [GENRE] and [/GENRE] representing a genre, and tokens corresponding to genre information (hereinafter, 'genre tokens').
- the genre tokens are located in a genre area between special tokens [GENRE] and [/GENRE] representing a genre, and can include at least one token representing a genre.
- a genre token expressing a genre called 'horror/thriller' may include three tokens called 'horror', '/', and 'thriller'
- a genre token expressing a genre called 'drama' may include one token called 'drama'.
- the input sequence-type text data may be generated in the preprocessing unit (710) or the learning unit (720).
- the learning unit (720) can obtain at least one token representing at least one genre from the sequence-type text data, and set a class label based on the obtained at least one token.
- one genre can be represented by one or more tokens.
- the genre “horror/thriller” can be represented by three tokens, “horror", “/”, and “thriller”, and the genre “drama” can be represented by one token, "drama”. Therefore, when one or more tokens representing one genre are obtained from the sequence-type text data, the learning unit (720) can set a class label to predict one genre based on the obtained one or more tokens.
- the learning unit (720) can set a class label to predict a plurality of genres based on the obtained plurality of tokens.
- the learning unit (720) can use a multi-class classification model or a multi-label classification model depending on the number of genres to be predicted, which will be described later in FIG. 10c.
- the learning unit (720) inputs input sequence-type text data (1010) that does not include a genre-related token into the genre prediction model (1020), determines a loss value (e.g., cross entropy) using the output value of the genre prediction model (1020) and a preset class label, and performs backpropagation based on the loss value, thereby performing training and/or learning for the genre prediction model (1020). Accordingly, the genre prediction model (1020) can be trained and/or learned to predict (1030) and/or infer at least one genre set as a class label from the input sequence-type text data (1010).
- a loss value e.g., cross entropy
- the genre prediction model (1020) may include a language model (1021) that outputs vector values (e.g., [C, T 1 , T 2 , ..., T N ]) corresponding to input tokens (e.g., [CLS, Tok1, Tok2, ..., TokN]), as illustrated in FIG. 10b, and a classification layer (1027) that outputs a probability value of a class label based on at least one vector value output from the language model (1021).
- the language model (1021) may include a RoBERTa model.
- the classification layer (1027) may be referred to as a text classification layer, and/or a text classification head layer.
- the learning unit (720) can obtain a genre prediction result for the corresponding content from the prediction model (1020) by inputting input sequence-type text data (1010) that does not include a genre-related token into the prediction model (1020).
- the input sequence-type text data (1010) can include a plurality of tokens Tok1, Tok2, ..., TokN (1010-1, 1010-2, ..., 1010-N).
- the learning unit (720) can add a start token, [CLS] (1011), to the start position of the input sequence-type text data (1010) and input it into the language model (1021).
- the language model (1021) can output the last hidden vector C (1023) corresponding to the start token [CLS] (1011), and the last hidden vectors T 1 , T 2 , ..., T N (1025-1, 1025-2, ..., 1025-N) corresponding to the plurality of tokens Tok1, Tok2, ..., TokN (1010-1, 1010-2, ..., 1010-N).
- the last hidden vector C (1023) can be an output vector that reflects context information of the entire plurality of tokens Tok1, Tok2, ..., TokN (1010-1, 1010-2, ..., 1010-N) included in the input sequence-type text data (1010).
- the last hidden vector C (1023) is input to the classification layer (1027), and the classification layer (1027) can output the probability value of the class label based on the last hidden vector C (1023).
- the learning unit (1020) can predict the class to which the corresponding content belongs, i.e., the genre, based on the probability value of the output class label.
- the classification layer (1027) may use only the last hidden vector C (1023) as input, or may use the last hidden vector C (2023) and other last hidden vectors T 1 , T 2 , ..., T N (1025-1, 1025-2, ..., 1025-N) as input together.
- the classification layer (1027) can receive the average pooling of the last hidden vectors T 1 , T 2 , ..., T N (1025-1, 1025-2, ..., 1025-N) output from the language model (1021) and output the probability value of the class label based on this.
- the genre prediction model (1020) can be trained or learned to obtain context information from all tokens included in the input sequence-type text data (1010) and infer the genre based on the obtained context information.
- the genre prediction model (1020) can be learned based on context information obtained from tokens such as a title, synopsis, hashtags, etc.
- the input and target for the learning task of the genre prediction model based on the language model can be represented as shown in Table 4 below.
- Table 4 shows that when input sequence-type text data is input to the prediction model, the genre prediction model is trained to infer tokens of 'genre 1' and 'genre 2'.
- the target means a class label
- the fact that the targets are 'genre 1' and 'genre 2' is multiple because the corresponding content item may belong to multiple genres rather than one genre.
- a specific content item may belong to the 'action/SF' genre among the major genres and the 'fantasy' genre among the minor genres.
- the genres for content items may be classified into major genres and/or minor genres.
- Major genres may include drama, romance/melodrama, comedy, action/SF, horror/thriller, etc.
- Minor genres may include drama, action, thriller, romance, comedy, horror, fantasy, SF, crime, historical drama, war, martial arts, etc.
- the listed genres are only examples to help understanding, and the embodiments of the present disclosure are not limited thereto.
- genres for content items can be categorized in various ways, and one content item can belong to one or more genres. Therefore, the genre prediction model according to the third embodiment can be trained to infer only one genre to which a content item belongs, or can be trained to infer one or more genres to which a content item belongs.
- the prediction model (1020) can be trained to infer one or more genres to which a content item belongs by including a multi-class classification model or a multi-label classification model based on a supervised learning algorithm, as illustrated in FIG. 10c.
- Fig. 10c illustrates the concept of a multi-class classification model and a multi-label classification model applicable to the present disclosure.
- C may mean the number of classes. That is, Fig. 10c assumes a case where there are three classes (1001, 1003, 1005).
- the multi-class classification model (1040) is a model for inferring one class to which an input sample belongs among multi-classes. Therefore, the label of the multi-class classification model (1040), i.e., the target vector t, may be set as a one-hot vector having one positive class and C-1 negative classes.
- the label for the first input sample (1041) of the multi-class classification model (1040) may be set to [001]
- the label for the second input sample (1043) may be set to [100]
- the label for the third input sample (1043) may be set to [010].
- the label is an expected output vector value for the input sample and may be set based on the class to which the input sample actually belongs.
- the learning unit (720) can be trained to infer one or more genres to which each of the content items belongs through a genre prediction model (1020) configured based on a multi-class classification model (1040) or a multi-label classification model (1050) as illustrated in Fig. 10c.
- a genre prediction model (1020) configured based on a multi-class classification model (1040) or a multi-label classification model (1050) as illustrated in Fig. 10c.
- the more accurately the genre prediction model infers the target the more sophisticated the semantic representation of the language model can become.
- the second learning unit (780) performs secondary learning on the language model using a prediction model configured to predict or infer masked tokens. That is, the second learning unit (780) performs secondary learning, which is additional learning on the language model that has been first learned by the first learning unit (770). The second learning unit (780) performs additional training on the language model that has been first learned based on other types of information that have not been used in the first learning among the sequence-type text data of the content item acquired by the preprocessing unit (760) using the prediction model of the MLM method, thereby performing secondary learning on the language model.
- the second learning can be performed based on synopsis information in the sequence-type text data of the content item.
- the second learning unit (780) may perform secondary learning on the language model based on synopsis information using a synopsis prediction model (960), which is a prediction model of the MLM method, as illustrated in FIG. 9b.
- a synopsis prediction model 960
- the second learning may be performed based on hashtag information in the sequence-type text data of the content item.
- the second learning unit (780) may perform secondary learning on the language model based on hashtag information using a hashtag prediction model (920), which is a prediction model of the MLM method, as illustrated in FIG. 9a.
- the second learning unit (780) can perform secondary learning by using text metadata of content items used for learning by the first learning unit (770).
- the second learning unit (780) can select at least some content items having a type of information to be used for secondary learning among the content items used for learning by the first learning unit (770), and perform secondary learning by using text metadata of at least some of the selected content items. For example, when hashtag information is used for secondary learning of a language model, the second learning unit (780) can select only content items having hashtag information among the content items used for learning by the first learning unit (770), and perform secondary learning by using text metadata of the selected content items as a training data set for a prediction model.
- the second learning unit (780) may select only content items having synopsis information among the content items used for learning by the first learning unit (770), and perform secondary learning by using the text metadata of the selected content items as a training data set for the prediction model.
- the training data set used for learning by the second learning unit (780) is not limited thereto.
- the model learning unit (620) performs the first learning based on hashtags using the MLM method prediction model and then performs the second learning based on synopsis, or performs the first learning based on synopsis and then performs the second learning based on hashtags.
- the model learning unit (620) can perform N-th learning using at least two types of information among various types of information included in the sequence-type text data of the acquired content item.
- the model learning unit (620) can perform the first learning based on synopsis or the first learning based on hashtags using the MLM method prediction model and then perform the second learning based on genre using the prediction model of the text classification method.
- the model learning unit (620) may perform genre-based first learning using a text classification method prediction model, and then perform hashtag-based second learning or synopsis-based second learning using an MLM method prediction model.
- the model learning unit (620) may perform synopsis-based first learning using an MLM method prediction model, perform hashtag-based second learning using an MLM method prediction model, and then perform genre-based tertiary learning using a text classification method prediction model.
- the model learning unit (620) performed learning on the language model by training the prediction model of the MLM method based on hashtag information or synopsis information, or performed learning on the language model by training the prediction model of the text classification method based on genre information.
- the model learning unit (620) may perform learning on the language model by training the prediction model of the MLM method based on other types of information other than hashtag information and synopsis information, or by training the prediction model of the text classification method based on other types of information other than genre information.
- the model learning unit (620) may perform learning on the language model by using other information that may reflect the user's content preference. Table 5 below is an example of an expression for the user's preferred content.
- Table 5 shows that the user's preferred content can be reflected in the genre, hashtag, director, or actor information of the content.
- the director or actor information is information that reflects the user's content preference.
- hashtag or genre information reflects the user's content preference, but has relatively little target information compared to other features (e.g., director, actor), and the contents often have the same genre and/or hashtag.
- the model learning unit (620) can perform learning for the language model by training the prediction model of the MLM method using the genre information.
- the model learning unit (620) may perform learning on a language model by training a prediction model of a text classification method based on hashtag information.
- the model learning unit (620) may perform learning on a language model by using any one type of information among various types of information included in the text metadata of the content.
- the search term acquisition unit (630) acquires a search term for content search from the client device (110).
- the search term acquisition unit (630) may acquire a search term in text form through wired/wireless communication with the client device (110).
- the search term acquisition unit (630) may acquire a search term in voice data form from the client device (110). In this case, the search term acquisition unit (630) may convert the voice data into text data.
- the similarity determination unit (640) determines the similarity between the search word and the content item using the language model learned in the model learning unit (620). To this end, the similarity determination unit (640) may obtain the search word from the search word acquisition unit (640) and determine the vector of the search word using the learned language model.
- the search word may be composed of natural language, i.e., non-standard data.
- the search word may be a natural language in the form of a word, phrase, or sentence including at least one keyword.
- the similarity determination unit (640) may convert the search word to be suitable for a specified input format and input the converted search word into the language model. For example, the similarity determination unit (640) may convert the search word as shown in Table 6 below, such as input 1, input 2, input 3, or input 4.
- Input 1 [CLS] Search terms separated by tokens [SEP]
- Input 2 [CLS] Search terms separated by tokens [SEP] Search terms separated by tokens [GENRE][MASK][/GENRE] [SEP]
- Input 3 [CLS] Search terms separated by tokens [SEP] Search terms separated by tokens [TAG][MASK][/TAG] [SEP]
- Input 4 [CLS] Search terms separated by tokens [SEP] [MASK] [SEP]
- [CLS] and [SEP] are special tokens inserted to indicate the start and end positions of the corresponding search term, and are commonly included in input 1, input 2, input 3, and input 4.
- the insertion of [CLS] and [SEP] into the start and end positions, respectively, is to follow the input format that is commonly used when learning a language model, that is, the standard input format.
- input 1 may be a standard input format in which [CLS] is included in the start position and [SEP] is included in the end position.
- input 2 and/or input 3 may be an intended standard input format to follow the input formats of Table 2, Table 3, or Table 4 used for learning a language model according to an embodiment of the present disclosure.
- the insertion of [SEP] between the search terms of input 2 and/or input 3 is to ensure that the learning of the language model through [SEP] between the title and synopsis of Table 2, Table 3, or Table 4 is reflected in the process of determining the vector of the search term.
- the reason that input 2 has the form of ⁇ attribute 1>[SEP] ⁇ attribute 2>[GENRE][MASK][/GENRE] is to predict [MASK] from the genre perspective using ⁇ attribute 1> and ⁇ attribute 2> when determining the vector of the search term.
- adding [GENRE][MASK][/GENRE] to predict the masked token from the genre perspective is to apply weight to the position of the genre special token.
- the language model can infer a masked genre token based on search terms corresponding to ⁇ attribute 1> and ⁇ attribute 2> of input 2, and output a vector of search terms using the vector values of the last hidden layer.
- a weight may be applied to the position of the inferred genre token, but the present disclosure is not limited thereto.
- the reason input 3 has the form ⁇ attribute 1>[SEP] ⁇ attribute 2>[TAG][MASK][/TAG] is to predict [MASK] from a hashtag perspective using ⁇ attribute 1> and ⁇ attribute 2> when determining the vector of the search term.
- Input 4 is a form in which the synopsis located behind [SEP] is masked according to the format of ⁇ title>[SEP] ⁇ synopsis> in Table 3.
- Input 4 can be predicted from the synopsis perspective by using ⁇ attribute 1> when determining the vector of the search word.
- the similarity determination unit (640) can convert a search word into a specified input format and input the converted search word into a learned language model. For example, if the search term is “a suspenseful movie”, the similarity determination unit (640) can convert the search term into [CLS]/suspenseful/overwhelming/movie/[SEP] as in input 1, or into [CLS]/suspenseful/overwhelming/movie/[SEP]/suspenseful/overwhelming/movie/[GENRE][MASK][/GENRE][SEP] as in input 2, or into [CLS]/suspenseful/overwhelming/movie/[SEP]/suspenseful/overwhelming/movie/[TAG][MASK][/TAG][SEP] as in input 3, or into [CLS]/suspenseful/overwhelming/movie/[SEP][MASK][SEP] as in input 4.
- the similarity determination unit (640) can obtain a vector of a search term by inputting the converted search term into the learned language model.
- the input 1, input 2, input 3, and input 4 of the above-described Table 6 are only examples of designated input formats for search terms, and the present disclosure is not limited thereto. That is, the designated input format for the search term can be variously set by the designer. For example, the designated input format for the search term can be set as "[CLS] token-separated search term [GENRE] [MASK] [/GENRE][SEP]", or "[CLS] token-separated search term [TAG][MASK][/TAG][SEP]".
- the designated input format for the search term can have an input structure that allows the learned language model to predict a mask through tokens corresponding to the search term even if the search term is not repeated and is included only once according to ⁇ title>[SEP] ⁇ synopsis> of Table 2.
- the specified input format for a search term could be set to "[CLS] token-separated search terms [SEP] token-separated search terms [SEP]".
- the designated input format may be set based on the learning method of the language model. For example, if the model learning unit (620) performs learning for the language model based on the hashtag prediction model (920) as illustrated in FIG. 9A, the designated input format for the search term may be set to input1 or input3. As another example, if the model learning unit (620) performs learning for the language model based on the synopsis prediction model (960) as illustrated in FIG. 9B, the designated input format for the search term may be set to input1 or input4. As another example, if the model learning unit (620) performs learning for the language model based on the genre prediction model (1010) as illustrated in FIG. 10A, the designated input format for the search term may be set to input1. This is merely an example, and the present disclosure is not limited thereto. For example, the designated input format for the search term may be set regardless of the learning method of the language model.
- the specified input format for a search term to be input to the learned language model may include masked tokens.
- MLM masked language model
- the language model can contextually understand the role of the masked tokens. That is, when a language model is configured through learning of a language system, an MLM task is basically performed on language data, so even if the language model is learned through genre prediction, [MASK] included in the input can be inferred.
- the similarity determination unit (640) obtains at least one vector for each content item through the learned language model periodically or when a specified event occurs. That is, the similarity determination unit (640) may obtain text metadata for each content item stored in the content storage unit (610) and convert the obtained text metadata into sequence-type text data. The similarity determination unit (640) may obtain a vector for each content item based on the sequence-type text data obtained for each content item using the learned language model, and may store the obtained vector for each content item in the content vector DB (612).
- the similarity determination unit (640) may generate input sequence-type text data that does not include genre-related tokens for each content item by removing genre-related tokens from the sequence-type text data for each content item.
- the similarity determination unit (640) may obtain a vector for each content item based on the input sequence-type text data obtained for each content item using the learned language model.
- the specified events may include events in which a new content item is added and stored in the content storage (610), and/or events in which a business operator and/or an administrator requests acquisition of a vector for each content item.
- the similarity determination unit (640) determines the similarity between the search word and the content item based on the vector of the search word and the vector of each content item.
- the vector of the content item stored in the content storage unit (610) may be obtained from the content vector DB (612) or may be obtained in real time using a learned language model.
- the similarity determination unit (640) may determine the similarity, as illustrated in FIG. 11.
- FIG. 11 illustrates an example of calculating the similarity between a search term and content using a learned language model according to one embodiment of the present disclosure.
- the similarity determination unit (640) may obtain a vector (1104a) of semantic search term 1 from a search term (1102a) of a specified input format of semantic search term 1 using the RoBERTa model (1120-1), and may obtain a vector (1104b) of content 1 from ⁇ content 1 Data> (1102b), which is sequence-type text data of content 1 or input sequence-type text data.
- the similarity determination unit (640) can calculate the similarity between the vector (1104a) of the semantic search term 1 and the vector (1104b) of the content 1 by using the similarity calculation block (1140) that calculates the similarity of the vectors.
- the similarity calculation block (1140) can calculate the similarity based on the cosine similarity algorithm.
- the similarity between the vector (1104a) of the semantic search term 1 and the vector (1104b) of the content 1 can be interpreted as the similarity (1106) between the search term and the content 1.
- the similarity determination unit (640) may determine a vector value for the sequence-type text data of the corresponding content by using the embedding values of the last hidden layer of the language model, excluding the head layer (e.g., MLM head layer or text classification head layer) used for learning the language model in the model learning unit (620).
- the model used for determining the similarity and the model used for fine-tuning may have different structures. That is, the model in the learning step for fine-tuning includes an MLM head layer for predicting masked tokens or a text classification head layer for inferring a genre, but the model in the step for determining the similarity may not include the head layer and may further include a similarity calculation block.
- the similarity determination unit (640) can obtain vectors of search words and vectors of content items, i.e., input text vectors to be used for similarity calculation, according to various embodiments.
- Embodiments for determining input text vectors are as follows.
- a method using a pooler output may be applied. Specifically, when using a pooler output, the last hidden layer output vector of the [CLS] token of the language model is used as an input text vector.
- a method using the average of the last hidden states values may be applied.
- a vector obtained through average pooling for the last hidden layer output vector of all words of the language model is used as the input text vector.
- a method of utilizing the maximum value of the last hidden state values may be applied.
- a vector obtained through max pooling for the last hidden layer output vector of all words of the language model is used as the input text vector.
- the similarity determination unit (640) can obtain an input text vector for similarity calculation by using the average of the last hidden state values.
- the similarity determination unit (640) can assign weights to the positions of specific features among the last hidden state values of the language model. Examples of assigning weights are as follows. In the following description, for the purpose of helping understanding, it is assumed that a weight of 2 (e.g., 2 times) is applied, but the weight is not limited to 2. For example, the weight can be k, and k can be a real number greater than 1.
- a method of assigning weights to hashtag values may be applied.
- vector values corresponding to tokens located between [TAG] and [/TAG] which are special tokens indicating the hashtag area among vector values of the last hidden layer, may be assigned a weight of double.
- a method of assigning weights to genre values may be applied.
- a weight of two may be assigned to vector values corresponding to tokens located between [GENRE] and [/GENRE], which are special tokens indicating a genre area among vector values of the last hidden layer.
- an average may be calculated again only for vectors located at the genre position, and then the average may be added to the average pooling result.
- embodiments of the present disclosure are not limited thereto. For example, during average pooling, a weight may be applied to each feature position, and a weighted average may be calculated.
- a method of weighting the title and synopsis values may be applied.
- the vector values corresponding to tokens located before and after [SEP] among the vector values of the last hidden layer may be weighted twice.
- a method of weighting genre and hashtag values may be applied.
- the vector values corresponding to tokens located between [TAG] and [/TAG] and tokens located between [GENRE] and [/GENRE] may be weighted twice.
- a method of weighting the values of different types of features may be applied.
- the vector values corresponding to any one of the tokens located between [TAG] and [/TAG], the tokens located before [SEP], and the tokens located after [SEP] may be weighted twice.
- a method of assigning weights to genre values may be applied.
- the vector values corresponding to tokens located between [GENRE] and [/GENRE], which are special tokens indicating the genre area may be assigned a weight of double.
- the similarity determination unit (640) may assign weights to vector values corresponding to the position of at least one feature among the vector values of the last hidden layer. After assigning weights, the similarity determination unit (640) may obtain an input text vector for calculating similarity by determining an average of the vector values of the last hidden layer. For example, after average pooling for vector values corresponding to tokens, an average may be calculated again only for vectors at the position of a specific feature to which weights have been assigned, and then the average may be added to the average pooling result.
- the embodiments of the present disclosure are not limited thereto. For example, during average pooling, a weight may be applied to each position of a feature, and a weighted average may be calculated.
- genre values may not exist in the vector values of the last hidden layer. This is because there are no genre-related tokens in the input sequence-type text data input to the language model. In this case, among the weighting methods described above, the method of weighting genre values will not be applied.
- the content determination unit (650) can determine content items similar to the search term based on the similarity between the search term and the content items determined by the similarity determination unit (640), and can generate a content search list including the determined content items.
- the content determination unit (650) can check the similarity of each content item to the search term, and can generate a content search list based on the similarity. For example, the content determination unit (650) can select a specified number of content items in descending order of similarity with the search term among the content items stored in the server (120), and generate a content search list including the selected content items. That is, the content items included in the content search list can be listed according to similarity.
- the model learning unit (620) can add frequent words of the text metadata of the contents to the vocabulary dictionary of the basic language model and learn using the vocabulary dictionary to which the frequent words have been added. If the frequent words are added to the vocabulary dictionary, the frequent words can be recognized as a single token in the language model without being segmented. For example, frequent words indicating a large-scale genre can be added to the vocabulary dictionary. If the frequent words indicating a large-scale genre are added to the vocabulary dictionary, the frequent words indicating a large-scale genre are recognized as a single token in the language model, so that the length of the sequence that the language model can recognize increases and the performance can be improved.
- the model learning unit (620) has been described as being included in the server (120). That is, the server (120) using the learned language model can perform learning for the language model. However, according to another embodiment, the learning for the language model can be performed by an entity other than the server (120). In this case, the model learning unit (620) may not be included in the server (120), and the server (120) may receive information about the learned language model from a third-party device, build a learned language model, and then determine the similarity between the search word and the content item using the learned language model.
- the search word is provided from the client device (110) to the server (120). Therefore, it is not easy for the server (120) to predict in advance which search word will be input from the client device (110). Therefore, when a content search corresponding to a specific search word is requested from the client device (110), the server (120) must calculate a vector for the search word in real time. However, since the content items are stored in advance in the server (120), the vector for the content items can be obtained regardless of the time when the content search is requested. That is, whenever new content items are additionally stored in the server (120), the server (120) can calculate vector values for new content items using the pre-learned language model and store the calculated vector values for each content item in the content vector DB (612). When a content search is requested, the server (120) can shorten the time required to create a content search list by using vector values for each content item stored in the content vector DB (612).
- the vector values for each content item can be stored in the location where the learned language model is stored. Through this, when determining the similarity between a search term and content for content search in the server (120), the vector values for each content item in the same location or on the same path can be used.
- the input sequence-type text data from which the genre-related tokens have been removed was used as the input of the language model learned by the genre prediction model, which is a prediction model of the text classification method.
- the embodiments of the present disclosure are not limited thereto.
- the server according to the embodiment of the present disclosure, or the similarity determination unit (640) may use the sequence-type text data including the genre-related tokens as the input of the learned language model, even when the learned language model is learned by the genre prediction model, which is a prediction model of the text classification method.
- the server or the similarity determination unit (640) may obtain the vector value for each content item by inputting the sequence-type text data including the genre-related tokens as shown in Table 1 into the learned language model.
- FIG. 12 illustrates an example of a procedure for searching content using a learned language model according to one embodiment of the present disclosure.
- the operating entity of FIG. 12 may be the server (120) of FIG. 1.
- the server obtains a search term.
- the server can obtain the search term in the form of text data from the client device.
- the server can receive a content search request message including the search term from the client device, and extract the search term from the content search request message.
- the search term can include unstructured text data in natural language.
- the server can obtain a search term composed of unstructured text data, such as “a suspenseful movie.”
- the server determines the similarity between the search term and the content item using the learned language model.
- the server can obtain the vector value of the search term and the vector value for each content item using the learned language model based on the metadata of the content, i.e., the text metadata.
- the vector value for each content item may be obtained in real time using the learned language model based on the metadata of the content, or may be obtained and stored in advance before the search term is obtained using the learned language model based on the metadata of the content.
- the learned language model based on the metadata of the content may include a language model learned by the model learning unit (620).
- the server can determine the similarity between the search term and the content items based on the vector of the search term and the vector value for each content item.
- the server can obtain the vector of the search term by inputting the search term converted into one of the input formats of Table 6 into the learned language model, and obtain the vector of the first content by inputting the sequence-type text data of the first content item into the learned language model.
- the server can calculate the similarity between two vectors using a similarity algorithm (e.g., cosine similarity algorithm).
- the server can determine the calculated similarity as the similarity between the search term and the first content item. Through this, the server can calculate the similarity between each of the search term and the content items.
- the server may provide a content search list including at least one content item similar to the search term. That is, the server may determine at least one content item similar to the search term based on the similarity between the search term and the contents, and generate a content search list including information about the determined at least one content item. For example, the server may select a specified number of content items in descending order of similarity with the search term or content items having a similarity greater than a threshold among the content items it has. For example, the server may select a specified number of content items in descending order of similarity with the search term or content items having a similarity greater than a threshold among candidate content items designated according to other criteria.
- the server may generate a content search list including information about the selected content items, and provide the generated content search list to the client device.
- the server may transmit the content search list to the client device.
- the format of the specific content search list may vary depending on the environment, service, etc. that provides the content search result.
- the learned language model may be a language model learned by any one of the procedures of Fig. 13a, Fig. 14a, Fig. 15a, or Fig. 15b described below.
- FIG. 13A illustrates an example of a procedure for performing learning on a language model according to one embodiment of the present disclosure. At least some of the operations of FIG. 13A below may be performed sequentially or in parallel. For example, some of the operations of FIG. 13A may be performed at least temporarily at the same time. At least some of the operations of FIG. 13A below will be described with reference to FIG. 13B.
- FIG. 13B illustrates an example of learning a language model using a language model according to one embodiment of the present disclosure.
- the server obtains text metadata for the content.
- the server may obtain text metadata (1310) including the title, genre, director, actor, hashtag, and synopsis of the content.
- the server tokenizes the text metadata.
- the server can use a byte pair encoding (BPE) algorithm or a morphological analyzer to separate the text metadata into token units.
- the byte pair encoding algorithm is an information compression algorithm that compresses data by merging strings that appear most frequently in the target data, and can be composed of a vocabulary construction step and a tokenization step.
- the byte pair encoding algorithm is an algorithm that merges strings that appear frequently in the data, builds a vocabulary set by adding the merged string to a vocabulary set, and then separates the subword of the vocabulary set from the phrase when each phrase in the target data includes a subword.
- the morphological analyzer is a technique that segments the target data into morphemes, which are the smallest semantic units.
- the server obtains sequence-type text data.
- the sequence-type text data may be obtained by adding at least one delimiter to data separated by token units.
- the sequence-type text data may be determined as in FIG. 13b.
- the server may obtain sequence-type text data (1320) by separating text metadata (1310) of content into tokens and inserting at least one separating token and at least a special token (e.g., a genre token, a director token, an actor token, a hashtag token, etc.) into the tokens.
- a special token e.g., a genre token, a director token, an actor token, a hashtag token, etc.
- the server masks the hashtag.
- the server may mask any one of the multiple tokens located in the hashtag area.
- the hashtag area may be identified based on special tokens [TAG] and [/TAG] representing the hashtag.
- the server may recognize that a “touching” token and a “warm” token exist between [TAG] and [/TAG] in the sequence text data (1320), and may replace the “warm” token with [MASK] (1331) or replace the “touching” token with [MASK] (1332).
- the server may mask a token that does not start with “#” among the multiple tokens located in the hashtag area. Masking tokens that do not start with “#” is because tokens that contain core meaning, such as nouns and verbs, do not start with “#”.
- step S1309 the server performs learning to infer the masked hashtag using a language model-based prediction model. For example, as illustrated in FIG. 13b, if the "warm" token is masked, the server can be trained to infer the masked hashtag "warm” using the prediction model (1340), and if the "emotion" token is masked, the server can be trained to infer the masked hashtag "emotion” using the prediction model (1340). At this time, the prediction model (1340) can be trained by backpropagating a loss value to infer the masked hashtag. Through this, the parameters of the language model that derives the vector of each token in the prediction model (1340) can be updated so that the vectors of the tokens of the title and the synopsis can reflect the semantic information of the masked hashtag.
- the server can repeatedly perform steps S1305 and S1307 described above for multiple content items.
- the server can repeatedly perform steps S1305 and S1307 for multiple tokens within a hashtag area.
- the parameters of the language model can be updated so that the semantic information of the multiple hashtags is reflected in the vectors of other tokens within the sequence-type text data. Accordingly, the language model can be trained to provide more sophisticated semantic representations by the task of inferring masked tokens as illustrated in FIG. 13, thereby better identifying similarities between contents.
- the learned language model can return a vector containing information about hashtag features from other types of features (e.g., title, synopsis) in the sequence text data, even when there is a lack of or no hashtags in the sequence text data.
- features e.g., title, synopsis
- FIG. 14A illustrates an example of a procedure for performing learning on a language model according to one embodiment of the present disclosure. At least some of the operations of FIG. 14A below may be performed sequentially or in parallel. For example, some of the operations of FIG. 14A may be performed at least temporarily at the same time. At least some of the operations of FIG. 14A below will be described with reference to FIG. 14B.
- FIG. 14B illustrates an example of learning a language model using genre prediction according to one embodiment of the present disclosure.
- the server obtains text metadata for the content.
- the server may obtain text metadata (1410) including the title, genre, director, actor, hashtag, and synopsis of the content.
- the server performs tokenization on the text metadata. Tokenizing on the text metadata can be performed in the same manner as described in step S1303 of FIG. 13.
- the server obtains sequence-type text data.
- the sequence-type text data may be obtained by adding at least one delimiter to data separated by token units.
- the sequence-type text data may be determined as in FIG. 14b.
- the server may obtain sequence-type text data (1420) by separating metadata (1410) into tokens and inserting at least one separating token and at least a special token (e.g., a genre token, a director token, an actor token, a hashtag token, etc.) into the tokens.
- a special token e.g., a genre token, a director token, an actor token, a hashtag token, etc.
- the server sets the input and target of the prediction model.
- the server can obtain input sequence-type text data by removing genre-related tokens from the sequence-type text data, and set a target label based on the genre-related tokens. For example, referring to FIG. 14, the server can recognize that a "drama" token and a "music" token exist between [GENRE] and [/GENRE] in the sequence-type text data (1420), and set the input sequence-type text data (1430) from which these are removed as the input of the prediction model. In addition, the server can set a target label based on the "drama” token and the "music" token located between [GENRE] and [/GENRE] in the sequence-type text data (1420).
- step S1409 the server performs learning to infer a genre for input sequence-type text data using a language model-based prediction model.
- the server may perform learning for the prediction model (1440) so that the genre for the input sequence-type text data (1430) is inferred as "drama" and "music".
- the prediction model (1440) may be trained by backpropagating a loss value to infer a genre set as a target.
- parameters of the language model that derives the vector of each token in the prediction model (1440) may be updated so that the vectors of the tokens of the title, synopsis, and hashtag may reflect the semantic information of the genre token.
- the learned language model can return a vector containing genre feature information from other types of features (e.g., title, synopsis) in the sequence text data, even if there is no genre information in the sequence text data.
- features e.g., title, synopsis
- FIG. 15A illustrates an example of a procedure for performing learning on a language model according to one embodiment of the present disclosure. At least some of the operations of FIG. 15A below may be performed sequentially or in parallel. For example, some of the operations of FIG. 15A may be performed at least temporarily at the same time. At least some of the operations of FIG. 15A below will be described with reference to FIG. 15C.
- FIG. 15C illustrates an example of learning on a language model using hashtags and synopses according to one embodiment of the present disclosure.
- step S1501 the server obtains text metadata for the content.
- the server may obtain text metadata (1510) including the title, genre, director, actor, hashtag, and synopsis of the content.
- the server performs tokenization on the text metadata. Tokenizing on the text metadata can be performed in the same manner as described in step S1303 of FIG. 13.
- the server obtains sequence-type text data.
- the sequence-type text data may be obtained by adding at least one delimiter to data separated by token units.
- the sequence-type text data may be determined as in FIG. 15c.
- the server may obtain sequence-type text data (1520) by separating metadata (1510) into tokens and inserting at least one separating token and at least a special token (e.g., a genre token, a director token, an actor token, a hashtag token, etc.) into the tokens.
- a special token e.g., a genre token, a director token, an actor token, a hashtag token, etc.
- the server performs MLM-based primary learning using hashtags.
- the server masks any one hashtag token among multiple hashtag tokens located in a hashtag area of sequence-type text data, and performs primary learning to infer the masked hashtag token using a language model-based prediction model.
- the hashtag area can be identified based on [TAG] and [/TAG], which are special tokens representing hashtags.
- the server recognizes that a "touching" token and a "warm” token exist between [TAG] and [/TAG] in the sequence-type text data (1520), and replaces the "warm” token with [MASK] (1531) or replaces the "touching" token with [MASK] (1532).
- the server may mask tokens that are not dependent tokens among the plurality of tokens located in the hashtag area. As illustrated in FIG. 15c, when the “warmth” token is masked, the server may perform training on the prediction model (1540) to infer the masked hashtag token “warmth,” and when the “emotion” token is masked, the server may perform training on the prediction model (1540) to infer the masked hashtag token “emotion.” At this time, the prediction model (1540) may be trained by backpropagating a loss value to infer the masked hashtag token.
- the parameters of the language model that derives the vector of each token in the prediction model (1540) may be updated so that the vectors of the tokens of the title and the synopsis may reflect the semantic information of the masked hashtag.
- the server can obtain a first-learned language model by repeating the hashtag masking and inference operations described above multiple times for multiple content items.
- step S1509 the server performs MLM-based secondary learning using the synopsis.
- the server masks any one synopsis token among a plurality of synopsis tokens located in the synopsis area of the sequence-type text data, and performs secondary learning to infer the masked synopsis token using a language model-based prediction model.
- the synopsis area can be identified based on a separation token [SEP] and a special token [GENRE] for the genre area. For example, referring to FIG.
- the server recognizes that a " woman” token and a "prison” token exist between [SEP] and [GENRE] in the sequence-type text data (1520), and replaces the " woman” token with [MASK] (1551) or replaces the "prison” token with [MASK] (1552).
- the server can mask a token that is not a dependent token among a plurality of tokens located in the synopsis area. As illustrated in FIG. 15c, the server may perform training on the prediction model (1550) to infer the masked synopsis token " woman” when the " woman” token is masked, and may perform training on the prediction model (1550) to infer the masked synopsis token "prison” when the "prison” token is masked.
- the prediction model (1550) may include a language model learned in the first step S1507, that is, a language model learned based on a hashtag.
- the prediction model (1550) may be learned by backpropagating a loss value to infer the masked synopsis token.
- the parameters of the language model that derives the vector of each token in the prediction model (1540) may be updated so that the vectors of the tokens of the title, hashtag, or genre may reflect the semantic information of the masked synopsis token.
- the server can obtain a second-learned language model by repeating the synopsis masking and inference operations described above multiple times for multiple content items.
- FIG. 15b illustrates an example of a procedure for performing learning on a language model according to one embodiment of the present disclosure. At least some of the operations in FIG. 15b below may be performed sequentially or in parallel. For example, some of the operations in FIG. 15b may be performed at least temporarily at the same time. At least some of the operations in FIG. 15b below will be described with reference to FIG. 15c.
- the server obtains text metadata for the content.
- the server may obtain text metadata (1510) including the title, genre, director, actor, hashtag, and synopsis of the content.
- the server performs tokenization on the text metadata. Tokenizing on the text metadata can be performed in the same manner as described in step S1303 of FIG. 13.
- step S1555 the server obtains sequence-type text data.
- the sequence-type text data can be obtained by adding at least one delimiter to data separated into token units.
- step S1557 the server performs MLM-based primary learning using the synopsis.
- the server masks any one synopsis token among multiple synopsis tokens located in the synopsis area of the sequence-type text data, and performs primary learning to infer the masked synopsis token using a language model-based prediction model.
- step S1559 the server performs MLM-based secondary learning using hashtags.
- the server masks one hashtag token among multiple hashtag tokens located in the hashtag area of the sequence-type text data, and performs secondary learning to infer the masked hashtag token using a language model-based prediction model.
- the parameters of the language model can be updated so that the semantic information of the multiple hashtag tokens and the semantic information of the multiple synopsis tokens are reflected in the vectors of other tokens in the sequence-type text data. Accordingly, the language model can be trained to provide more sophisticated semantic representations by the task of inferring masked tokens as shown in FIG. 15a and FIG. 15b, thereby better identifying similarities between contents.
- the learned language model can return a vector containing information about a hashtag feature from other types of features (e.g., title, genre) in the sequence text data, even when there is a lack of hashtags or synopsis in the sequence text data.
- features e.g., title, genre
- Fig. 15a illustrates a procedure in which a server performs primary learning on a language model based on hashtag information using MLM, and then performs secondary learning on the language model based on synopsis
- Fig. 15b illustrates a procedure in which a server performs primary learning on a language model based on synopsis information using MLM, and then performs secondary learning on the language model based on hashtags.
- hashtag information of content items includes information related to a user's content preference or information that can reflect the user's content preference
- synopsis information may include not only information related to the user's content preference but also information unrelated to the user's content preference.
- the performance of the language model may vary depending on which information, hashtag information or synopsis information, is used first during language model training.
- Fig. 15a when a language model is trained based on synopsis information after being trained with hashtag information, the parameters of the language model can quickly converge to values close to the optimal values based on the hashtag information, and then be fine-tuned more based on the synopsis information.
- Fig. 15b when training with the synopsis information among the hashtag information and synopsis information first, overfitting of the trained language model can be prevented. Overfitting refers to a state in which a language model is overly adapted to training data, resulting in deterioration in performance for data other than the training data. In other words, since synopsis information includes information unrelated to the user's content preferences, it can suppress the overfitting phenomenon of the language model.
- the language model was trained based on hashtag information and synopsis information in the metadata of content items, but other types of information may be used to train the language model.
- the language model may be trained first using hashtag information based on MLM, and then trained second using genre information.
- the language model may be trained first using synopsis information based on MLM, and then trained second using genre information.
- the language model can be trained using only synopsis information of content items based on MLM.
- FIG. 16 illustrates an example of a procedure for determining the similarity between a search term and content using a learned language model according to one embodiment of the present disclosure.
- the procedure of FIG. 16 is an example of step S1203 of FIG. 12, and may be understood as a procedure for determining the similarity between a search term and a content item.
- At least some of the operations of FIG. 16 may be performed sequentially or in parallel. For example, some of the operations of FIG. 16 may be performed at least temporarily at the same time.
- the server determines a vector of a search term.
- the vector of the search term may be determined based on a language model learned in advance to infer a hashtag.
- the server may obtain a search term from a client device, perform tokenization on the obtained search term, and then insert at least one delimiter to obtain a converted search term that follows one of the input formats of Table 6.
- the server may obtain a vector corresponding to the converted search term using the learned language model.
- the server may input the converted search term into the learned language model and obtain output data of the language model to determine a vector, i.e., an embedding value.
- the learned language model may be a language model learned by the model learning unit (620) as described in FIG. 6.
- the server can determine the vector of the search word for similarity calculation by using any one of the methods of using the fuller output, the method of using the average of the last hidden state values, or the method of using the maximum value of the last hidden state values.
- the server when determining the vector of the search word for similarity calculation, can give weight to the value corresponding to the position of a specific feature among the last hidden state values.
- the server determines a vector of the content item.
- the vector of the content item can be determined based on the sequence-type text data determined using text metadata.
- the server can obtain the text metadata of the content item, tokenize the obtained text metadata, and then insert at least one delimiter to obtain the sequence-type text data.
- the server can obtain a vector corresponding to the sequence-type text data of the content item using the learned language model.
- the server can determine the vector, i.e., the embedding value, by inputting the sequence-type text data into the learned language model and obtaining the output data of the language model.
- the learned language model can be a language model learned by the model learning unit (620) as described in FIG. 6.
- the server may determine a vector of content for similarity calculation by using any one of a method using a fuller output, a method using an average of the last hidden state values, or a method using a maximum value of the last hidden state values.
- the server may assign a weight to a value corresponding to a position of a specific feature among the last hidden state values.
- step S1605 the server calculates the similarity between the search term and the content item. That is, the server can determine the similarity between the search term and the content item based on the cosine similarity algorithm. For example, the server can calculate the similarity of the vector of the search term and the vector of the content item, and determine the calculated similarity as the similarity between the search term and the content item.
- FIG. 17 illustrates another example of a procedure for searching content using a learned language model according to an embodiment of the present disclosure. At least some of the operations of FIG. 17 below may be performed sequentially or in parallel. For example, some of the operations of FIG. 17 may be performed at least temporarily at the same time. At least some of the operations of FIG. 17 below will be described with reference to FIG. 18.
- FIG. 18 illustrates an example of a search scenario according to an embodiment of the present disclosure.
- the server detects a search event.
- the search event can be detected by receiving a content search request from a client device.
- the server can detect the search event by receiving a content search request message including a search term in the form of text data from the client device.
- the server performs a text search.
- the server can search for content items corresponding to a search term in text form using a search engine.
- the processor (1810) of the server can request the search engine (1810) to search for content items corresponding to the search term by transmitting a search term in text form to the search engine (1820) for a text search, and can receive search results from the search engine (1810).
- the search engine (1810) can search for content items corresponding to words included in the search term in text form by storing and managing content items in a word-based inverted index manner.
- the search engine (1810) can provide a search result including information on the corresponding content item to the processor (1810).
- the search engine (1810) may notify the processor (1810) that there are no searched content items if there are no content items corresponding to words included in the search term.
- the search engine (1810) may be an elasticsearch-based distributed search and analysis engine.
- the search engine according to embodiments of the present invention is not limited to an elasticsearch-based engine.
- the server determines whether there are search results for the text search. For example, the server may determine whether the text results obtained from the search engine (1820) include information on at least one content item, as illustrated in FIG. 18.
- the server If there is a search result for the text search, the server generates and provides a search list based on the search result in step S1713.
- the server can generate a content search list including information on at least one content item included in the search result, and provide the generated content search list to the client device.
- the server can transmit a content search list including information on at least one content item searched through the text search to the client device.
- the server may determine a vector of the search term using the learned language model in step S1707. For example, as illustrated in FIG. 18, if there is no search result for text search, the processor (1810) of the server may determine to perform a vector-based search.
- the processor (1810) of the server may request a vector-based content search by transmitting a search term to the vector search engine (1830).
- the vector search engine (1830) may determine a vector of the search term using the language model (1832). For example, the vector search engine (1830) may obtain a search term converted into one of the input formats of Table 6 by dividing the search term into tokens and then inserting at least one delimiter.
- the vector search engine (1830) may obtain a vector of the search term by inputting the converted search term into the language model (1832).
- the language model (1832) may be a language model learned by the model learning unit (620).
- the last hidden layer embedding value of the language model itself excluding the head layer for learning (e.g., MLM head layer or text classification head layer) in the prediction model, may be used as the embedding value for the text metadata of the content.
- the server determines the similarity with the vector for each content item. That is, the server may obtain the vector for each content item, and determine the similarity between the vector of the search word and the vector for each content item.
- the vector search engine (1830) may obtain the vector for each content item using the language model (1832) as illustrated in FIG. 18.
- the vector search engine (1830) may obtain content items satisfying a specified first condition from the search engine (1820) or a DB linked to the search engine (1820), and determine the vector of the content items using the language model (1832).
- the specified first condition may include a condition related to at least one of a storage time, a storage location, and/or a classification.
- the content items satisfying the specified first condition may be all content items stored in the server, new content items additionally stored in the server within a specified period, content items corresponding to a specified classification, or content items stored in a specified location.
- the vector search engine (1830) can obtain text metadata for each content item, tokenize the obtained text metadata, and then insert at least one delimiter to obtain sequence-type text data for each content item.
- the vector search engine (1830) can obtain a vector corresponding to the sequence-type text data for each content item by using a learned language model (1832).
- the vector search engine (1830) may obtain vectors of previously stored content items from a storage within the vector search engine (1830), a DB linked to the vector search engine (1830), a search engine (1820), or a DB linked to the search engine (1820).
- the vector search engine (1830) may determine the similarity between the vector of the search word and the vector for each content item using a similarity calculation algorithm.
- the similarity between the vector of the search word and the vector for each content item may be determined as the similarity between the search word and the content item.
- the server may generate and provide a search list based on the similarity. That is, the server may determine at least one content item similar to the search term based on the similarity between the search term and the content item, and generate a content search list including information of the determined at least one content item. For example, as illustrated in FIG. 18, the vector search engine (1830) may select a specified number of content items or content items having a similarity greater than a threshold value in descending order of similarity with the search term among content items satisfying a specified first condition. Then, the vector search engine (1830) may provide a vector-based search result including information of the selected content items to the processor (1810).
- the processor (1830) may generate a content search list including information of at least one content item included in the vector-based search result, and transmit the generated content search list to the client device.
- the format of the specific content search list may vary depending on the environment, service, etc. that provides the content search result.
- the server performs a text search for the search term, and if there is no text search result, that is, if the text search is performed but at least one content item is not searched, a vector-based search is performed.
- the server may perform a vector-based search even if the text search result for the search term does not satisfy a specified search quality.
- the specified search quality may include a condition for the number of content items to be searched, a condition for a text matching score of the content items to be searched, or a condition for an actual click rate by the number of user searches for the content items to be searched.
- the server may perform a vector-based search even if a specified number or less of content items are searched as a text search result for the search term. For example, if the number of content items obtained through the text search for the search term is less than or equal to the specified number, the server may perform a vector-based search using a language model to additionally search at least one content item. As another example, if the text matching score of the content item retrieved by the text search is less than or equal to a specified score, the server may perform a vector-based search to additionally retrieve at least one content item.
- the text matching score refers to a score indicating the similarity between the search term and the searched content item, and may be calculated based on TF-IDF (Term Frequency-Inverse Document Frequency) or BM25 (Best Matching 25).
- the server may perform a vector-based search if the actual click rate per the number of searches of the user for the searched content item is less than or equal to a specified value.
- the actual click rate per the number of searches of the user may be calculated based on the search history of the user and/or the feedback history of the user regarding the search results.
- the actual click rate per the number of searches of the user may be calculated based on the feedback history from the client device indicating whether the user clicked (or selected) the content item after the information regarding the searched content item was previously provided to the client device as a result for the same search term or a similar or different search term.
- the server can generate a content search list including information on content items acquired through text search and information on at least one content item additionally acquired through vector-based search.
- the server may store the search term as an NR (No result) search term.
- the server may transmit a content search list for the search term to the client device, and then receive feedback from the client device as to whether at least one content item in the content search list has been clicked (or selected) by the user. If at least one content item in the content search list has not been clicked, the server may store the search term corresponding to the content search list as an NR search term.
- the NR search term may be stored for each user and/or each client device.
- the server may calculate the similarity between the NR search term and the new content item.
- the similarity between the NR search term and the content item may be calculated based on a vector of the NR search term and a vector of the new content item obtained using a learned language model.
- the server may transmit a recommendation notification message recommending the new content item to a client device corresponding to a user of the NR search term.
- the recommendation notification message may be provided in the form of a push message.
- the server may determine the new content item as a recommended content item of the NR search term and transmit a push message to the client device notifying that a new content item related to a search term previously searched by the user exists.
- the server may delete an NR search term from the server if a specified deletion condition for the NR search term is satisfied. For example, if the server transmits a recommendation notification message related to a first NR search term to a client device, and then receives a feedback message from the client device indicating that a new content item in the recommendation notification message related to the first NR search term has been clicked or selected by the user, the server may delete the first NR search term from the server. In another example, the server may delete the second NR search term from the server if an operation of transmitting a recommendation notification message related to the second NR search term to the client device is performed a specified number of times. In yet another example, the server may delete the third NR search term from the server if the storage period of the third NR search term exceeds a specified period, regardless of whether a recommendation notification message related to the third NR search term has been transmitted.
- the server can calculate the similarity between a search term and content using a Python module and/or an ElisticSearch module.
- the similarity between a search term and content can be calculated in a Python module as illustrated in FIG. 19, or in an ElisticSearch module as illustrated in FIG. 20.
- FIG. 19 illustrates an example of performing a search based on a Python module according to an embodiment of the present disclosure.
- a search client (1910) transmits a semantic search term, or a query including a semantic search term, to a language model (1930) via a REST (Representational State Transfer) API (Application Programming Interface) (1920).
- the semantic search term may be a natural language including at least one keyword, such as “a suspenseful movie.” Since the semantic search term must be processed in real time, it may be provided to the language model (1930) of the Python module via the REST API (1920).
- the REST API (1920) refers to an application programming interface that complies with the constraints of the REST architectural style and allows interaction with a RESTful web service.
- the language model (1930) calculates a vector of a semantic search term received through the REST API (1920), and calculates the similarity between the vector of the semantic search term and the content vector.
- the language model (1930) is a CBF model that processes natural language, and may be, for example, RoBERTa.
- the language model (1930) may be learned based on text metadata of the content.
- the language model (1930) may store vector values of content items used for learning in the DB (1940).
- the language model (1930) may calculate vector values of content items when a specified event occurs, and store the calculated vector values of the content items in the DB (1940).
- the language model (1930) may use vector values for each content item stored in the DB (1940).
- the language model (1930) may select at least one content item based on the similarity between the semantic search term and the content items, and provide a content search list including information on the selected content items to the search client (1910) via the REST API (1920).
- the information on the content items may include at least one of content item identification information and similarity information with the search term.
- the Python module can perform post-processing logic for selecting at least one content item based on the similarity between the semantic search term and the content items, and then performing filtering on the at least one selected content item. For example, the Python module can generate a content search list excluding the unpopular content item or the user-disliked content item by filtering out the unpopular content item or the user-disliked content item from among the at least one selected content item.
- the method of calculating the similarity between search terms and content in a Python module has the advantage of being easy to manage, since the Python module performs all operations for vector-based search.
- FIG. 20 illustrates an example of performing a search based on an elastic search engine according to an embodiment of the present disclosure.
- a search client (2010) transmits a semantic search term, or a query including a semantic search term, to Elasticsearch (2020).
- the semantic search term may be “a suspenseful movie.”
- Elasticsearch (2020) transmits the semantic search term, or a query including a semantic search term, to a language model (2040) of a Python module via a REST API (2030).
- the language model (2040) calculates a vector of semantic search terms received through the REST API (2030) and transmits the vector of semantic search terms to Elasticsearch (2020) through the REST API (2030).
- the language model (2040) is a CBF model that processes natural language, and may be, for example, RoBERTa.
- the language model (2040) may be learned based on text metadata of the content.
- Elasticsearch (2020) calculates the similarity between the vector of a semantic search term and the vector of a content.
- Elasticsearch (2020) can obtain vector values for each content item that are previously stored in the DB (2050), and calculate the similarity between the vector of a semantic search term and the vector of a content using the obtained vector values for each content item. For example, Elasticsearch (2020) must obtain vectors for each content item that are in sync with the language model (2040) from the DB (2050) before obtaining vector values for semantic search terms from the language model (2030) through the REST API (2030).
- Elasticsearch (2020) can calculate the similarity between the vector of a semantic search term obtained through the REST API (2030) and the vectors for each content item that have been previously obtained.
- the DB (2050) can obtain and store vector values for content items from the language model (2030).
- Elasticsearch (2020) may select at least one content item based on the similarity between the semantic search term and the content items, and provide a content search list including information on the selected content items to the search client (2010).
- the information on the content items may include at least one of content item identification information or similarity information with the search term.
- Elasticsearch (2020) may perform post-processing logic for performing filtering on at least one selected content item after selecting at least one content item based on the similarity between the semantic search term and the content items.
- Elasticsearch (2020) may filter out unpopular content items or user-unpreferred content items among the at least one selected content item, thereby generating a content search list excluding unpopular content items or user-unpreferred content items.
- Elasticsearch (2020) may perform filtering on at least one selected content item by utilizing various content item-specific features that it possesses.
- the method of calculating the similarity between the vector of a search term and the content in Elasticsearch has the advantage of obtaining high service performance (e.g., latency or throughput).
- the elisticsearch of FIGS. 19 and 20 is only an example of a search engine module, and embodiments of the present disclosure are not limited thereto.
- various search engine modules e.g., Lucene, Solr, etc.
- functions required for vector search in an inverted index structure e.g., cosine similarity search function, etc.
- the REST API of FIGS. 19 and 20 is only an example of an API, and embodiments of the present disclosure are not limited thereto.
- another API such as a Simple Object Access Protocol (SOAP) API, may be used instead of the REST API.
- SOAP Simple Object Access Protocol
- the vector of the search word was acquired in real time from the server through the language model.
- the vector of the search word may be pre-calculated through the language model and then stored in the server.
- the server may store vector values of search words satisfying a specified second condition in the DB.
- the specified second condition may include conditions on the number of search requests and/or search frequency. For example, if the number of search requests for the first search word is greater than or equal to a specified number of times, the server may store the vector value of the first search word in the DB.
- the server may store the vector value of the second search word in the DB. In this case, the server may generate a content search list using the vector of the search word stored in the DB.
- FIG. 21a illustrates an example of the structure of a transformer applicable to an embodiment of the present disclosure
- FIG. 21b illustrates an example of the detailed structure of encoder and decoder blocks of a transformer applicable to an embodiment of the present disclosure.
- a transformer (2100) may include N encoder blocks (2110-1 to 2110-N) and N decoder blocks (2120-1 to 2120-N).
- Each of the N encoder blocks (2110-1 to 2110-N) may include a self-attention block (2111) and a feed forward block (or neural network) (2113).
- Each of the N decoder blocks (2120-1 to 2120-N) may include a self-attention block (2121), an encoder-decoder attention block (2123), and a feed forward block (2125).
- the input of the transformer (2100) can be tokenized, embedded, and added with a positional encoding vector, and then input to the first encoder block (2110-1) located at the bottom among the N encoder blocks (2110-1 to 2110-N).
- Each self-attention block (2111) of the N encoder blocks (2110-1 to 1810-N) can determine a word to focus on among several input words.
- the self-attention block (2111) can multiply the input embedding vector by three learnable matrices, respectively, to generate a query vector, a key vector, and a value vector.
- the self-attention block (2111) may be a multi-headed attention block having multiple attention heads and representing each vector in a different representation space for each purpose by using multiple query vectors, key vectors, and value vectors.
- the output of the self-attention block (2111) may pass through the neural network of the feed forward block (2113) and be input to the next encoder block (e.g., the second encoder block (2110-2)).
- the output of the Nth encoder block (2110-N) located at the top among the N encoder blocks (2110-1 to 2110-N) can be a key vector and a value vector, which are attention vectors, and these can be input to the encoder-decoder attention block (2123) of each of the N decoder blocks (2120-1 to 2120-N).
- the self-attention block (2121) of each of the N decoder blocks (2120-1 to 2120-N) is similar to the self-attention block (2111) of each of the N encoder blocks (2110-1 to 2110-N).
- the self-attention block (2121) of each of the N decoder blocks (2120-1 to 2120-N) differs from the self-attention block (2111) of each of the N encoder blocks (2110-1 to 2110-N) in that it performs masking so that it can only attend to positions previous to the current position within the output sequence.
- the encoder-decoder attention block (2123) of each of the N decoder blocks (2120-1 to 2120-N) can generate an output by taking as input a query vector output from a self-attention block (2121) and a key vector and a value vector output from an Nth encoder block (2110-N).
- An output vector of an Nth decoder block (2120-N) located at the top among N decoder blocks (2120-1 to 2120-N) can be input to a linear layer (2130) and a softmax layer (2140).
- the linear layer (2130) and the softmax layer (2140) can change the output vector of the Nth decoder block (2120-N) into a single word.
- the linear layer (2130) is configured as a fully-connected neural network and can project the output vector of the Nth decoder block (2120-N) into a logits vector, which is a vector of a larger size. Each cell of the projected logits vector can have a score for each corresponding word.
- the softmax layer (2140) can convert the scores of each cell into a probability.
- the transformed probability values of each cell all have positive values, and the sum of each probability value can be 1.
- the word corresponding to the cell with the highest probability value can be output as the final result of the softmax layer (2140).
- the output of the softmax layer (2140) can be re-embedded and added to the positional encoding vector, and then input to the first decoder block (2120-1) located at the bottom.
- the sub-blocks included in each of the N encoder blocks (2110-1 to 2110-N) and the N decoder blocks (2120-1 to 2120-N) may be connected in a residual connection manner, and a layer-normalization (or Add & normalize) block may be included between each of the sub-blocks.
- the layer-normalization block may combine the inputs and outputs of the self-attention blocks (2111, 2121) to prevent excessive data changes in one layer.
- the transformer (2100) is a neural network that learns the context and meaning of a sentence by tracking the relationship between words in the sentence, and can mathematically find patterns between elements without a labeled data set. Therefore, the transformer (2100) does not require a process of generating a data set, and can be fast because it is suitable for parallel processing.
- RNN Recurrent Neural Network
- RNN has the characteristic of sequentially inputting and processing words according to their positions, it can have position information of each word, and thus has been widely utilized in the field of natural language processing.
- RNN has the problem of being difficult to process in parallel and having long-term dependency.
- Transformer can capture the dependency between input/output by using the attention mechanism instead of RNN.
- Transformer applies attention to the position of each word in the encoder block during learning, that is, emphasizes the value that is most closely related to the query, and uses a masking technique in the decoder block, so parallel processing is possible.
- the sizes of the encoder/decoder input/output of the transformer, the number of encoders/decoders, the number of attention heads, and/or the size of the hidden layer of the feedforward neural network are hyperparameters that can be changed by the user.
- the BERT model is a transformer-based language model as described above, and can be used by replacing or deleting some components of the transformer.
- Fig. 22 illustrates an example of the structure of a BERT model applicable to an embodiment of the present disclosure.
- the BERT model (2200) may be a model that uses encoder blocks (2110-1 to 2110-N) except for decoder blocks (2120-1 to 2120-N) in the transformer, as illustrated in Fig. 22.
- a [CLS] token can be placed at the beginning of an input sentence, and a [SEP] token can be used at the end of the sentence to separate the sentences.
- the output embedding after going through the BERT operation can be an embedding that takes into account all the contexts of the sentence.
- [CLS] is a simple embedding vector that has passed the embedding layer when inputting BERT, but when it passes through the BERT model, it can become a vector with context information that takes into account all the word vectors in the sentence.
- Natural language processing using a transformer-based model such as the BERT model can be performed in two stages.
- the second stage can include a pre-training stage in which a giant encoder embeds input sentences to model the language, and a fine-tuning stage in which the model learned through the pre-training is used to perform various natural language processing tasks.
- the BERT model is a pre-trained model, and since it performs pre-training embedding before performing a specific task, it is receiving attention as a model that can further improve the performance of the task than the existing embedding technology. If we look at the modeling process that applies the BERT model, pre-training is performed using the unsupervised learning method, and a large corpus is embedded by the encoder, and this is transferred and fine-tuned to perform learning suitable for the purpose, thereby performing the task. Another feature of the BERT model is that it considers the context before and after the sentence by applying a bidirectional model, so it can exhibit higher accuracy than before.
- the language model learned according to the embodiment of the present disclosure acquires a vector of content by comprehensively considering not only hashtag information but also semantic information and/or contextual information of other types of features, and calculates the similarity between the search term and the content based on the vector. Therefore, the method of determining the similarity between the search term and the content based on the language model according to the embodiment of the present disclosure can be said to be different from simply filtering the content having metadata similar to the search term.
- various embodiments of the present invention can be implemented by hardware, firmware, software, or a combination thereof.
- it can be implemented by one or more ASICs (Application Specific Integrated Circuits), DSPs (Digital Signal Processors), DSPDs (Digital Signal Processing Devices), PLDs (Programmable Logic Devices), FPGAs (Field Programmable Gate Arrays), general processors, controllers, microcontrollers, microprocessors, etc.
- ASICs Application Specific Integrated Circuits
- DSPs Digital Signal Processors
- DSPDs Digital Signal Processing Devices
- PLDs Programmable Logic Devices
- FPGAs Field Programmable Gate Arrays
- general processors controllers, microcontrollers, microprocessors, etc.
- the scope of the present invention includes software or machine-executable instructions (e.g., an operating system, an application, firmware, a program, etc.) that cause operations according to the methods of various embodiments to be executed on a device or a computer, and a non-transitory computer-readable medium having such software or instructions stored thereon and being executable on the device or computer.
- software or machine-executable instructions e.g., an operating system, an application, firmware, a program, etc.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Library & Information Science (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 개시는 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 것으로, 서버의 동작 방법은, 검색어를 획득하는 단계, 콘텐츠 아이템들의 메타데이터에 포함되는 시놉시스 정보를 기반으로 학습된 언어모델을 이용하여, 상기 검색어에 대응하는 제1 벡터를 결정하는 단계, 상기 검색어에 대응되는 제1 벡터와 제1 콘텐츠 아이템의 제2 벡터를 기반으로 상기 검색어와 상기 제1 콘텐츠 아이템 간의 유사도를 결정하는 단계, 및 상기 유사도에 기반하여 선택된 상기 제1 콘텐츠 아이템을 포함하는 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 제공하는 단계를 포함할 수 있다.
Description
본 개시는 콘텐츠 스트리밍 시스템에 관한 것으로, 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치에 관한 것이다.
다양한 기술의 발전 및 소비의 트랜드 변화에 따라, 콘텐츠 공급 및 소비 방식에 큰 변화가 발생하였다. 디지털 기술, 컴퓨터 기술, 인터넷/통신 기술 등의 발전은 콘텐츠의 종류 및 생산 주체에 대한 경계를 허물어지게 하였으며, 이는 콘텐츠에 대한 생산 및 소비 패턴의 큰 변화를 야기하였다. 일반인들도 콘텐츠를 창작 및 배포하는 것을 가능케 하는 플랫폼들이 생겨났다. 또한, 다양한 콘텐츠로의 접근 용이성이 확보되었고, 소비 방식에 다양한 옵션들이 제공되기 시작하였다.
이러한 콘텐츠 산업의 많은 변화들의 가운데, OTT(over the top) 서비스가 존재한다. OTT 서비스는 인터넷 및 모바일 통신 기반의 미디어 플랫폼으로서, 기존의 방송 서비스를 넘어서 별도의 셋탑 박스와 같은 장비 없이도 다양한 콘텐츠들을 소비자들에게 제공한다. OTT 서비스의 개념은 최초 영화, 텔레비전 프로그램 등을 VOD(video on demand) 방식으로 제공하는 것으로 시작하였으나, 현재 OTT 서비스 제공자의 자체 제작 콘텐츠를 제공하는 것은 물론, 모바일 플랫폼까지도 그 영역을 확대하는 등 여전히 확장 중에 있는 서비스이다.
본 개시는 콘텐츠 스트리밍 시스템에서 콘텐츠를 효과적으로 검색하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠 스트리밍 시스템에서 검색어와 콘텐츠의 유사도를 기반으로 콘텐츠를 검색하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠 스트리밍 시스템에서 언어모델을 이용하여 검색어와 콘텐츠의 유사도를 결정하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠의 메타데이터를 기반으로 학습된 언어모델을 이용하여 검색어의 벡터를 결정하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠의 해시태그를 기반으로 학습된 언어모델을 이용하여 검색어의 벡터를 결정하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠의 장르를 기반으로 학습된 언어모델을 이용하여 검색어의 벡터를 결정하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠의 시놉시스를 기반으로 학습된 언어모델을 이용하여 검색어의 벡터를 결정하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠의 해시태그 및 시놉시스를 기반으로 학습된 언어모델을 이용하여 검색어의 벡터를 결정하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 콘텐츠의 메타데이터를 기반으로 학습된 언어모델을 이용하여 콘텐츠의 벡터를 결정하기 위한 방법 및 장치를 제공할 수 있다.
본 개시는 검색어의 벡터와 콘텐츠의 벡터 간의 유사도에 기반하여 콘텐츠 검색 목록을 생성 및 제공하기 위한 방법 및 장치를 제공할 수 있다.
본 개시에서 이루고자 하는 기술적 목적들은 이상에서 언급한 사항들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 이하 설명할 본 개시의 실시예들로부터 본 개시의 기술 구성이 적용되는 기술분야에서 통상의 지식을 가진 자에 의해 고려될 수 있다.
본 개시의 일 예에 따른, 콘텐츠 스트리밍 시스템에서 서버의 동작 방법은, 검색어를 획득하는 단계, 콘텐츠 아이템들의 메타데이터에 포함되는 시놉시스 정보를 기반으로 학습된 언어모델을 이용하여, 상기 검색어에 대응하는 제1 벡터를 결정하는 단계, 상기 검색어에 대응되는 제1 벡터와 제1 콘텐츠 아이템의 제2 벡터를 기반으로 상기 검색어와 상기 제1 콘텐츠 아이템 간의 유사도를 결정하는 단계, 및 상기 유사도에 기반하여 선택된 상기 제1 콘텐츠 아이템을 포함하는 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 제공하는 단계를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 제1 콘텐츠 아이템의 제2 벡터는 상기 시놉시스 정보를 기반으로 학습된 언어모델을 통해 획득될 수 있다.
본 개시의 일 예에 따르면, 상기 제1 콘텐츠 아이템의 제2 벡터는, 상기 제1 콘텐츠 아이템의 제1 메타데이터에 포함되는 정보를 포함하는 시퀀스형 텍스트 데이터를 상기 시놉시스 정보를 기반으로 학습된 언어모델에 입력하여 획득될 수 있다.
본 개시의 일 예에 따르면, 상기 언어모델은, MLM(masked language model)에 기반하여 상기 콘텐츠 아이템들의 시놉시스 정보를 예측하는 훈련을 통해 학습될 수 있다.
본 개시의 일 예에 따르면, 상기 언어모델은, 상기 MLM에 기반하여 상기 콘텐츠 아이템들의 시놉시스 정보를 예측하는 훈련을 통해 1차 학습되고, 상기 MLM에 기반하여 상기 콘텐츠 아이템들의 해시태그 정보를 예측하는 훈련을 통해 2차 학습될 수 있다.
본 개시의 일 예에 따르면, 상기 언어모델은, 상기 MLM에 기반하여 상기 콘텐츠 아이템들의 해시태그 정보를 예측하는 훈련을 통해 1차 학습되고, 상기 MLM에 기반하여 상기 콘텐츠 아이템들의 시놉시스 정보를 예측하는 훈련을 통해 2차 학습될 수 있다.
본 개시의 일 예에 따르면, 상기 검색어에 대응하는 제1 벡터를 결정하는 단계는, 상기 검색어를 토큰 단위로 구분하는 단계, 상기 토큰 단위로 구분된 검색어에 적어도 하나의 구분자를 삽입하여 변환된 검색어를 획득하는 단계, 및 상기 변환된 검색어를 상기 언어모델에 입력하여 상기 제1 벡터를 획득하는 단계를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 변환된 검색어는, 분리 토큰 또는 스페셜 토큰 중 적어도 하나를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 콘텐츠 아이템들의 내용을 설명하는 텍스트 메타데이터를 시퀀스형 텍스트 데이터로 변환하는 단계, 상기 시퀀스형 텍스트 데이터의 시놉시스 영역에 위치한 시놉시스 토큰을 마스킹(making)하는 단계, 상기 마스킹된 시놉시스 토큰을 예측하도록 상기 언어모델에 대한 훈련을 수행하는 단계를 더 포함하며, 상기 텍스트 메타데이터는 제목, 시놉시스, 복합 장르, 감독, 배우, 또는 해시태그 정보 중 적어도 하나를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 텍스트 메타데이터를 상기 시퀀스형 텍스트 데이터로 변환하는 단계는, 상기 텍스트 메타데이터를 복수의 토큰들로 구분하는 단계, 및 상기 토큰들 사이에 적어도 하나의 구분자를 삽입함으로써 상기 시퀀스형 텍스트 데이터를 생성하는 단계를 포함하며, 상기 적어도 하나의 구분자는, 서로 다른 종류의 피처들을 구분하기 위한 분리 토큰 및 특정 피처를 나타내기 위해 특정 피처의 앞 및 뒤에 삽입되는 스페셜 토큰 중 적어도 하나를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 시놉시스 토큰을 마스킹하는 단계는, 상기 시놉시스 영역에 위치한 복수의 시놉시스 토큰들 중에서 비의존적인 토큰을 선택하는 단계, 및 상기 선택된 비의존적인 토큰을 마스킹하는 단계를 포함하며, 상기 비의존적인 토큰은, 지정된 기호로 시작하지 아니하는 토큰일 수 있다.
본 개시의 일 예에 따르면, 상기훈련은, 예측모델을 이용하여 수행되며, 상기 예측모델은, 마스킹된 시놉시스 토큰을 포함하는 시퀀스형 텍스트 데이터를 입력으로 취하고, 상기 시퀀스형 텍스트 데이터에 대응되는 벡터 값들을 출력하는 상기 언어모델, 및 상기 언어모델에서 출력되는 적어도 하나의 벡터 값에 대응되는 적어도 하나의 입력 토큰을 예측하도록 구성된 MLM(masked language model) 헤드 레이어를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 제1 벡터 및 상기 제2 벡터 각각은, 상기 학습된 언어모델의 마지막 은닉층의 출력 벡터 값들 중 지정된 피처(feature)의 위치에 해당하는 벡터 값에 가중치를 부여함으로써 결정될 수 있다.
본 개시의 일 예에 따르면, 상기 검색어에 대응되는 제1 벡터와 복수의 콘텐츠 아이템들 각각의 벡터를 기반으로, 상기 검색어와 상기 복수의 콘텐츠 아이템들 간의 유사도를 결정하는 단계를 더 포함하며, 상기 콘텐츠 목록을 제공하는 단계는, 상기 제1 콘텐츠 아이템 및 상기 복수의 콘텐츠 아이템들 중 상기 검색어와의 유사도에 대한 내림차순으로 상기 제1 콘텐츠 아이템을 포함하는 둘 이상의 콘텐츠 아이템을 선택하는 단계, 및 상기 선택된 둘 이상의 콘텐츠 아이템의 정보를 포함하는 상기 콘텐츠 목록을 제공하는 단계를 포함할 수 있다.
본 개시의 일 예에 따르면, 상기 검색어에 대응하는 제1 벡터를 결정하기 이전에, 상기 검색어를 기반으로 텍스트 검색을 수행하는 단계를 더 포함하며, 상기 텍스트 검색을 통해 획득된 결과가 지정된 조건을 만족하지 않는 경우, 상기 검색어에 대응하는 제1 벡터를 결정하는 단계를 수행할 수 있다.
본 개시의 일 예에 따르면, 상기 지정된 조건은, 적어도 하나의 콘텐츠 아이템이 검색되는지 여부, 또는 검색된 콘텐츠 아이템의 개수 중 적어도 하나에 대한 조건일 수 있다.
본 개시의 일 예에 따른, 콘텐츠 스트리밍 시스템에서 서버는, 적어도 하나의 클라이언트 장치와 신호를 송수신하는 통신부, 및 상기 통신부와 전기적으로 연결된 프로세서를 포함하며, 상기 프로세서는, 검색어를 획득하고, 콘텐츠 아이템들의 메타데이터에 포함되는 시놉시스 정보를 기반으로 학습된 언어모델을 이용하여, 상기 검색어에 대응하는 제1 벡터를 결정하고, 상기 검색어에 대응되는 제1 벡터와 제1 콘텐츠 아이템의 제2 벡터를 기반으로 상기 검색어와 상기 제1 콘텐츠 아이템 간의 유사도를 결정하고, 상기 유사도에 기반하여 선택된 상기 제1 콘텐츠 아이템을 포함하는 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 제공할 수 있다.
본 개시의 일 예에 따른 기록 매체에 저장된 프로그램은 프로세서에 의해 동작되면 전술한 방법들 중 어느 하나를 실행할 수 있다.
본 개시에 대하여 위에서 간략하게 요약된 특징들은 후술하는 본 개시의 상세한 설명의 예시적인 양상일 뿐이며, 본 개시의 범위를 제한하는 것은 아니다.
본 개시에 따르면, 검색어와 유사한 콘텐츠들을 검색할 수 있다.
본 개시에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 개시의 일 실시예에 따른 콘텐츠 스트리밍 시스템을 도시한다.
도 2는 본 개시의 일 실시예에 따른 클라이언트 장치의 구조를 도시한다.
도 3는 본 개시의 일 실시예에 따른 서버의 구조를 도시한다.
도 4는 본 개시의 일 실시예에 따른 콘텐츠 스트리밍 서비스의 개념을 도시한다.
도 5는 벡터들의 상대적 관계의 예를 도시한다.
도 6은 본 개시의 일 실시예에 따라 콘텐츠를 검색하는 서버의 구조의 예를 도시한다.
도 7a 및 도 7b는 본 개시의 일 실시예에 따른 모델 학습부의 구조의 예를 도시한다.
도 8은 본 개시의 일 실시예에 따라 콘텐츠의 텍스트 메타데이터를 시퀀스형 텍스트 데이터로 변환하는 예를 도시한다.
도 9a 및 도 9b는 본 개시의 일 실시예에 따른 언어모델의 학습 예를 도시한다.
도 9c는 본 개시의 일 실시예에 따른 예측모델의 구조의 예를 도시한다.
도 10a는 본 개시의 일 실시예에 따른 언어모델의 학습 예를 도시한다.
도 10b는 본 개시의 일 실시예에 따른 예측모델의 입/출력 구조의 예를 도시한다.
도 10c는 본 개시에 적용 가능한 멀티 클래스 예측 모델 및 멀티 레이블 예측 모델의 개념을 도시한다.
도 11은 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 검색어와 콘텐츠 간의 유사도를 계산하는 예를 도시한다.
도 12는 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 콘텐츠를 검색하는 절차의 예를 도시한다.
도 13a는 본 개시의 일 실시예에 따른 언어모델에 대한 학습을 수행하는 절차의 예를 도시한다.
도 13b는 본 개시의 일 실시예에 따라 해시태그 예측을 이용하는 언어모델의 학습의 예를 도시한다.
도 14a는 본 개시의 일 실시예에 따른 언어모델에 대한 학습을 수행하는 절차의 예를 도시한다.
도 14b는 본 개시의 일 실시예에 따라 장르 예측을 이용하는 언어모델의 학습의 예를 도시한다.
도 15a는 본 개시의 일 실시예에 따른 언어모델에 대한 학습을 수행하는 절차의 예를 도시한다.
도 15b는 본 개시의 일 실시예에 따른 언어모델에 대한 학습을 수행하는 절차의 예를 도시한다.
도 15c는 본 개시의 일 실시예에 따라 해시태그 및 시놉시스를 이용하는 언어모델의 학습의 예를 도시한다.
도 16은 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 검색어와 콘텐츠의 유사도를 결정하는 절차의 예를 도시한다.
도 17은 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 콘텐츠를 검색하는 절차의 구체적인 예를 도시한다.
도 18은 본 개시의 일 실시예에 따른 검색 시나리오의 예를 도시한다.
도 19는 본 개시의 일 실시예에 따른 파이썬 모듈을 기반으로 검색을 수행하는 예를 도시한다.
도 20은 본 개시의 일 실시예에 따른 엘라스틱 검색 엔진을 기반으로 검색을 수행하는 예를 도시한다.
도 21a는 본 개시의 실시예에 적용 가능한 트랜스포머의 구조의 예를 도시한다.
도 21b는 본 개시의 실시예에 적용 가능한 트랜스포머의 인코더 및 디코더 블록들의 상세 구조의 예를 도시한다.
도 22는 본 개시의 실시예에 적용 가능한 BERT 모델의 구조의 예를 도시한다.
이하에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다.
본 발명의 실시예를 설명함에 있어서 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그에 대한 상세한 설명은 생략한다. 그리고, 도면에서 본 발명에 대한 설명과 관계없는 부분은 생략하였으며, 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도면에 표시되고 아래에 설명되는 기능 블록들은 가능한 구현의 예들일 뿐이다. 다른 구현들에서는 상세한 설명의 사상 및 범위를 벗어나지 않는 범위에서 다른 기능 블록들이 사용될 수 있다. 또한, 본 발명의 하나 이상의 기능 블록이 개별 블록들로 표시되지만, 본 발명의 기능 블록들 중 하나 이상은 동일 기능을 실행하는 다양한 하드웨어 및 소프트웨어 구성들의 조합일 수 있다.
또한, 어떤 구성요소들을 포함한다는 표현은 "개방형"의 표현으로서 해당 구성요소들이 존재하는 것을 단순히 지칭할 뿐이며, 추가적인 구성요소들을 배제하는 것으로 이해되어서는 안 된다. 나아가 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어"있다고 언급될 때에는, 그 다른 구성요소에 직접적으로 연결 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
또한, 문맥상 명백하게 다르게 표현되지 아니하는 한, 객체에 대한 단수의 표현은 복수의 표현으로 이해될 수 있다. 본 개시에서, "A 또는 B" 또는 "A 및/또는 B 중 적어도 하나" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함하는 것으로 이해될 수 있다. "제1", "제2", "제3" 등의 표현들은 해당 객체를, 순서 또는 중요도에 무관하게 수식할 수 있으며, 하나의 객체를 동종의 다른 객체와 구분하기 위해 사용될 뿐이다.
또한, 본 개시에서, "~하도록 구성된(configured to)"은, 상황에 따라, 하드웨어적 또는 소프트웨어적으로 "~에 적합한", "~하는 능력을 가지는", "~하도록 변경된", "~하도록 만들어진", "~를 할 수 있는", "~하도록 설계된" 중 어느 하나의 표현과 기술적으로 동등한 의미를 가지는 것으로 이해될 수 있고, 상호 대체될 수 있다.
본 개시는 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 것으로, 구체적으로 콘텐츠의 텍스트 형태의 메타데이터를 기반으로 학습된 언어모델을 이용하여 콘텐츠를 검색하는 기술에 대해 설명한다. 특히, 본 개시는 콘텐츠의 메타데이터를 기반으로 언어모델을 학습시키고, 학습된 언어모델을 이용하여 검색어와 콘텐츠 간의 유사도를 결정하는 다양한 실시예들을 제시한다.
도 1은 본 개시의 일 실시예에 따른 콘텐츠 스트리밍 시스템을 도시한다. 도 1은 콘텐츠 스트리밍, 콘텐츠 관련 정보 제공 등 콘텐츠에 관련된 서비스를 제공하기 위한 시스템 및 그 시스템에 속하는 엔티티(entity)들을 예시한다. 이하 본 개시에서, 콘텐츠에 관련된 다양한 서비스들은 '콘텐츠 서비스' 또는 이와 동등한 기술적 의미를 가지는 다른 용어로 지칭될 수 있다.
도 1을 참고하면, 콘텐츠 스트리밍 시스템은 클라이언트(client) 장치(110) 및 서버(120)를 포함할 수 있다. 여기서, 클라이언트 장치(110)는 3개의 클라이언트 장치들(110-1 내지 110-3)의 집합으로 예시되었으나, 콘텐츠 스트리밍 시스템은 2개 이하 또는 4개 이상의 클라이언트 장치들을 포함할 수 있다. 또한, 서버(120)는 1개로 예시되었으나, 콘텐츠 스트리밍 시스템은 다양한 기능들을 분담하며 상호 작용하는 복수의 서버들을 포함할 수 있다.
클라이언트 장치(110)는 콘텐츠를 수신 및 표시한다. 클라이언트 장치(110)는 네트워크를 통해 서버(120)에 접속한 후, 서버(120)로부터 스트리밍되는 콘텐츠를 수신할 수 있다. 즉, 클라이언트 장치(110)는 서버(120)에 의해 제공되는 콘텐츠 서비스를 이용하기 위해 설계된 클라이언트 소프트웨어 또는 어플리케이션이 설치된 하드웨어이며, 설치된 소프트웨어 또는 어플리케이션을 통해 서버(120)와 상호작용할 수 있다. 클라이언트 장치(110)는 다양한 형태의 장치들로 구현될 수 있다. 예를 들어, 클라이언트 장치(110)는 이동 가능한 휴대용 장치, 이동 가능하지만 사용 중에는 고정되는 것이 일반적인 장치, 특정 위치에 고정적으로 설치되는 장치 중 하나일 수 있다.
구체적으로, 클라이언트 장치(110)는 스마트폰(110-1), 데스크탑 컴퓨터(110-2), 태블릿 PC, 랩탑 PC, 넷북 컴퓨터, 워크스테이션, 서버, PDA(personal data assistant), PMP(portable multimedia player), 카메라, 또는 웨어러블 장치 중 적어도 하나의 형태로 구현될 수 있다. 여기서, 웨어러블 장치는 액세서리형(예: 시계, 반지, 팔찌, 발찌, 목걸이, 안경, 콘택트 렌즈, HMD(head-mounted-device)), 의복형, 신체 부착형(예: 스킨 패드 또는 문신), 생체 이식형 회로 중 적어도 하나의 형태로 구현될 수 있다. 또한, 클라이언트 장치(110)는 가전 제품으로서, 예를 들어, 텔레비전(110-3), DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기 중 적어도 하나의 형태로 구현될 수 있다.
서버(120)는 콘텐츠 서비스를 제공하기 위한 다양한 기능들을 수행한다. 다시 말해, 서버(120)는 다양한 기능들을 이용하여 클라이언트 장치(110)에게 콘텐츠 스트리밍 및 다양한 콘텐츠에 관련된 서비스들을 제공할 수 있다. 구체적으로, 서버(120)는 콘텐츠를 스트리밍 가능하도록 데이터화하고, 네트워크를 통해 클라이언트 장치(110)로 송신할 수 있다. 이를 위해, 서버(120)는 콘텐츠의 인코딩, 데이터에 대한 세그먼테이션(segmentation), 전송 스케줄링, 스트리밍 송신 중 적어도 하나의 기능을 수행할 수 있다. 부가적으로, 콘텐츠 이용의 편의를 위하여, 서버(120)는 콘텐츠 가이드 제공, 사용자의 계정 관리, 사용자의 선호도 분석, 선호도에 기반한 콘텐츠 추천 중 적어도 하나의 기능을 더 수행할 수 있다. 전술한 다양한 기능들 중 복수의 기능들이 제공될 수 있으며, 이를 위해, 서버(120)는 복수의 서버들로 구현될 수 있다.
클라이언트 장치(110) 및 서버(120)는 네트워크를 통해 정보를 교환하며, 교환되는 정보에 기반하여 클라이언트 장치(110)에게 콘텐츠 서비스가 제공될 수 있다. 이때, 네트워크는 단일 네트워크 또는 다양한 종류의 네트워크들의 조합일 수 있다. 네트워크는 구간에 따라 서로 다른 종류의 네트워크들이 연결된 형태로 이해될 수 있다. 예를 들어, 네트워크들은 무선 네트워크 및 유선 네트워크 중 적어도 하나를 포함할 수 있다. 구체적으로, 네트워크들은 6G(6th generation), 5G(5th generation), LTE(Long Term Evolution), LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiMAX(Wireless Broadband), 또는 GSM(Global System for Mobile Communications) 중 적어도 하나에 기반한 셀룰러 네트워크를 포함할 수 있다. 또한, 네트워크들은 무선 랜(wireless local area network), 블루투스(bluetooth), 지그비(Zigbee), NFC(near field communication), UWB(ultra wideband) 중 적어도 하나에 기반한 근거리 네트워크를 포함할 수 있다. 또한, 네트워크들은 인터넷, 이더넷(ethernet) 등의 유선 네트워크를 포함할 수 있다.
도 2는 본 개시의 일 실시예에 따른 클라이언트 장치의 구조를 도시한다. 도 2는 클라이언트 장치(예: 도 1의 클라이언트 장치(110))의 블록 구조를 예시한다.
도 2를 참고하면, 클라이언트 장치는 디스플레이(202), 입력부(204), 통신부(206), 센싱부(208), 오디오 입출력부(210), 카메라 모듈(212), 메모리(214), 전원부(216), 외부 연결 단자(218), 및 프로세서(220)를 포함한다. 단, 장치의 종류에 따라, 도 2에 예시된 구성요소들 중 적어도 하나는 생략될 수 있다.
디스플레이(202)는 시각적으로 인식 가능한 영상, 그래픽 등의 정보를 출력한다. 이를 위해, 디스플레이(202)는 패널 및 패널을 제어하는 회로를 포함할 수 있다. 예를 들어, 패널은 LCD(liquid crystal display), LED(Light Emitting Diode), LPD(light emitting polymer display), OLED(Organic Light Emitting Diode), AMOLED(Active Matrix Organic Light Emitting Diode), FLED(Flexible LED) 중 적어도 하나를 포함할 수 있다.
입력부(204)는 사용자에 의해 발생하는 입력을 수신한다. 입력부(204)는 다양한 형태의 입력 감지 수단을 포함할 수 있다. 예를 들어, 입력부(204)는 물리 버튼, 키패드, 터치 패드 중 적어도 하나를 포함할 수 있다. 또는, 입력부(204)는 터치 패널을 포함할 수 있다. 입력부(204)가 터치 패널을 포함하는 경우, 입력부(204) 및 디스플레이(202)는 하나의 모듈로서 구현될 수 있다.
통신부(206)는 클라이언트 장치가 다른 장치와 네트워크를 형성하고, 네트워크를 통해 데이터를 송신 또는 수신하기 위한 인터페이스를 제공한다. 이를 위해, 통신부(206)는 물리적으로 신호를 처리하기 위한 회로(예: 인코더/디코더, 변조기/복조기, RF(radio frequency) 프론트 엔드 등), 통신 규격에 따라 데이터를 처리하는 프로토콜 스택(예: 모뎀) 등을 포함할 수 있다. 다양한 실시예들에 따라, 통신부(206)는 서로 다른 복수의 통신 규격을 지원하기 위해 복수의 모듈들을 포함할 수 있다.
센싱부(208)는 클라이언트 장치의 상태 또는 주변 환경에 대한 데이터를 포함하는 센싱 데이터를 수집한다. 예를 들어, 센싱부(208)는 클라이언트 장치의 작동 상태, 자세에 관련된 물리적 값 또는 값의 변화를 측정하고, 측정된 결과를 나타내는 전기적 신호를 생성할 수 있다. 또한, 센싱부(208)는 클라이언트 장치의 주변 환경에 대한 물리적 값 또는 값의 변화를 측정하고, 측정된 결과를 나타내는 전기적 신호를 생성할 수 있다. 이를 위해, 센싱부(208)는 적어도 하나의 센서 및 적어도 하나의 센서를 제어하기 위한 회로를 포함할 수 있다. 구체적으로, 센싱부(208)는 자이로 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러(color) 센서, 생체 센서, 기압 센서, 온도 센서, 습도 센서, 조도 센서, 또는 UV(ultra violet) 센서, 후각(e-nose) 센서, 제스처 센서, EMG(electromyography) 센서, EEG(electroencephalogram) 센서, ECG(electrocardiogram) 센서, IR(infrared) 센서, 홍채 센서, 지문 센서 중 적어도 하나를 포함할 수 있다.
오디오 입출력부(210)는 오디오 데이터에 기반하여 생성된 전기 신호에 따라 소리를 출력하고, 외부의 소리를 감지한다. 즉, 오디오 입출력부(210)는 소리 및 전기 신호를 상호 변환할 수 있다. 이를 위해, 오디오 입출력부(210)는 스피커, 마이크, 이들을 제어하기 위한 회로 중 적어도 하나를 포함할 수 있다.
카메라 모듈(212)은 영상(image) 및 비디오(video)를 생성하기 위한 데이터를 수집한다. 이를 위해, 카메라 모듈(212)은 렌즈, 렌즈 구동 회로, 이미지 센서, 플래쉬(flash), 이미지 처리 회로 중 적어도 하나를 포함할 수 있다. 카메라 모듈(212)은 렌즈를 통해 빛을 수집하고, 이미지 센서를 이용하여 빛의 컬러 값, 휘도 값을 표현하는 데이터를 생성할 수 있다.
메모리(214)는 클라이언트 장치가 동작하기 위해 필요한 운영체제, 프로그램, 어플리케이션, 명령어, 설정 정보 등을 저장한다. 메모리(214)는 데이터를 일시적 또는 비일시적으로 저장할 수 있다. 메모리(214)는 휘발성 메모리, 비휘발성 메모리 또는 휘발성 메모리와 비휘발성 메모리의 조합으로 구성될 수 있다.
전원부(216)는 클라이언트 장치의 구성요소들의 동작을 위해 필요한 전력을 공급한다. 이를 위해, 전원부(216)는 전원을 각 구성요소에서 요구하는 크기의 전력으로 변환하는 컨버터(convertor) 회로를 포함할 수 있다. 전원부(216)는 외부 전원에 의존하거나 또는 배터리를 포함할 수 있다. 배터리를 포함하는 경우, 전원부(216)는 충전을 위한 회로를 더 포함할 수 있다. 충전을 위한 회로는 유선 충전 또는 무선 충전을 지원할 수 있다.
외부 연결 단자(218)는 클라이언트 장치를 다른 장치와 연결하기 위한 물리적 연결 수단이다. 예를 들어, 외부 연결 단자(218)는 USB(universal serial bus)단자, 오디오 단자, HDMI(high definition multimedia interface) 단자, RS-232(recommended standard-232) 단자, 적외선 단자, 광 단자, 전원 단자 등 다양한 규격의 단자들 중 적어도 하나를 포함할 수 있다.
프로세서(220)는 클라이언트 장치의 전반적인 동작을 제어한다. 프로세서(220)는 다른 구성요소들의 동작을 제어하고, 다른 구성요소들을 이용하여 다양한 기능들을 수행할 수 있다. 예를 들어, 프로세서(220)는 통신부(206)를 통해 서버에게 콘텐츠 데이터를 요청하고, 콘텐츠 데이터를 수신할 수 있다. 또한, 프로세서(220)는 수신된 콘텐츠 데이터를 디코딩함으로써 콘텐츠를 복원할 수 있다. 또한, 프로세서(220)는 디스플레이(202) 및 오디오 입출력부(210)를 통해 서버로부터 수신된 콘텐츠를 출력할 수 있다. 또한, 프로세서(220)는 입력부(204), 통신부(206), 센싱부(208), 오디오 입출력부(210), 카메라 모듈(212), 전원부(216), 외부 연결 단자(218) 중 적어도 하나에 의해 입력 또는 감지되는 정보에 기반하여 콘텐츠의 재생에 관련된 상태를 제어할 수 있다. 이를 위해, 프로세서(220)는 적어도 하나의 프로세서, 적어도 하나의 마이크로 프로세서, 적어도 하나의 DSP(digital signal processor) 중 적어도 하나를 포함할 수 있다. 특히, 프로세서(220)는 클라이언트 장치가 이하 후술되는 다양한 실시예들에 따라 동작하도록 다른 구성요소들을 제어하고, 필요한 연산을 수행할 수 있다.
도 2를 참고하여 설명한 클라이언트 장치의 구조에서, 구성요소들은 프로세서(220)에 모두 연결된 것으로 예시되었다. 도 2에 도시되지 아니하였으나, 구성요소들 중 적어도 일부는 버스(bus)를 통해 연결될 수 있다. 이 경우, 프로세서(220)의 제어에 따라, 일부 구성요소들 간 직접적인 데이터 교환이 이루어질 수 있다.
도 3은 본 개시의 일 실시예에 따른 서버의 구조를 도시한다. 도 3은 서버(예: 도 1의 서버(120))의 블록 구조를 예시한다.
도 3을 참고하면, 서버는 통신부(302), 메모리(304), 프로세서(308)를 포함한다. 단, 다양한 실시예들에 따라, 도 3에 예시된 구성요소들 중 적어도 하나는 생략될 수 있다. 또한, 다양한 실시예들에 따라 도 3에 예시된 구성요소들 이외에 적어도 하나의 구성요소가 더 포함될 수도 있다.
통신부(302)는 서버와 다른 장치의 통신을 위한 인터페이스를 제공한다. 이를 위해, 통신부(302)는 통신을 위해 물리적 신호를 생성 및 해석하는 회로를 포함할 수 있다. 통신부(302)에 의해 제공되는 인터페이스는 유선 통신 또는 무선 통신을 지원할 수 있다.
메모리(304)는 다양한 정보, 명령 및/또는 정보를 저장하며, 스토리지(306)에 저장된 컴퓨터 프로그램, 명령어 등을 로드(load)할 수 있다. 메모리(304)는 서버의 연산을 위해 일시적으로 데이터 및 명령어 등을 저장하며, RAM(random access memory)를 포함할 수 있다. 또는 메모리(304)는 다양한 저장 매체를 포함할 수 있다.
스토리지(306)는 서버의 동작을 위한 운영 체제, 서버의 기능 수행을 위한 프로그램, 서버의 동작을 위한 설정 정보 등을 비일시적으로 저장할 수 있다. 예를 들어, 스토리지(306)는 ROM(read only memory), EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, SSD(solid state drive), 또는 본 개시가 속하는 기술 분야에서 널리 알려져 있는 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체 중 적어도 하나를 포함할 수 있다.
프로세서(308)는 서버의 전반적인 동작을 제어한다. 프로세서(308)는 다른 구성요소들의 동작을 제어하고, 다른 구성요소들을 이용하여 다양한 기능들을 수행할 수 있다. 프로세서(308)는 CPU(central processing unit), MPU(micro processer unit), MCU(micro controller unit) 또는 본 개시가 속하는 기술 분야에서 널리 알려져 있는 형태의 프로세서 중 적어도 하나를 포함할 수 있다. 특히, 프로세서(220)는 서버가 이하 후술되는 다양한 실시예들에 따라 동작하도록 다른 구성요소들을 제어하고, 필요한 연산을 수행할 수 있다.
도 3을 참고하여 설명한 서버의 구조에서, 구성요소들은 프로세서(308)에 모두 연결된 것으로 예시되었다. 도 3에 도시되지 아니하였으나, 구성요소들 중 적어도 일부는 버스(bus)를 통해 연결될 수 있다. 이 경우, 프로세서(308)의 제어에 따라, 일부 구성요소들 간 직접적인 데이터 교환이 이루어질 수 있다.
도 4는 본 개시에 일 실시예에 따른 콘텐츠 스트리밍 서비스의 개념을 도시한다. 도 4는 콘텐츠 스트리밍에 관련된 일부 기능들을 도식화한 것으로, 다양한 실시 예들에 따른 콘텐츠 스트리밍 서비스는 도 4에 예시된 기능들 이외에도 다양한 기능들을 더 가질 수 있다.
도 4를 참고하면, 클라이언트(410) 및 서버(420) 간 제어 데이터 및 콘텐츠 데이터가 송신 및 수신될 수 있다. 구체적으로, 클라이언트(410)에서 서버(420)로의 제어 데이터 송신, 서버(420)에서 클라이언트(410)로의 제어 데이터 송신, 서버(420)에서 클라이언트(410)로의 콘텐츠 데이터 송신이 수행될 수 있다.
서버(420)는 사용자 정보(422a), 콘텐츠 정보(422b), 콘텐츠 DB(database)(422c)를 저장한다. 사용자 정보(422a)는 사용자들의 계정 정보, 사용자들의 서비스 이용 이력에 대한 정보, 사용자들의 선호도에 대한 정보 등을 포함할 수 있다. 콘텐츠 정보(422b)는 서비스 가능한 콘텐츠에 대한 목록, 콘텐츠의 가이드 정보, 콘텐츠의 메타 정보, 콘텐츠의 소비 이력에 대한 정보 등을 포함할 수 있다. 콘텐츠 DB(422c)는 데이터화된 상태로 저장된 콘텐츠를 포함할 수 있다. 이 외, 서버(420)는 서비스를 제공하기 위해 필요한 다른 정보를 더 저장할 수 있다.
클라이언트(410)에서 서버(420)로의 제어 데이터는 사용자 로그인(log-in)에 대한 정보, 사용자의 콘텐츠 선택에 대한 정보, 사용자의 콘텐츠 제어에 대한 정보 등을 포함할 수 있다. 이를 위해, 클라이언트(410)는 사용자 입력 처리 동작(401)을 통해 사용자 입력으로부터 제어 데이터를 생성 및 송신할 수 있다. 클라이언트(410)로부터의 제어 데이터는 제어/관리 동작(403)을 통해 처리되고, 콘텐츠의 제공을 위해 사용된다. 예를 들어, 제어/관리 동작(403)에 의해 클라이언트(401)로부터의 제어 데이터에 기반하여 제어 데이터 및/또는 콘텐츠가 선택될 수 있다. 또한, 제어/관리 동작(403)에 의해 사용자의 소비 이력 및 행위를 분석함으로써 선호도를 판단하고, 판단된 선호도에 따라 추천할 콘텐츠가 선택될 수 있다.
콘텐츠가 사용자에게 제공되는 절차를 도 4를 참고하여 살펴보면 다음과 같다. 먼저, 클라이언트(410)는 사용자 입력 처리 동작(401)을 통해 사용자에 의해 입력되는 로그인 정보(예: 아이디 및 패스워드)를 포함하는 제어 데이터를 생성하고, 제어 데이터를 송신한다. 서버(420)는 클라이언트(410)로부터의 제어 데이터에 포함되는 로그인 정보를 사용자 정보(422a)에서 검색함으로써 유효한 사용자인지 여부를 판단하고, 사용자의 권한에 따라 허용되는 콘텐츠 및 서비스의 범위를 결정할 수 있다. 다만, 로그인을 필요로 하지 아니하거나, 또는 로그인 없이 제공 가능한 제한적인 서비스가 지원되는 경우, 로그인 정보의 송신 및 처리는 생략될 수 있다.
이어, 서버(410)는 제어/관리 동작(403)을 통해 콘텐츠 정보(422b)로부터 콘텐츠 가이드 정보를 추출하고, 콘텐츠 가이드 정보를 포함하는 제어 데이터를 클라이언트(410)에게 송신한다. 클라이언트(410)는 제어 데이터에 포함되는 콘텐츠 가이드 정보를 출력하고, 사용자의 선택을 확인한다. 사용자의 선택은 사용자 입력 처리 동작(401)을 통해 제어 데이터로서 서버(410)로 송신된다. 사용자의 선택에 대한 정보는 제어/관리 동작(403)에 의해 처리되고, 스트리밍될 콘텐츠의 선택에 사용된다. 서버(420)는 콘텐츠 DB(422)에서 선택된 콘텐츠를 검색하고, 검색된 콘텐츠를 인코딩 동작(407)을 통해 콘텐츠에 대한 압축 및 세그먼테이션을 수행한 후, 콘텐츠 데이터를 송신한다. 콘텐츠 데이터는 인코딩 동작(407)을 통해 미리 압축되어 저장될 수 있다. 여기서 인코딩 동작(407)은 원본 콘텐츠 영상을 압축하는 동작뿐 아니라, 압축을 통해 생성된 콘텐츠 데이터를 디코딩후, 다시 압축하는 동작을 포함할 수 있다. 이때 압축은 콘텐츠 영상의 해상도, 비트레이트 및 초당 프레임 수를 기초로 수행될 수 있다. 미리 압축되어 저장되는 경우, 압축 동작은 생략되고, 서버(420)는 콘텐츠 데이터에 대한 세그먼테이션을 수행할 수 있다. 콘텐츠 데이터는 디코딩 동작(409)을 통해 복원되고, 재생 동작(411)을 통해 사용자에게 제공될 수 있다. 이때, 압축을 위해, 다양한 비디오 코덱들 및 다양한 오디오 코덱들 중 적어도 하나가 사용될 수 있다. 예를 들어, 다양한 비디오 코덱들은 MPEG-2(Moving Picture Experts Group-2), H.264 AVC(Advanced Video Coding), H.265 HEVC(High Efficiency Video Coding), H.266 VVC(Versatile Video Coding), VP8(Video Processor 8), VP9(Video Processor 9), AV1(AOMedia Video 1), DivX, Xvid, VC-1, Theora, Daala 중 적어도 하나를 포함할 수 있다.
오디오 코덱들은 MP3(MPEG 1 Audio Layer 3), AC3(Dolby Digital AC-3), E-AC3(Enhanced AC-3), AAC(Advanced Audio Coding, MPEG 2 Audio), FLAC(Free Lossless Audio Codec), HE-AAC(High Efficiency Advanced Audio Coding), OGG Vorbis 및 OPUS 등을 포함할 수 있다.
영상의 다양한 해상도, 비트레이트 및 초당 프레임 수에 따라 콘텐츠 영상이 압축되어 복수의 콘텐츠 데이터가 미리 생성될 수 있다. 클라이언트(410)는 쓰루풋(또는 대역폭)을 측정하고, 측정된 쓰루풋(또는 대역폭)을 기초로 비트레이트를 결정할 수 있다.
클라이언트(410)는 복수의 콘텐츠 데이터에 관한 정보를 서버(410)로부터 수신할 수 있다. 수신된 정보는 복수의 콘텐츠 데이터에 대한 비트레이트, 해상도 및 초당 프레임 수 및 위치를 나타내는 정보를 포함할 수 있다.
클라이언트(410)는 비트레이트를 기초로 복수의 콘텐츠 데이터 중 적어도 하나의 콘텐츠 데이터를 결정하고, 클라이언트(410)의 캐이퍼빌리티 정보를 기초로 적어도 하나의 콘텐츠 데이터 중 재생할 수 있는 해상도 및 초당 프레임 수에 대응하는 재생 콘텐츠 데이터 및 그 위치를 결정할 수 있다. 이때, 캐이퍼빌리티 정보는 클라이언트의 최대 지원 해상도 및 최대 지원 프레임 수를 포함할 수 있으나, 이에 제한되지 않는다.
클라이언트(410)는 재생 콘텐츠 데이터의 위치를 기초로 서버(420)로 콘텐츠 요청을 전송할 수 있다. 서버(420)는 수신한 콘텐츠 요청을 기초로, 콘텐츠 요청에 대응하는 콘텐츠 데이터를 클라이언트(410)로 전송할 수 있다.
다른 실시예에 의하면, 클라이언트(410)는 영상의 해상도 및 초당 프레임 수 중 적어도 하나에 관한 사용자 입력을 수신하고, 사용자 입력에 따라 재생 콘텐츠 데이터 및 그 위치를 결정하고, 서버(420)로 콘텐츠 요청을 전송할 수 있다.
본 개시는 콘텐츠 스트리밍 시스템에서 콘텐츠 자체의 내용을 설명하는 텍스트 형태의 메타데이터(이하 '텍스트 메타데이터')를 기반으로 학습된 언어모델을 이용하여 콘텐츠를 검색하는 기술에 관한 것이다. 특히, 본 개시는 콘텐츠의 텍스트 메타데이터를 기반으로 학습된 언어모델을 이용하여 검색어와 콘텐츠 간의 유사도를 결정하고, 검색어와 콘텐츠 간의 유사도를 기반으로 콘텐츠 검색 목록을 생성하기 위한 방법 및 장치에 관한 것이다. 여기서, 텍스트 메타데이터는 제목, 시놉시스, 장르, 감독, 배우, 또는 해시태그 중 적어도 하나를 포함할 수 있다. 언어모델은 자연어를 처리하는 콘텐츠 기반 필터링(content based filtering, CBF) 모델일 수 있다. 예를 들어, 언어모델은 콘텐츠의 텍스트 메타데이터를 컴퓨터가 이해할 수 있도록 수치화, 즉, 임베딩하기 위한 자연어 처리 모델로서, 트랜스포머(transformer) 기반 모델일 수 있다. 예를 들어, 트랜스포머 기반 모델은 BERT(bidirectional encoder representations from transformers), ELECTRA(efficiently learning an encoder that classifies token replacements accurately), RoBERTa(robustly optimized BERT approach), BART(bidirectional auto-regressive transformer), GPT3(generative pre-trained transformer), DeBERTa(decoding-enhanced BERT with disentangled attention), KLUE(korean language understanding evaluation)-RoBERTa-large 모델을 포함할 수 있으나, 이에 제한되지 아니한다.
언어모델을 이용하여 콘텐츠를 검색하는 구체적인 방법을 설명하기에 앞서, 본 개시는 CBF 모델의 이해를 돕기 위해 자연어 처리의 기본 개념과 RoBERTa 모델에 대해 설명한다.
CBF 모델에 기반하여 검색어와 콘텐츠의 유사도를 판단하기 위해서, 자연어, 즉, 비정형 데이터로 구성된 콘텐츠의 텍스트 메타데이터를 컴퓨터가 이해할 수 있는 데이터로 수치화할 필요가 있다. 이때, 자연어인 비정형 데이터를 컴퓨터가 이해할 수 있는 데이터로 수치화, 즉, 벡터화하는 기술은 임베딩(embedding)이라 지칭된다. 자연어인 비정형 데이터는 임베딩을 통해 벡터로 표현될 수 있으며, 해당 벡터들은 도 5에 도시된 바와 같이, 벡터 공간에 매핑될 수 있다. 이때, 벡터들 간의 거리 및/또는 방향은 벡터들 간의 상대적인 관계정보로 해석될 수 있다. 도 5는 벡터들의 상대적 관계의 예를 도시한다. 예를 들어, 도 5에서 왕(king)을 나타내는 벡터(501)를 v1, 여왕(queen)을 나타내는 벡터(502)를 v2, 남자(man)을 나타내는 벡터(503)를 v3, 여자(woman)를 나타내는 벡터(504)를 v4라고 지칭하면, 왕과 여왕, 및 남자와 여자는 성별과 관련된 의미가 유사하므로, 거리(v1, v2)와 거리(v3, v4)가 유사하고, 방향(v1, v2)와 방향(v3, v4)가 유사할 수 있다. 반면, 도 5에 도시되지 아니하였으나, 컴퓨터를 나타내는 벡터를 v5라 지칭하면, 거리(v1, v5)는 거리(v1, v2)보다 멀고, 방향(v1, v5)와 방향(v1, v2)는 상이할 것이다. 이와 같은 방식으로, 벡터들 간의 상대적인 유사도가 결정될 수 있다. 도 5의 예의 경우, 벡터의 길이인 임베딩 사이즈는 3차원으로 설정되었으나, 실제 CBF 모델에서의 임베딩 사이즈는 보다 높은 다차원으로 설정될 수 있다. 벡터가 다차원의 임베딩 사이즈를 가지는 경우, 벡터에 보다 복잡한 의미를 담을 수 있기 때문이다.
콘텐츠를 벡터로 표현하는 CBF 모델에서, 벡터가 콘텐츠의 의미정보를 정확하게 나타낼 수 있도록 하는 것이 중요하다. 이는 벡터가 콘텐츠의 의미정보를 정확하게 표현해야만, 검색어와 콘텐츠 간의 유사성이 정확하게 판단될 수 있기 때문이다. 따라서, 본 개시의 실시예들에 따르면, 콘텐츠를 정확한 의미정보를 가지는 벡터로 표현하기 위해, 시스템은 CBF 모델의 언어모델을 학습시킴으로써, 언어모델을 미세 조정(fine tuning)할 것이다. 구체적으로, 본 개시의 다양한 실시예들에서, 언어모델은 각 콘텐츠의 제목, 시놉시스 등과 같은 메타 정보를 포함하는 입력 텍스트 시퀀스를 정확한 의미정보를 갖는 벡터로 변환하도록 학습될 수 있다.
언어모델은 입력 텍스트를 벡터화하는 능력을 가진 모델로, 단어 수준 임베딩 모델과 문장 또는 문서 수준의 임베딩 모델로 구분될 수 있다. 단어 수준의 임베딩 모델은 형태가 같은 단어에 같은 벡터를 할당하는 모델이며, 예를 들어, 워드투벡터(word2vec) 모델이 있다. 문장 수준의 임베딩 모델은, 문맥 정보를 고려하여 각각의 단어를 구별하는 모델이며, 예를 들어, BERT 모델이 있다.
단어 수준의 임베딩 모델과 문장 수준의 임베딩 모델의 차이를 살펴보기 위해, "겨울 밤에 내리는 눈은 아름답다"라는 입력 텍스트 시퀀스를 가정한다. 단어 수준의 임베딩 모델의 경우, 입력 텍스트 시퀀스의 "눈"과 사람의 신체 부위인 "눈"은 같은 벡터로 표현된다. 반면, 문장 수준의 임베딩 모델의 경우, 입력 텍스트 시퀀스 전체의 문맥 정보를 활용하여, 입력 텍스트 시퀀스의 "눈"은 사람 신체 부위인 "눈"과 다른 벡터로 표현될 수 있다. 이와 같이, 단어 수준의 임베딩 모델보다 문장 수준의 임베딩이 입력 텍스트 시퀀스를 더 올바른 의미 정보를 담은 벡터로 표현할 수 있다. 따라서, 일 실시예에 따라, 문장 수준의 임베딩 모델들 중 하나인 RoBERTa가 이용될 수 있다.
RoBERTa 모델은 BERT 모델에서 발전된 모델이다. BERT 모델은 RoBERTa 모델의 전신으로서, 비지도학습을 통해 대규모의 텍스트 데이터를 사전 학습한 언어모델이다. BERT 모델은 트랜스포머 구조의 인코더 블록을 여러 계층으로 쌓아올린 구조를 가지며, MLM(masked language model) 방식 및 NSP(next sentence prediction) 방식으로 사전 학습된다. 트랜스포머의 구조 및 BERT 모델의 구조에 대한 구체적인 설명은 도 21a, 도 21b, 및 도 22를 참조하여 후술하기로 한다.
MLM 방식은 랜덤으로 마스킹된 단어를 예측하는 방식이고, NSP 방식은 두 개의 문장들이 문맥적으로 연달아 등장 가능한 문장인지 예측하는 방식이다. BERT 모델은 양방향으로 텍스트를 학습하는 구조를 가짐으로써, 단방향 구조의 모델에 비해 더 좋은 의미표상 정보를 얻을 수 있는 이점을 가진다.
RoBERTa는 BERT 모델의 성능을 강화시키기 위해 학습 데이터를 추가하고 하이퍼(hyper) 파라미터 및 훈련 기법을 조정한 후 학습된 모델이다. RoBERTa 모델은 NSP 방식을 제외한 MLM 방식만으로 학습될 수 있다. RoBERTa 모델은 BERT 모델에 비해 더 큰 학습 데이터 및 더 긴 시퀀스로 더 오랜 학습을 겪고, 동적 마스킹을 적용하여 보다 정교한 의미표상 정보를 얻도록 개선되었다. 즉, RoBERTa는 BERT를 포함한 이전 모델들의 GLUE(general language understanding evaluation) 벤치마크 성능보다 우수한 성능을 가지도록 개선되었다.
따라서, 본 개시의 실시예들에 따른 시스템은 콘텐츠 검색을 위해 한국어 말뭉치 기준으로 사전 학습된 자연어처리 모델인 RoBERTa 모델을 이용할 수 있다. 그러나, 이하 설명되는 실시예들에서의 언어모델이 RoBERTa 모델로 반드시 한정되는 것은 아니며, RoBERTa 이외의 다른 언어모델을 이용하는 경우에도 적용될 수 있다.
도 6은 본 개시의 일 실시예에 따라 콘텐츠를 검색하는 서버의 구조의 예를 도시한다. 도 6에 도시된 서버(예: 도 1의 서버(120))의 적어도 일부 구성요소는 도 3의 프로세서(308)에 포함되는 구성요소로 이해될 수 있다. 이하에서 도 6의 적어도 일부 구성요소에 대한 설명은 도 7 내지 도 11을 참고하여 설명할 것이다.
도 6을 참고하면, 서버(120)는 콘텐츠 저장부(610), 모델 학습부(620), 검색어 획득부(630), 유사도 결정부(640), 및 콘텐츠 결정부(650)를 포함할 수 있다.
콘텐츠 저장부(610)는 클라이언트들에게 제공 가능한 콘텐츠 아이템들을 저장한다. 콘텐츠 아이템들은 스트리밍 서비스될 수 있는 영화 콘텐츠, 드라마 콘텐츠, 프로그램 콘텐츠를 포함하며, 하나의 콘텐츠 아이템은 하나의 영화, 하나의 드라마 또는 하나의 프로그램에 대응한다. 예를 들어, 제1 콘텐츠 아이템 및 제2 콘텐츠 아이템은 서로 다른 영화들에 대응할 수 있다. 다만, 다른 실시예에 따라, 콘텐츠 저장부(610)는 서버(120)의 외부에 존재할 수 있고, 이 경우, 서버(120)는 외부의 콘텐츠 저장부(610)에 접속하고, 콘텐츠 아이템들을 검색 및 획득할 수 있다.
일 실시예에 따르면, 콘텐츠 저장부(610)는 콘텐츠 벡터 DB(612)를 포함할 수 있다. 콘텐츠 벡터 DB(612)는 콘텐츠 저장부(610)에 저장된 콘텐츠 아이템들 각각의 벡터 값을 저장한다. 콘텐츠 아이템들 각각의 벡터 값은 모델 학습부(620)에 의해 학습된 언어모델을 이용하여 획득될 수 있다. 콘텐츠 벡터 DB(612)는 언어모델이 업데이트될 시, 업데이트된 언어모델에 의해 갱신될 수 있다. 예를 들어, 언어모델은 콘텐츠 저장부(610)에 새로운 콘텐츠 아이템이 저장되거나, 기 저장된 콘텐츠 아이템이 삭제되는 경우에 재학습됨으로써 업데이트될 수 있다. 즉, 콘텐츠 벡터 DB(612)는 언어모델이 재학습되어 업데이트 되는 경우, 업데이트된 언어모델을 이용하여 콘텐츠 아이템들 각각의 벡터 값을 획득 및 저장할 수 있다. 이때, 이전에 저장된 콘텐츠 아이템들 각각의 벡터 값은 삭제될 수 있다.
일 실시예에 따르면, 콘텐츠 벡터 DB(612)는 주기적으로 또는 지정된 이벤트 발생 시 자동적으로 갱신될 수도 있고, 사업자 및/또는 관리자의 제어에 의해 갱신될 수 있다. 예를 들어, 콘텐츠 저장부(610)에 새로운 콘텐츠 아이템이 저장될 시, 콘텐츠 벡터 DB(612)는 새로운 콘텐츠 아이템의 벡터 값을 추가 저장하도록 갱신될 수 있다. 다른 예로, 콘텐츠 저장부(610)에 기 저장된 콘텐츠 아이템이 삭제될 시, 콘텐츠 벡터 DB(612)는 삭제된 콘텐츠 아이템의 벡터 값이 삭제되도록 갱신될 수 있다.
모델 학습부(620)는 콘텐츠 아이템의 내용을 설명하는 텍스트 메타데이터를 기반으로 언어모델에 대한 학습을 수행한다. 텍스트 메타데이터는 콘텐츠 아이템의 내용을 설명하는 텍스트 피처(feature)를 의미한다. 텍스트 메타데이터는 콘텐츠 아이템의 제목, 시놉시스, 복합 장르, 감독, 배우, 해시태그 정보 중 적어도 하나를 포함할 수 있다. 여기서, 복합 장르는, 대분류 장르, 및 소분류 장르 중 적어도 하나를 포함할 수 있다. 예를 들어, 대분류 장르인 '액션/SF'의 소분류 장르는, '액션', '판타지', 'SF', '어드벤처', '전쟁', '무협' 등으로 구분될 수 있다. 해시태그 정보는, 콘텐츠 아이템의 주제, 감정, 또는 목적 중 적어도 하나를 나타내는 태그 정보를 의미한다. 시놉시스는 콘텐츠 아이템의 주제, 기획의도, 또는 줄거리 중 적어도 하나를 나타내는 개요 정보를 의미한다.
일 실시예에 따르면, 모델 학습부(620)는 도 7a에 도시된 바와 같이, 전처리부(710), 및 학습부(720)를 포함하거나, 도 7b에 도시된 바와 같이, 전처리부(750), 제1 학습부(760), 및 제2 학습부(770)를 포함할 수 있다.
먼저, 도 7a를 참고하면, 모델 학습부(620)의 전처리부(710)는 언어모델의 학습을 위해 콘텐츠 아이템의 텍스트 메타데이터를 획득하고, 획득된 텍스트 메타데이터를 시퀀스형 텍스트 데이터로 변환한다. 시퀀스형 텍스트 데이터는, 텍스트 데이터들이 연속적으로 이어져 있는 문자열 형태의 데이터를 의미한다. 전처리부(710)가 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환하는 것은, 콘텐츠 아이템의 메타데이터와 같이 정형 데이터로 구분되어 있는 텍스트 데이터가 언어모델에 직접적으로 입력될 수 없기 때문이다. 따라서, 전처리부(710)는 콘텐츠 아이템의 텍스트 메타데이터를 토큰 단위로 구분한 후, 적어도 하나의 구분자를 삽입함으로서, 텍스트 메타데이터를 시퀀스형 텍스트 데이터로 변환할 수 있다. 여기서, 토큰은 고유의 임베딩 값으로 대체되는 언어모델의 입력 단위를 의미하며, 삽입되는 적어도 하나의 구분자 역시 토큰으로 취급될 수 있다. 적어도 하나의 구분자는, 서로 다른 종류의 피처들을 구분하기 위한 분리 토큰(예: [SEP]), 및 특정 피처를 나타내는 스페셜 토큰들 중 적어도 하나를 포함할 수 있다. 스페셜 토큰들은, 예를 들어, 장르를 나타내는 스페셜 토큰인 [GENRE] 및 [/GENRE], 감독을 나타내는 스페셜 토큰인 [DIR] 및 [/DIR], 배우를 나타내는 스페셜 토큰인 [ATR] 및 [/ATR], 및 해시태그를 나타내는 스페셜 토큰인 [TAG] 및 [/TAG] 중 적어도 하나의 스페셜 토큰을 포함할 수 있다. 나열된 스페셜 토큰들은 이해를 돕기 위한 예들일 뿐이며, 본 개시의 실시예들은 이에 한정되지 않는다. 각 스페셜 토큰은 해당 피처에 대응되는 텍스트의 앞뒤로 삽입될 수 있다. 본 개시에서 스페셜 토큰을 사용하는 것은, 콘텐츠 아이템의 텍스트 메타데이터에 다양한 종류의 피처들이 포함되어 있기 때문이다. 즉, 언어모델이 입력 시퀀스에 포함된 분리 토큰들 및/또는 분리 토큰들의 순서만으로, 다양한 종류의 피처들을 인식하는 것은 어려울 수 있기 때문이다. 스페셜 토큰은 언어모델의 어휘사전에 추가될 수 있다.
일 실시예에 따르면, 전처리부(710)는 콘텐츠 아이템의 식별 코드, 제목, 장르, 감독, 배우, 해시태그, 및 시놉시스를 포함하는 텍스트 메타데이터를 이하 표 1과 같이 구분자들을 포함하는 시퀀스형 텍스트 데이터로 변환할 수 있다.
제목[SEP]시놉시스 토큰1 시놉시스 토큰2 … 시놉시스 토큰N [GENRE]장르1 장르2[/GENRE][DIR]감독[/DIR][ATR]배우1 배우2[/ATR][TAG]태그1 태그2[/TAG] |
[표 1]에서, 시놉시스 토큰1, 시놉시스 토큰2, 및 시놉시스 토큰N 각각은 해당 콘텐츠 아이템의 시놉시스에 포함되는 서로 다른 토큰들을 의미한다.
구체적인 예로, 전처리부(710)는 도 8에 도시된 바와 같이 시퀀스형 텍스트 데이터를 생성할 수 있다. 도 8은 본 개시의 일 실시예에 따라 콘텐츠의 텍스트 메타 데이터를 시퀀스형 텍스트 데이터로 변환하는 예를 도시한다. 도 8을 참고하면, 전처리부(710)는 콘텐츠 아이템의 텍스트 메타데이터(810)에 분리 토큰 및 스페셜 토큰들을 추가함으로써, 콘텐츠의 텍스트 메타데이터를 시퀀스형 텍스트 데이터(820)로 변환할 수 있다. 이때, 해당 콘텐츠 아이템의 감독 및/또는 배우가 복수명인 경우, 전처리부(710)는 시퀀스형 텍스트 데이터에 포함되는 감독들 및/또는 배우들의 수를 제한할 수 있다. 예를 들어, 감독 및/또는 배우의 수는 최대 5명 이하로 제한될 수 있으나, 본 개시는 이에 제한되지 아니한다. 전처리부(710)는 생성된 시퀀스형 텍스트 데이터를 학습부(720)로 제공한다.
모델 학습부(620)의 학습부(720)는 시퀀스형 텍스트 데이터를 기반으로 언어모델에 대한 학습을 수행한다. 즉, 학습부(720)는 전처리부(710)에서 획득된 시퀀스형 텍스트 데이터 중 특정 종류의 정보를 기반으로 예측모델에 대한 훈련을 수행함으로써, 언어모델에 대한 학습을 수행할 수 있다. 특정 종류의 정보는, 해시태그 정보, 장르 정보, 또는 시놉시스 정보를 포함할 수 있다. 구체적으로, 학습부(720)는 아래의 제1 실시예 내지 제3 실시예 중 어느 하나를 수행할 수 있다.
제1 실시예
제1 실시예에 따르면, 학습부(720)는 시퀀스형 텍스트 데이터 내 해시태그 정보를 기반으로 예측모델에 대한 훈련을 수행함으로써, 언어모델에 대한 학습을 수행할 수 있다. 여기서, 예측모델은 언어모델에 기반하여 마스킹된 해시태그 토큰을 예측 또는 추론하도록 구성된 MLM 방식의 예측모델인 해시태그 예측모델을 포함할 수 있다. 예를 들어, 학습부(720)는 도 9a에 도시된 바와 같이 언어모델에 대한 학습을 수행할 수 있다. 도 9a는 본 개시의 일 실시예에 따른 언어모델의 학습 예를 도시한다.
도 9a를 참고하면, 학습부(720)는 시퀀스형 텍스트 데이터에 포함된 토큰들 중 해시태그에 대응되는 하나의 토큰(예: '태그2')을 마스킹하고, 마스킹된 토큰의 값을 레이블로 정의할 수 있다. 학습부(720)는 마스킹된 토큰(901)을 포함하는 텍스트 데이터(910)를 해시태그 예측모델(920)에 입력하고, 출력 값 및 레이블을 이용하여 손실(loss) 값을 결정하고, 손실 값에 기반하여 역전파를 수행함으로써 해시태그 예측모델(920)에 대한 훈련 및/또는 학습을 수행할 수 있다. 이에 따라, 해시태그 예측모델(920)은 마스킹된 토큰(901)의 값을 예측(930) 및/또는 추론하도록 훈련 및/또는 학습될 수 있다. 이때, 해시태그 예측모델(920)은 마스킹되지 아니한 다른 토큰들로부터 문맥 정보를 획득하고, 획득된 문맥 정보에 기반하여 마스킹된 토큰, 즉, 해시태그에 대응되는 토큰을 추론하도록 훈련 또는 학습될 수 있다. 예를 들어, 해시태그 예측모델(920)은 제목, 시놉시스 등과 같이 마스킹되지 아니한 토큰들로부터 획득되는 문맥 정보를 기반으로 학습할 수 있다. 이와 같이, 언어모델 기반의 해시태그 예측모델(920)의 학습 태스크에 대한 입력 및 타겟은 하기 표 2와 같이 나타낼 수 있다.
예측 | 입력 | 타겟 |
해시태그 예측 | 제목[SEP]시놉시스 토큰1 시놉시스 토큰2 … 시놉시스 토큰N[GENRE]장르1 장르2[/GENRE][DIR]감독[/DIR][ATR]배우1 배우2[/ATR][TAG]태그1 [MASK][/TAG] | [MASK]=태그2 |
표 2는 해시태그 영역에 위치한 복수의 토큰들 중 '태그2'의 토큰이 마스킹 처리되어 해시태그 예측모델(920)에 입력되면, 해시태그 예측모델(920)이 '태그2'의 토큰을 추론하도록 학습됨을 나타낸다. 여기서, 해시태그 영역에 복수의 토큰들이 존재함에도 불구하고 하나의 토큰만 마스킹 처리한 것은, 두 개 이상의 토큰들을 마스킹하는 경우에 언어모델이 입력에 포함된 마스킹 토큰들과 타겟 토큰들의 위치 관계를 파악하는 것이 용이하지 않기 때문이다. 따라서, 제1 실시예에 따른 학습부(720)는 해시태그 영역에서 하나의 토큰을 마스킹 및 추론한 후, 해시태그 영역에서 다른 토큰을 마스킹 및 추론하는 방식으로 동작할 수 있다. 예를 들어, 해시태그 영역 내에서 마스킹되는 토큰은 에포크(epoch) 별로 달라질 수 있다.제1 실시예에 따르면, 학습부(720)는 해시태그 영역에 위치한 토큰들 중에서 '#'으로 시작하지 아니하는 토큰, 즉, 비의존적인 토큰을 마스킹할 수 있다. 해시태그 영역은 해시태그를 나타내는 스페셜 토큰 [TAG] 및 [/TAG]에 기반하여 결정될 수 있다.
제2 실시예
제2 실시예에 따르면, 학습부(720)는 시퀀스형 텍스트 데이터 내 시놉시스 정보를 기반으로 예측모델에 대한 훈련을 수행함으로써, 언어모델에 대한 학습을 수행할 수 있다. 여기서, 예측모델은 언어모델에 기반하여 마스킹된 시놉시스 토큰을 예측 또는 추론하도록 구성된 MLM 방식의 예측모델인 시놉시스 예측모델을 포함할 수 있다. 예를 들어, 학습부(720)는 도 9b에 도시된 바와 같이 언어모델에 대한 학습을 수행할 수 있다. 도 9b는 본 개시의 일 실시예에 따른 언어모델의 학습 예를 도시한다.
도 9b를 참고하면, 학습부(720)는 시퀀스형 텍스트 데이터에 포함된 토큰들 중 시놉시스에 대응되는 하나의 토큰(예: '시놉시스 토큰1')을 마스킹하고, 마스킹된 토큰의 값을 레이블로 정의할 수 있다. 학습부(720)는 마스킹된 토큰(951)을 포함하는 텍스트 데이터(950)를 시놉시스 예측모델(960)에 입력하고, 출력 값 및 레이블을 이용하여 손실(loss) 값을 결정하고, 손실 값에 기반하여 역전파를 수행함으로써 시놉시스 예측모델(960)에 대한 훈련 및/또는 학습을 수행할 수 있다. 이에 따라, 시놉시스 예측모델(960)은 마스킹된 토큰(951)의 값을 예측(970) 및/또는 추론하도록 훈련 및/또는 학습될 수 있다. 이때, 시놉시스 예측모델(960)은 마스킹되지 아니한 다른 토큰들로부터 문맥 정보를 획득하고, 획득된 문맥 정보에 기반하여 마스킹된 토큰, 즉, 시놉시스에 대응되는 토큰을 추론하도록 훈련 또는 학습될 수 있다. 예를 들어, 시놉시스 예측모델(960)은 제목, 장르, 해시태그 등과 같이 마스킹되지 아니한 토큰들로부터 획득되는 문맥 정보를 기반으로 학습할 수 있다. 이와 같이, 언어모델 기반의 시놉시스 예측모델의 학습 태스크에 대한 입력 및 타겟은 하기 표 3과 같이 나타낼 수 있다.
예측 | 입력 | 타겟 |
시놉시스 예측 | 제목[SEP][MASK] 시놉시스 토큰2 … 시놉시스 토큰N[GENRE]장르1 장르2[/GENRE][DIR]감독[/DIR][ATR]배우1 배우2[/ATR][TAG]태그1 태그2[/TAG] | [MASK]=시놉시스 토큰1 |
표 3은 시놉시스 영역에 위치한 복수의 토큰들 중 '시놉시스 토큰1'의 토큰이 마스킹 처리되어 시놉시스 예측모델(960)에 입력되면, 시놉시스 예측모델(960)이 '시놉시스 토큰1'의 토큰을 추론하도록 학습됨을 나타낸다. 여기서, 시놉시스 영역에 복수의 토큰들이 존재함에도 불구하고 하나의 토큰만 마스킹 처리한 것은, 두 개 이상의 토큰들을 마스킹하는 경우에 언어모델이 입력에 포함된 마스킹 토큰들과 타겟 토큰들의 위치 관계를 파악하는 것이 용이하지 않기 때문이다. 따라서, 제2 실시예에 따른 학습부(720)는 시놉시스 영역에서 하나의 토큰을 마스킹 및 추론한 후, 시놉시스 영역에서 다른 토큰을 마스킹 및 추론하는 방식으로 동작할 수 있다. 예를 들어, 시놉시스 영역 내에서 마스킹되는 토큰은 에포크(epoch) 별로 달라질 수 있다. 제2 실시예에 따른 학습부(720)는 시놉시스 영역의 토큰을 마스킹 및 추론하는 것에 제한되지 않고, 제목 영역의 토큰을 마스킹 및 추론할 수 있다. 예를 들어, 학습부(730)는 시놉시스 영역에 더하여, 제목 영역의 토큰을 마스킹 및 추론할 수 있다. 또는, 학습부(730)는 시놉시스 영역을 대신하여 제목 영역의 토큰을 마스킹 및 추론할 수 있다.
제2 실시예에 따르면, 학습부(720)는 시놉시스 영역에 위치한 토큰들 중에서 '#'으로 시작하지 아니하는 토큰, 즉, 비의존적인 토큰을 마스킹할 수 있다. 시놉시스 영역은 분리 토큰 및/또는 스페셜 토큰에 기반하여 결정될 수 있다. 예를 들어, 시놉시스 영역은 분리 토큰 [SEP]과 장르에 대한 스페셜 토큰 [GENRE] 사이의 영역으로 결정될 수 있다. 그러나, 이는 콘텐츠 아이템의 텍스트 메타데이터가 표 1과 같은 시퀀스형 텍스트 데이터로 변환되는 경우에 대한 예시일 뿐, 시놉시스 영역을 결정하는 방식은 이에 한정되지 아니한다. 예를 들어, 시퀀스형 텍스트 데이터가 "제목[SEP]감독[SYNOPSIS]시놉시스 토큰1 시놉시스 토큰2 … 시놉시스 토큰N[/SYNOPSIS][GENRE]장르1 장르2[/GENRE][ATR]배우1 배우2[/ATR][TAG]태그1 태그2[/TAG]"로 구성되는 경우, 시놉시스 영역은 시놉시스를 나타내는 스페셜 토큰인 [SYNOPSIS] 및 [/SYNOPSIS]의 사이 영역으로 결정될 수 있다. 즉, 시놉시스 영역은 시퀀스형 텍스트 데이터의 구성 방식에 따라 달라질 수 있다.
전술한 제1 실시예 및 제2 실시예에서, '#'으로 시작하지 아니하는 토큰을 마스킹하는 것은, RoBERTa 모델의 BPE(Byte Pair Encoding) 토크나이저 특성상 “#”으로 시작하는 토큰은 앞에 위치한 토큰에 의존적이거나 문법적인 의미의 토큰이기 때문이다. 즉, 상대적으로 체언 및 용언과 같이 핵심의미를 포함하는 토큰은 '#'으로 시작하지 아니하기 때문에, 학습부(720)는 시놉시스 영역에 위치한 토큰들 중에서 '#'으로 시작하지 않는 토큰을 마스킹할 수 있다. 예를 들어, BPE 토크나이저는 텍스트 문장을 토큰 단위로 구분할 때, “XX님은 흥미로운 OTT 분야인 티빙에 재직 중이다”에서 “XX + #님 + #은 + 흥미 + #로운 + OTT + 분야 + #인 + 티빙 + #에 + 재직 + 중 + #이다 + .”와 같이 나눌 수 있다. 위의 예시와 같이, 토크나이저는 의존적인 토큰에 '#'을 붙임으로써 앞의 토큰에 의존적인 토큰임을 나타낼 수 있다.
의존적인 토큰을 나타내는 방식은 해당 토큰에 '#'을 붙이는 방식으로 제한되지 않는다. 예를 들어, 다른 토크나이저의 경우, 의존적인 토큰에 '##', 또는 '_'를 붙일 수 있고, 그 외 다양한 방식으로 해당 토큰이 의존적인 토큰임을 나타낼 수 있다. 따라서, 의존적인 토큰의 형태는 특정 형태로 제한되지 아니하며, 학습부(720)는 의존적인 토큰이 아닌 토큰을 마스킹할 수 있다.
일 실시예에 따르면, 해시태그 예측모델(920) 및/또는 시놉시스 예측모델(960)은 도 9c에 도시된 바와 같이, 복수의 입력 토큰들(예: [W1, W2, W3, W4, W5]) 중 적어도 하나의 토큰을 마스킹하는 마스킹 블록(921), 마스킹된 토큰을 포함하는 복수의 입력 토큰들(예: [W1, W2, W3, [MASK], W5])에 대응되는 벡터 값들(예: [O1, O2, O3, O4, O5])을 출력하는 언어모델 (922), 언어모델에서 출력된 벡터 값들로부터 마스킹된 토큰의 벡터 값을 추론하는 분류 계층(923), 벡터 값들을 토큰들로 변환하는 임베딩-단어(embedding to vocabulary) 계층(924)를 포함할 수 있다. 여기서, 언어모델(922)은 RoBERTa 모델을 포함할 수 있다. 또한, 분류 계층(923)은 완전 연결 계층(fully connected layer), GELU(gaussian error linear unit), 및 놈(norm)을 포함할 수 있으며, MLM 헤드 레이어로 지칭될 수 있다. 분류 계층(923)은 복수의 입력 벡터 값들(예: [O1, O2, O3, O4, O5])에 대응되는 예측 토큰들(예: [W'1, W'2, W'3, W'4, W'5])을 출력할 수 있다. 예측 모델(920)은 마스킹되지 아니한토큰들(예: [W1, W2, /3, W5])로부터의 문맥정보를 기반으로, 마스킹되지 아니한 토큰들과 중복되지 않으면서, 내용에 적합한 마스킹된 토큰(예: W4), 즉, 타겟을 예측 및/또는 추론해내도록 훈련될 수 있다.
제3 실시예
제3 실시예에 따르면, 학습부(720)는 시퀀스형 텍스트 데이터 내 장르 정보를 기반으로 예측모델에 대한 훈련을 수행함으로써, 언어모델에 대한 학습을 수행할 수 있다. 이때, 예측모델은 언어모델에 기반하여 콘텐츠 아이템들에 대한 장르를 예측 또는 추론하도록 구성된 텍스트 분류 방식의 예측모델인 장르 예측모델을 포함할 수 있다. 예를 들어, 학습부(720)는 도 10a에 도시된 바와 같이 언어모델에 대한 학습을 수행할 수 있다. 도 10a는 본 개시의 일 실시예에 따른 언어모델의 학습 예를 도시한다.
도 10a를 참고하면, 학습부(720)는 장르 관련 토큰들을 포함하지 아니하는 입력 시퀀스형 텍스트 데이터를 획득하고, 장르 예측모델(1020)을 이용하여 텍스트 분류(text classification) 태스크(task)를 수행함으로써, 입력 시퀀스형 텍스트 데이터를 갖는 콘텐츠 아이템이 속한 장르를 예측할 수 있다. 텍스트 분류 태스크는 예측모델에 입력되는 텍스트가 어떤 클래스에 속하는지 구분하는 작업을 의미한다. 여기서, 입력 시퀀스형 텍스트 데이터는 시퀀스형 텍스트 데이터에서 장르 관련 토큰들을 제거함으로써 생성될 수 있다. 장르 관련 토큰들은 장르를 나타내는 스페셜 토큰인 [GENRE] 및 [/GENRE], 및 장르 정보에 대응되는 토큰(이하 '장르 토큰')을 포함할 수 있다. 장르 토큰은 장르를 나타내는 스페셜 토큰인 [GENRE] 및 [/GENRE] 사이의 장르 영역에 위치하고, 장르를 표현하는 적어도 하나의 토큰을 포함할 수 있다. 예를 들어, '공포/스릴러'라는 장르를 표현하는 장르 토큰은, '공포', '/', 및 '스릴러' 라는 3개의 토큰을 포함할 수 있고, '드라마'라는 장르를 표현하는 장르 토큰은, '드라마'라는 1개의 토큰을 포함할 수 있다. 입력 시퀀스형 텍스트 데이터는 전처리부(710) 또는 학습부(720)에서 생성될 수 있다.
구체적으로, 학습부(720)는 시퀀스형 텍스트 데이터로부터 적어도 하나의 장르를 표현하는 적어도 하나의 토큰을 획득하고, 획득된 적어도 하나의 토큰을 기반으로 클래스 레이블(class label)을 설정할 수 있다. 여기서, 하나의 장르는 하나 이상의 토큰들에 의해 표현될 수 있다. 예컨대, "공포/스릴러"라는 장르는, "공포", "/", 및 "스릴러"라는 3개의 토큰들에 의해 표현될 수 있고, "드라마"라는 장르는, "드라마"라는 하나의 토큰에 의해 표현될 수 있다. 따라서, 학습부(720)는 시퀀스형 텍스트 데이터로부터 하나의 장르를 표현하는 하나 이상의 토큰이 획득된 경우, 획득된 하나 이상의 토큰을 기반으로 하나의 장르를 예측하도록 클래스 레이블을 설정할 수 있다. 또한, 학습부(720)는 시퀀스형 텍스트 데이터로부터 복수의 장르들을 표현하는 복수의 토큰들이 획득된 경우, 획득된 복수의 토큰들을 기반으로 복수의 장르들을 예측하도록 클래스 레이블을 설정할 수 있다. 학습부(720)는 예측될 장르의 수에 따라 멀티 클래스 분류 모델, 또는 멀티 레이블 분류 모델을 이용할 수 있으며, 이에 대해서는 도 10c에서 후술하기로 한다.
학습부(720)는 장르 관련 토큰이 포함되지 아니한 입력 시퀀스형 텍스트 데이터(1010)를 장르 예측모델(1020)에 입력하고, 장르 예측모델(1020)의 출력 값 및 미리 설정된 클래스 레이블을 이용하여 손실(loss) 값(예: 크로스 엔트로피)을 결정하고, 손실 값에 기반하여 역전파를 수행함으로써 장르 예측모델(1020)에 대한 훈련 및/또는 학습을 수행할 수 있다. 이에 따라, 장르 예측모델(1020)은 입력 시퀀스형 텍스트 데이터(1010)로부터 클래스 레이블로 설정된 적어도 하나의 장르를 예측(1030) 및/또는 추론하도록 훈련 및/또는 학습될 수 있다.
제3 실시예에 따르면, 장르 예측 모델(1020)은 도 10b에 도시된 바와 같이, 입력 토큰들(예: [CLS, Tok1, Tok2, ..., TokN]에 대응되는 벡터 값들(예: [C, T1, T2, ..., TN])을 출력하는 언어모델(1021), 및 언어모델(1021)에서 출력된 적어도 하나의 벡터 값을 기반으로 클래스 레이블의 확률 값을 출력하는 분류 계층(classification layer)(1027)을 포함할 수 있다. 여기서, 언어모델(1021)은 RoBERTa 모델을 포함할 수 있다. 또한, 분류 계층(1027)은 텍스트 분류 계층, 및/또는 텍스트 분류 헤드 레이어로 지칭될 수 있다.
학습부(720)는 도 10b에 도시된 바와 같이, 장르 관련 토큰이 포함되지 아니하는 입력 시퀀스형 텍스트 데이터(1010)를 예측 모델(1020)에 입력함으로써, 예측 모델(1020)로부터 해당 콘텐츠에 대한 장르 예측 결과를 획득할 수 있다. 이때, 입력 시퀀스형 텍스트 데이터(1010)는 복수의 토큰들 Tok1, Tok2, ..., TokN(1010-1, 1010-2, ..., 1010-N)을 포함할 수 있다. 학습부(720)는 입력 시퀀스형 텍스트 데이터(1010)의 시작 위치에 시작 토큰인 [CLS](1011)을 추가하여 언어모델(1021)에 입력할 수 있다. 언어 모델(1021)은 시작 토큰인 [CLS](1011)에 대응되는 마지막 은닉 벡터 C(1023), 및 복수의 토큰들 Tok1, Tok2, ..., TokN(1010-1, 1010-2, ..., 1010-N)에 대응되는 마지막 은닉 벡터들 T1, T2, ..., TN(1025-1, 1025-2, ..., 1025-N)을 출력할 수 있다. 마지막 은닉 벡터 C(1023)는 입력 시퀀스형 텍스트 데이터(1010)에 포함된 복수의 토큰들 Tok1, Tok2, ..., TokN(1010-1, 1010-2, ..., 1010-N) 전체의 문맥 정보가 반영된 출력 벡터일 수 있다. 마지막 은닉 벡터 C(1023)는 분류 계층(1027)에 입력되고, 분류 계층(1027)은 마지막 은닉 벡터 C(1023)를 기반으로 클래스 레이블의 확률 값을 출력할 수 있다. 학습부(1020)는 출력된 클래스 레이블의 확률 값에 기초하여 해당 콘텐츠가 속한 클래스, 즉, 장르를 예측할 수 있다. 일실시예에 따르면, 분류 계층(1027)은 마지막 은닉 벡터 C(1023)만을 입력으로 이용할 수도 있고, 마지막 은닉 벡터 C(2023)와 다른 마지막 은닉 벡터들 T1, T2, ..., TN(1025-1, 1025-2, ..., 1025-N)을 함께 입력으로 이용할 수 있다. 예를 들어, 분류 계층(1027)은 언어 모델(1021)에서 출력되는 마지막 은닉 벡터들 T1, T2, ..., TN(1025-1, 1025-2, ..., 1025-N)의 평균 풀링을 입력받고, 이를 기반으로 클래스 레이블의 확률 값을 출력할 수 있다.
전술한 바와 같이, 장르 예측모델(1020)은 입력 시퀀스형 텍스트 데이터(1010)에 포함된 모든 토큰들로부터 문맥 정보를 획득하고, 획득된 문맥 정보에 기반하여 장르를 추론하도록 훈련 또는 학습될 수 있다. 예를 들어, 장르 예측모델(1020)은 제목, 시놉시스, 해시태그 등과 같은 토큰들로부터 획득되는 문맥 정보를 기반으로 학습할 수 있다. 이와 같이, 언어모델 기반의 장르 예측모델의 학습 태스크에 대한 입력 및 타겟은 하기 표 4와 같이 나타낼 수 있다.
예측 | 입력 | 타겟 |
장르 예측 | 제목[SEP]시놉시스 토큰1 시놉시스 토큰2 … 시놉시스 토큰N[DIR]감독[/DIR][ATR]배우1 배우2[/ATR][TAG]태그1 태그2[/TAG] | 장르1, 장르2 |
표 4는 입력 시퀀스형 텍스트 데이터가 예측모델에 입력되면, 장르 예측모델이 '장르1', 및 '장르2'의 토큰을 추론하도록 학습됨을 나타낸다. 여기서, 타겟은 클래스 레이블을 의미하여, 타겟이 '장르1', 및 '장르2'로 복수개인 것은, 해당 콘텐츠 아이템이 하나의 장르가 아닌 여러 개의 장르에 속할 수 있기 때문이다. 예를 들어, 특정 콘텐츠 아이템은 대분류 장르 중 '액션/SF' 장르에 속하면서, 소분류 장르 중 '판타지' 장르에 속할 수 있다. 일반적으로, 콘텐츠 아이템들에 대한 장르는 대분류 장르, 및/또는 소분류 장르로 구분될 수 있다. 대분류 장르는, 드라마, 로맨스/멜로, 코미디, 액션/SF, 공포/스릴러 등을 포함할 수 있다. 소분류 장르는, 드라마, 액션, 스릴러, 로맨스, 코미디, 호러, 판타지, SF, 범죄, 사극, 전쟁, 무협 등을 포함할 수 있다. 나열된 장르들은 이해를 돕기 위한 예시일 뿐, 본 개시의 실시예들은 이에 한정되지 아니한다. 전술한 바와 같이, 콘텐츠 아이템들에 대한 장르는 다양하게 구분될 수 있으며, 하나의 콘텐츠 아이템은 하나 이상의 장르에 속할 수 있다. 따라서, 제3 실시예에 따른 장르 예측모델은 콘텐츠 아이템이 속한 하나의 장르만을 추론하도록 학습되거나, 콘텐츠 아이템이 속한 하나 이상의 장르를 추론하도록 학습될 수 있다. 예를 들어, 예측 모델(1020)은 도 10c에 도시된 바와 같은 지도 학습 알고리즘 기반의 멀티 클래스 분류 모델, 또는 멀티 레이블 분류 모델을 포함함으로써, 콘텐츠 아이템이 속한 하나 또는 그 이상의 장르를 추론하도록 학습될 수 있다.
도 10c는 본 개시에 적용 가능한 멀티 클래스 분류 모델 및 멀티 레이블 분류 모델의 개념을 도시한다. 도 10c에서, C는 클래스들의 수를 의미할 수 있다. 즉, 도 10c는 3개의 클래스들(1001, 1003, 1005)이 존재하는 경우를 가정한다.
멀티 클래스 분류 모델(1040)은, 멀티 클래스들 중에서 입력 샘플이 속한 하나의 클래스를 추론하기 위한 모델이다. 따라서, 멀티 클래스 분류 모델(1040)의 레이블, 즉, 타겟 벡터 t는, 1개의 포지티브 클래스(positive class)와 C-1개의 네거티브 클래스(negative class)를 갖는 원-핫 벡터(one-hot vector)로 설정될 수 있다. 예를 들어, 멀티 클래스 분류 모델(1040)의 제1 입력 샘플(1041)에 대한 레이블은 [001]로 설정되고, 제2 입력 샘플(1043)에 대한 레이블은 [100]으로 설정되고, 제3 입력 샘플(1043)에 대한 레이블은 [010]으로 설정될 수 있다. 여기서, 레이블은 입력 샘플에 대해 기대되는 출력 벡터 값으로, 입력 샘플이 실제 속한 클래스를 기반으로 설정될 수 있다. 예를 들어, 레이블이 [100]으로 설정되는 것은 해당 입력 샘플이 실제 제1 클래스(1001)에 속하되, 제2 클래스(1003) 및 제3 클래스(1005)에 속하지 아니함을 의미하고, 레이블이 [010]으로 설정되는 것은 해당 입력 샘플이 실제 제2 클래스(1003)에 속하되, 제1 클래스(1001) 및 제3 클래스(1005)에 속하지 아니함을 의미할 수 있다. 또한, 레이블이 [001]로 설정되는 것은 해당 입력 샘플이 실제 제3 클래스(1005)에 속하되, 제1 클래스(1001) 및 제2 클래스(1003)에 속하지 아니함을 의미할 수 있다.
멀티 레이블 분류 모델(1050)은, 멀티 클래스들 중에서 입력 샘플이 속한 여러 클래스들을 추론하기 위한 모델이다. 멀티 레이블 분류 모델의 레이블, 즉, 타겟 벡터 t는, 복수 개의 포지티브 클래스(positive class)를 갖는 벡터로 설정될 수 있다. 예를 들어, 멀티 레이블 분류 모델의 제4 입력 샘플(1051)에 대한 레이블은 [101]로 설정되고, 제5 입력 샘플(1053)에 대한 레이블은 [010]으로 설정되고, 제6 입력 샘플(1055)에 대한 레이블은 [111]로 설정될 수 있다. 여기서, 레이블은 입력 샘플에 대해 기대되는 출력 벡터 값으로, 입력 샘플이 실제 속한 하나 이상의 클래스를 기반으로 설정될 수 있다. 예를 들어, 레이블이 [101]로 설정되는 것은 해당 입력 샘플이 실제 제1 클래스(1001) 및 제3 클래스(1005)에 속함을 의미하고, 레이블이 [010]으로 설정되는 것은 해당 입력 샘플이 실제 제2 클래스(1003)에 속함을 의미하고, 레이블이 [111]으로 설정되는 것은 해당 입력 샘플이 실제 제1 클래스(1001), 제2 클래스(1003) 및 제3 클래스(1005)에 속함을 의미할 수 있다.
학습부(720)는 도 10c에 도시된 바와 같은 멀티 클래스 분류 모델(1040), 또는 멀티 레이블 분류 모델(1050)을 기반으로 구성된 장르 예측모델(1020)을 통해 콘텐츠 아이템들 각각이 속한 하나 이상의 장르를 추론하도록 학습될 수 있다. 상술한 구조에서, 장르 예측모델이 타겟을 정확하게 추론할수록 언어모델의 의미표상이 더욱 정교해질 수 있다.
다음으로, 도 7b를 참고하면, 모델 학습부(620)의 전처리부(760)는 언어모델의 학습을 위해 콘텐츠 아이템의 텍스트 메타데이터를 획득하고, 획득된 텍스트 메타데이터를 시퀀스형 텍스트 데이터로 변환한다. 즉, 전처리부(760)는 콘텐츠 아이템의 식별 코드, 제목, 장르, 감독, 배우, 해시태그, 및 시놉시스를 포함하는 텍스트 메타데이터를 [표 1]과 같이 구분자들을 포함하는 시퀀스형 텍스트 데이터로 변환할 수 있다. 다시 말해, 도 7b의 전처리부(760)는 도 7a의 전처리부(710)에서 수행 가능한 적어도 하나의 동작을 수행할 수 있다.
제1 학습부(770)는 마스킹된 토큰을 예측 또는 추론하도록 구성된 예측모델을 이용하여 언어모델에 대한 1차 학습을 수행한다. 제1 학습부(770)는 전처리부(760)에서 획득된 콘텐츠 아이템의 시퀀스형 텍스트 데이터 중 특정 종류의 정보를 기반으로 예측모델에 대한 훈련을 수행함으로써, 언어모델에 대한 1차 학습을 수행할 수 있다. 일 실시예에 따르면, 제1 학습부(770)는 콘텐츠 아이템의 시퀀스형 텍스트 데이터 내 해시태그 정보를 기반으로 예측모델에 대한 훈련을 수행할 수 있다. 예를 들어, 제1 학습부(770)는 도 9a에 도시된 바와 같이, 해시태그 정보를 기반으로 언어모델에 대한 1차 학습을 수행할 수 있다. 즉, 제1 학습부(770)는 MLM 방식의 예측모델인 해시태그 예측모델(920)을 이용하여 해시태그 정보를 기반으로 언어모델에 대한 1차 학습을 수행할 수 있다. 다른 예로, 제1 학습부(770)는 도 9b에 도시된 바와 같이, 시놉시스 정보를 기반으로 언어모델에 대한 학습을 수행할 수 있다. 즉, 제1 학습부(770)는 MLM 방식의 예측모델인 시놉시스 예측모델(960)을 이용하여 시놉시스 정보를 기반으로 언어모델에 대한 학습을 수행할 수 있다.
제2 학습부(780)는 마스킹된 토큰을 예측 또는 추론하도록 구성된 예측모델을 이용하여 언어모델에 대한 2차 학습을 수행한다. 즉, 제2 학습부(780)는 제1 학습부(770)에 의해 1차 학습된 언어모델에 대한 추가적인 학습인 2차 학습을 수행한다. 제2 학습부(780)는 MLM 방식의 예측모델을 이용하여 전처리부(760)에서 획득된 콘텐츠 아이템의 시퀀스형 텍스트 데이터 중 1차 학습에 이용되지 아니한 다른 종류의 정보를 기반으로, 1차 학습된 언어모델에 대한 추가적인 훈련을 수행함으로써, 언어모델에 대한 2차 학습을 수행할 수 있다. 일 실시예에 따르면, 1차 학습이 해시태그 정보를 기반으로 수행된 경우, 2차 학습은 콘텐츠 아이템의 시퀀스형 텍스트 데이터 내 시놉시스 정보를 기반으로 수행될 수 있다. 예를 들어, 제2 학습부(780)는 도 9b에 도시된 바와 같이, MLM 방식의 예측모델인 시놉시스 예측모델(960) 이용하여 시놉시스 정보를 기반으로 언어모델에 대한 2차 학습을 수행할 수 있다. 일 실시예에 따르면, 1차 학습이 시놉시스 정보를 기반으로 수행된 경우, 2차 학습은 콘텐츠 아이템의 시퀀스형 텍스트 데이터 내 해시태그 정보를 기반으로 수행될 수 있다. 예를 들어, 제2 학습부(780)는 도 9a에 도시된 바와 같이, MLM 방식의 예측모델인 해시태그 예측모델(920)을 이용하여 해시태그 정보를 기반으로 언어모델에 대한 2차 학습을 수행할 수 있다.
일 실시예에 따르면, 제2 학습부(780)는 제1 학습부(770)의 학습에 이용된 콘텐츠 아이템들의 텍스트 메타데이터를 이용하여 2차 학습을 수행할 수 있다. 일 실시예에 따르면, 제2 학습부(780)는 제1 학습부(770)의 학습에 이용된 콘텐츠 아이템들 중 2차 학습에 이용될 종류의 정보를 갖는 적어도 일부 콘텐츠 아이템들을 선택하고, 선택된 적어도 일부 콘텐츠 아이템들의 텍스트 메타데이터를 이용하여 2차 학습을 수행할 수 있다. 예를 들어, 언어모델의 2차 학습에 해시태그 정보가 이용되는 경우, 제2 학습부(780)는 제1 학습부(770)의 학습에 이용된 콘텐츠 아이템들 중 해시태그 정보를 갖는 콘텐츠 아이템들만을 선택하고, 선택된 콘텐츠 아이템들의 텍스트 메타 데이터를 예측모델에 대한 훈련 데이터 셋으로 이용하여 2차 학습을 수행할 수 있다. 다른 예로, 언어모델의 2차 학습에 시놉시스 정보가 이용되는 경우, 제2 학습부(780)는 제1 학습부(770)의 학습에 이용된 콘텐츠 아이템들 중 시놉시스 정보를 갖는 콘텐츠 아이템들만을 선택하고, 선택된 콘텐츠 아이템들의 텍스트 메타데이터를 예측모델에 대한 훈련 데이터 셋으로 이용하여 2차 학습을 수행할 수 있다. 다만, 이는 예시일 뿐, 제2 학습부(780)의 학습을 위해 이용되는 훈련 데이터 셋은 이에 제한되지 아니한다.
도 7b를 참고한 설명에서, 모델 학습부(620)는 MLM 방식의 예측모델을 이용하여 해시태그 기반의 1차 학습을 수행한 후 시놉시스 기반의 2차 학습을 수행하거나, 시놉시스 기반의 1차 학습을 수행한 후 해시태그 기반의 2차 학습을 수행하였다. 그러나, 본 개시는 이에 한정되지 아니한다. 즉, 모델 학습부(620)는 획득된 콘텐츠 아이템의 시퀀스형 텍스트 데이터에 포함된 다양한 종류의 정보들 중 적어도 두 종류의 정보들을 이용하여 N차 학습을 수행할 수 있다. 예를 들어, 모델 학습부(620)는 MLM 방식의 예측모델을 이용하여 시놉시스 기반의 1차 학습 또는 해시태그 기반의 1차 학습을 수행한 후, 텍스트 분류 방식의 예측모델을 이용하여 장르 기반의 2차 학습을 수행할 수 있다. 다른 예로, 모델 학습부(620)는 텍스트 분류 방식의 예측 모델을 이용하여 장르 기반의 1차 학습을 수행한 후, MLM 방식의 예측모델을 이용하여 해시태그 기반의 2차 학습 또는 시놉시스 기반의 2차 학습을 수행할 수 있다. 또 다른 예로, 모델 학습부(620)는 MLM 방식의 예측모델을 이용하여 시놉시스 기반의 1차 학습을 수행하고, MLM 방식의 예측모델을 이용하여 해시태그 기반의 2차 학습을 수행한 후, 텍스트 분류 방식의 예측모델을 이용하여 장르 기반의 3차 학습을 수행할 수 있다.
상술한 설명에서, 모델 학습부(620)는 해시태그 정보 또는 시놉시스 정보를 기반으로 MLM 방식의 예측모델에 대한 훈련을 통해 언어모델에 대한 학습을 수행하거나, 장르 정보를 기반으로 텍스트 분류 방식의 예측모델에 대한 훈련을 통해 언어모델에 대한 학습을 수행하였다. 그러나, 본 개시는 이에 한정되지 아니한다. 일 실시예에 따르면, 모델 학습부(620)는 해시태그 정보 및 시놉시스 정보 이외의 다른 종류의 정보를 기반으로 MLM 방식의 예측모델에 대한 훈련을 수행하거나, 장르 정보 이외의 다른 종류의 정보를 기반으로 텍스트 분류 방식의 예측모델에 대한 훈련을 수행함으로써, 언어모델에 대한 학습을 수행할 수도 있다. 예를 들어, 모델 학습부(620)는 사용자의 콘텐츠 취향이 반영될 수 있는 다른 정보를 이용하여 언어모델의 학습을 수행할 수 있다. 하기 표 5는 사용자의 선호 콘텐츠에 대한 표현 예시이다.
좋아하는 영화 표현 예시 | 기준 구분 |
액션 영화 좋아한다 | 장르(액션) |
일본 영화 좋아한다 | 해시태그(#일본배경) |
홍길동 감독 영화 좋아한다 | 감독(홍길동) |
감동적인 영화 보고 싶다 | 해시태그(#감동적인) |
김길동 배우 영화는 믿고 본다 | 배우(김길동) |
표 5는 사용자의 선호 콘텐츠가, 콘텐츠의 장르, 해시태그, 감독, 또는 배우 정보에 반영될 수 있음을 나타낸다. 표 5에 나타낸 바와 같이, 감독, 또는 배우 정보는 사용자의 콘텐츠 취향을 반영하는 정보이다. 그러나, 감독 또는 배우 정보에 해당하는 대상 정보들은 매우 많고, 콘텐츠들이 동일한 감독 정보 또는 동일한 배우 정보를 가지는 경우가 드물기 때문에, 감독 또는 배우 정보에 대한 일반화된 의미표상을 학습하는 것은 어렵다. 반면, 해시태그 또는 장르 정보는 사용자의 콘텐츠 취향을 반영하면서도, 다른 피처들(예: 감독, 배우)에 비해 상대적으로 그 대상 정보가 많지 않고, 콘텐츠들이 동일한 장르 및/또는 해시태그를 갖는 경우가 많다. 또한, 장르 정보는 정해진 카테고리 내에서 개별 데이터마다 등장하며, 해시태그 정보에 해당되는 주요 명사들은 사전 학습 단계에서 많이 학습되어 있는 상태이다. 따라서, 장르 또는 해시태그 정보에 대한 일반화된 의미표상을 학습하는 것은 용이하다 할 수 있다. 즉, 모델 학습부(620)는 장르 정보를 이용하여 MLM 방식의 예측모델에 대한 훈련을 수행함으로써, 언어모델에 대한 학습을 수행할 수 있다. 또는, 모델 학습부(620)는 해시태그 정보를 기반으로 텍스트 분류 방식의 예측 모델에 대한 훈련을 수행함으로써, 언어모델에 대한 학습을 수행할 수 있다. 또는, 모델 학습부(620)는 콘텐츠의 텍스트 메타데이터에 포함된 다양한 종류의 정보들을 중 어느 하나의 종류의 정보를 이용하여 언어모델에 대한 학습을 수행할 수 있다.
검색어 획득부(630)는 클라이언트 장치(110)로부터 콘텐츠 검색을 위한 검색어를 획득한다. 예를 들어, 검색어 획득부(630)는 클라이언트 장치(110)와의 유/무선 통신을 통해 텍스트 형태의 검색어를 획득할 수 있다. 일 실시예에 따르면, 검색어 획득부(630)는 클라이언트 장치(110)로부터 음성 데이터 형태의 검색어를 획득할 수 있다. 이 경우, 검색어 획득부(630)는 음성 데이터를 텍스트 데이터로 변환할 수 있다.
유사도 결정부(640)는 모델 학습부(620)에서 학습된 언어모델을 이용하여 검색어와 콘텐츠 아이템 간의 유사도를 결정한다. 이를 위해, 유사도 결정부(640)는 검색어 획득부(640)로부터 검색어를 획득하고, 학습된 언어모델을 이용하여 검색어의 벡터를 결정할 수 있다. 여기서, 검색어는 자연어, 즉, 비정형 데이터로 구성될 수 있다. 예를 들어, 검색어는 적어도 하나의 키워드를 포함하는 단어, 어절, 또는 문장 형태의 자연어일 수 있다. 유사도 결정부(640)는 검색어를 지정된 입력 형식에 적합하게 변환하고, 변환된 검색어를 언어모델에 입력할 수 있다. 예를 들어, 유사도 결정부(640)는 검색어를 이하 표 6에 나타낸 입력1, 입력2, 입력3, 또는 입력4와 같이 변환할 수 있다.
입력1: [CLS]토큰 단위로 구분된 검색어[SEP]
입력2: [CLS]토큰 단위로 구분된 검색어 [SEP] 토큰 단위로 구분된 검색어 [GENRE][MASK][/GENRE][SEP] 입력3: [CLS]토큰 단위로 구분된 검색어 [SEP] 토큰 단위로 구분된 검색어 [TAG][MASK][/TAG][SEP] 입력4: [CLS] 토큰 단위로 구분된 검색어 [SEP] [MASK] [SEP] |
표 6에서, [CLS] 및 [SEP]은 해당 검색어의 시작 위치 및 마지막 위치를 나타내기 위해 삽입되는 스페셜 토큰들로써, 입력1, 입력2, 입력3, 및 입력4에 공통으로 포함된다. 여기서, 시작 위치 및 마지막 위치 각각에 [CLS] 및 [SEP]이 삽입되는 것은, 언어모델의 학습 시에 범용적으로 이용되는 입력 형식, 즉, 표준 입력 형식을 따르기 위함이다. 구체적으로, 입력1은 시작 위치에 [CLS]가 포함되고 마지막 위치에 [SEP]이 포함되는 표준 입력 형식일 수 있다. 또한, 입력2 및/또는 입력3은 본 개시의 실시예에 따라 언어모델의 학습을 위해 이용된 표 2, 표3, 또는 표 4의 입력 형식을 따르기 위한 의도된 표준 입력 형식일 수 있다. 여기서, 입력2 및/또는 입력3의 검색어와 검색어 사이에 [SEP]이 삽입된 것은, 표 2, 표3, 또는 표 4의 제목과 시놉시스 사이의 [SEP]을 통한 언어모델의 학습이 검색어의 벡터를 결정하는 과정에도 반영되도록 하기 위함이다. 또한, 입력2가 <속성1>[SEP]<속성2>[GENRE][MASK][/GENRE] 형태를 가지는 것은, 검색어의 벡터 결정 시에 <속성 1> 및 <속성 2>를 이용하여 장르 관점에서 [MASK]를 예측하도록 하기 위함이다. 특히, [GENRE][MASK][/GENRE]를 추가하여 장르 관점에서 마스킹된 토큰을 예측하는 것은, 장르 스페셜 토큰의 위치에 가중치를 적용하기 위함이다. 즉, 입력2가 [GENRE][MASK][/GENRE]를 포함함으로써, 언어모델은 입력2의 <속성 1> 및 <속성 2>에 해당하는 검색어들을 기반으로 마스킹된 장르 토큰을 추론하고, 마지막 은닉층의 벡터 값들을 이용하여 검색어의 벡터를 출력할 수 있다. 이때, 추론된 장르 토큰의 위치에 가중치가 적용될 수 있으나, 본 개시는 이에 제한되지 않는다. 또한, 입력3이 <속성1>[SEP]<속성2>[TAG][MASK][/TAG] 형태를 가지는 것은, 검색어의 벡터 결정 시에 <속성 1> 및 <속성 2>를 이용하여 해시태그 관점에서 [MASK]를 예측하도록 하기 위함이다. 특히, [TAG][MASK][/TAG]를 추가하는 것은 언어모델의 학습 시에 이용된 입력 형식을 따르도록 함으로써, 언어모델에서 기 학습된 정보가 [MASK] 위치에 반영되도록 하기 위함이다. 입력4는 표3의 <제목>[SEP]<시놉시스> 형식에 따라 [SEP] 뒤에 위치한 시놉시스를 마스킹한 형태이다. 입력4가 <속성1>[SEP][MASK]의 형태를 가지도록 함으로써, 검색어의 벡터 결정 시에 <속성1>을 이용하여 시놉시스 관점에서 [MASK]가 예측되도록 할 수 있다.
유사도 결정부(640)는 검색어를 지정된 입력 형식에 적합하게 변환하고, 변환된 검색어를 학습된 언어모델에 입력할 수 있다. 예를 들어, 검색어가 “긴장감 넘치는 영화”인 경우, 유사도 결정부(640)는 검색어를 입력1과 같이 [CLS]/긴장감/넘치/는/영화/[SEP]로 변환하거나, 입력2과 같이 [CLS]/긴장감/넘치/는/영화/[SEP]/긴장감/넘치/는/영화/[GENRE][MASK][/GENRE][SEP]으로 변환하거나, 입력3과 같이 [CLS]/긴장감/넘치/는/영화/[SEP]/긴장감/넘치/는/영화/[TAG][MASK][/TAG][SEP]으로 변환하거나, 또는 입력 4와 같이 [CLS]/긴장감/넘치/는/영화/[SEP][MASK][SEP]으로 변환할 수 있다.
유사도 결정부(640)는 변환된 검색어를 학습된 언어모델에 입력함으로써, 검색어의 벡터를 획득할 수 있다. 상술한 표 6의 입력1, 입력2, 입력3, 및 입력4는 검색어에 대한 지정된 입력 형식의 예시들일 뿐, 본 개시는 이에 한정되지 아니한다. 즉, 검색어에 대한 지정된 입력 형식은 설계자에 의해 다양하게 설정될 수 있다. 예를 들어, 검색어에 대한 지정된 입력 형식은 "[CLS] 토큰 단위로 구분된 검색어 [GENRE] [MASK] [/GENRE][SEP]", 또는 "[CLS] 토큰 단위로 구분된 검색어 [TAG][MASK][/TAG][SEP]"로 설정될 수 있다. 즉, 검색어에 대한 지정된 입력 형식은 표 2의 <제목>[SEP]<시놉시스>에 맞춰 검색어가 반복되지 아니하고 한 번만 포함되더라도, 학습된 언어모델에서 검색어에 해당하는 토큰들을 통해 마스크를 예측하도록 할 수 있는 입력 구조를 가질 수 있다. 다른 예로, 검색어에 대한 지정된 입력 형식은 "[CLS] 토큰 단위로 구분된 검색어 [SEP] 토큰 단위로 구분된 검색어 [SEP]"로 설정될 수 있다.
일 실시예에 따르면, 지정된 입력 형식은 언어모델의 학습 방식에 기반하여 설정될 수 있다. 예를 들어, 모델 학습부(620)가 도 9a에 도시된 바와 같은 해시태그 예측모델(920)에 기반하여 언어모델에 대한 학습을 수행하는 경우, 검색어에 대한 지정된 입력 형식은 입력1, 또는 입력 3으로 설정될 수 있다. 다른 예로, 모델 학습부(620)가 도 9b에 도시된 바와 같은 시놉시스 예측모델(960)에 기반하여 언어모델에 대한 학습을 수행하는 경우, 검색어에 대한 지정된 입력 형식은 입력1, 또는 입력4로 설정될 수 있다. 또 다른 예로, 모델 학습부(620)가 도 10a에 도시된 바와 같은 장르 예측모델(1010)에 기반하여 언어모델에 대한 학습을 수행하는 경우, 검색어에 대한 지정된 입력 형식은 입력1로 설정될 수 있다. 이는 예시일 뿐, 본 개시는 이에 제한되지 아니한다. 예를 들어, 검색어에 대한 지정된 입력 형식은 언어모델의 학습 방식에 관계없이 설정될 수 있다.
일 실시예에 따르면, 언어모델이 MLM(masked language model) 기반의 학습을 수행하지 아니하더라도, 학습된 언어모델에 입력될 검색어에 대한 지정된 입력 형식은 마스킹된 토큰을 포함할 수 있다. 이는 언어모델이 마스킹된 토큰의 역할을 맥락적으로 이해할 수 있기 때문이다. 즉, 언어 체계의 학습을 통해 언어모델을 구성할 때 기본적으로 언어 데이터에 대한 MLM 태스크가 수행되므로, 언어모델이 장르 예측을 통해 학습된 경우에도 입력에 포함된 [MASK]를 추론할 수 있다.
유사도 결정부(640)는 주기적으로 또는 지정된 이벤트 발생 시, 학습된 언어모델을 통해 적어도 하나의 콘텐츠 아이템별 벡터를 획득한다. 즉, 유사도 결정부(640)는 콘텐츠 저장부(610)에 저장된 콘텐츠 아이템 별로, 텍스트 메타데이터를 획득하고, 획득된 텍스트 메타데이터를 시퀀스형 텍스트 데이터로 변환할 수 있다. 유사도 결정부(640)는 학습된 언어모델을 이용하여 콘텐츠 아이템 별로 획득된 시퀀스형 텍스트 데이터를 기반으로 콘텐츠 아이템 별 벡터를 획득하고, 획득된 콘텐츠 아이템 별 벡터를 콘텐츠 벡터 DB(612)에 저장할 수 있다. 일 실시예에 따르면, 언어모델이 텍스트 분류 방식의 장르 예측모델에 기반하여 학습된 경우, 유사도 결정부(640)는 콘텐츠 아이템 별 시퀀스형 텍스트 데이터에서 장르 관련 토큰들을 제거함으로써, 콘텐츠 아이템 별로 장르 관련 토큰들이 포함되지 아니하는 입력 시퀀스형 텍스트 데이터를 생성할 수 있다. 유사도 결정부(640)는 학습된 언어모델을 이용하여 콘텐츠 아이템 별로 획득된 입력 시퀀스형 텍스트 데이터를 기반으로 콘텐츠 아이템 별 벡터를 획득할 수 있다. 지정된 이벤트는 콘텐츠 저장부(610)에 새로운 콘텐츠 아이템이 추가 저장되는 이벤트, 및/또는 사업자 및/또는 관리자의 콘텐츠 아이템별 벡터 획득 요청 이벤트를 포함할 수 있다.
유사도 결정부(640)는 검색어의 벡터 및 콘텐츠 아이템별 벡터를 기반으로 검색어와 콘텐츠 아이템 간의 유사도를 결정한다. 여기서, 콘텐츠 저장부(610)에 저장된 콘텐츠 아이템의 벡터는 콘텐츠 벡터 DB(612)로부터 획득되거나, 학습된 언어모델을 이용하여 실시간으로 획득될 수도 있다.
예를 들어, 유사도 결정부(640)는, 도 11에 도시된 바와 같이, 유사도를 결정할 수 있다. 도 11은 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 검색어와 콘텐츠 간의 유사도를 계산하는 예를 도시한다. 도 11을 참고하면, 유사도 결정부(640)는 RoBERTa 모델(1120-1)을 이용하여 시맨틱 검색어1의 지정된 입력 형식의 검색어(1102a) 로부터 시맨틱 검색어1의 벡터(1104a)를 획득하고, RoBERTa 모델(1120-2)를 이용하여 콘텐츠 1의 시퀀스형 텍스트 데이터 또는 입력 시퀀스형 텍스트 데이터인 <콘텐츠1 Data>(1102b)로부터 콘텐츠1의 벡터(1104b)를 획득할 수 있다. 여기서, 2개의 RoBERTa 모델들(1120-1, 1120-2)이 사용되는 것으로 표현되었으나, 이는 각 시맨틱 검색어1 및 콘텐츠1 각각에 대해 하나의 벡터가 획득됨을 강조하기 위한 것이고, 유사도 결정부(640)는 하나의 RoBERTa 모델들을 반복적으로 사용하거나 또는 병렬 처리할 수 있다. 즉, 2개의 RoBERTa 모델들(1120-1, 1120-2)은 동일한 방식으로 학습된 동일한 언어모델일 수 있다.
유사도 결정부(640)는 벡터들의 유사도를 계산하는 유사도 계산 블록(1140)을 이용하여 시맨틱 검색어1의 벡터(1104a) 및 콘텐츠1의 벡터(1104b)의 유사도를 계산할 수 있다. 예를 들어, 유사도 계산 블록(1140)은 코사인(cosine) 유사도 알고리즘에 기반하여 유사도를 계산할 수 있다. 시맨틱 검색어1의 벡터(1104a) 및 콘텐츠1의 벡터(1104b)의 유사도는 검색어 및 콘텐츠1의 유사도(1106)로 해석될 수 있다.
일 실시예에 따르면, 유사도 결정부(640)는 모델 학습부(620)에서 언어모델의 학습을 위해 이용된 헤드 레이어(예: MLM 헤드 레이터, 또는 텍스트 분류 헤드 레이어)를 제외하고, 언어모델의 마지막 은닉층의 임베딩 값들을 이용하여 해당 콘텐츠의 시퀀스형 텍스트 데이터에 대한 벡터 값을 결정할 수 있다. 다시 말해, 유사도를 결정하기 위해 사용되는 모델 및 미세 조정을 위해 사용되는 모델은 서로 다른 구조를 가질 수 있다. 즉, 미세 조정을 위한 학습 단계에서의 모델은 마스킹된 토큰을 예측하기 위한 MLM 헤드 레이어, 또는 장르를 추론하기 위한 텍스트 분류 헤드 레이어를 포함하나, 유사도를 결정하는 단계에서의 모델은 헤드 레이어를 포함하지 아니하고, 유사도 계산 블록을 더 포함할 수 있다.
유사도 결정부(640)는 다양한 실시예들에 따라 검색어의 벡터 및 콘텐츠 아이템의 벡터, 즉, 유사도 계산에 이용될 입력 텍스트 벡터들을 획득할 수 있다. 입력 텍스트 벡터를 결정하기 위한 실시예들은 다음과 같다.
일 실시예에 따라, 풀러 출력(pooler output)을 이용하는 방식이 적용될 수 있다. 구체적으로, 풀러 출력을 이용하는 경우, 언어모델의 [CLS] 토큰의 마지막 은닉층 출력 벡터가 입력 텍스트 벡터로서 사용된다.
일 실시예에 따라, 마지막 은닉 상태(last hidden states) 값들의 평균을 이용하는 방식이 적용될 수 있다. 마지막 은닉 상태 값들의 평균을 이용하는 경우, 언어모델의 모든 단어의 마지막 은닉층 출력 벡터에 대해 평균 풀링(average pooling)을 통해 얻어진 벡터가 입력 텍스트 벡터로 사용된다.
일 실시예에 따라, 마지막 은닉 상태 값들의 최대값을 이용하는 방식이 적용될 수 있다. 마지막 은닉 상태 값들의 최대값을 이용하는 경우, 언어모델의 모든 단어의 마지막 은닉층 출력 벡터에 대해 맥스 풀링(max pooling)을 통해 얻어진 벡터가 입력 텍스트 벡터로 사용된다.
전술한 다양한 실시예들 중, 유사도 결정부(640)는 마지막 은닉 상태 값들의 평균을 이용하는 방식에 따라 유사도 계산을 위한 입력 텍스트 벡터를 획득할 수 있다.
추가적으로, 유사도 결정부(640)는 언어모델의 마지막 은닉 상태 값들 중 특정 피처의 위치에 가중치를 부여할 수 있다. 가중치를 부여하는 실시예들은 다음과 같다. 이하 설명에서는 이해를 돕기 위한 예시로 2의 가중치(예: 2배)를 적용하는 경우를 가정하여 설명하나, 가중치가 2로 한정되는 것은 아니다. 예를 들어, 가중치는 k일 수 있으며, k는 1보다 큰 실수일 수 있다.
일 실시예에 따라, 해시태그 값들에 가중치를 부여하는 방식이 적용될 수 있다. 이 경우, 마지막 은닉층의 벡터 값들 중 해시태그 영역을 나타내는 스페셜 토큰인 [TAG]와 [/TAG] 사이에 위치한 토큰들에 대응되는 벡터 값들에 2배의 가중치가 부여될 수 있다.
일 실시예에 따라, 장르 값들에 가중치를 부여하는 방식이 적용될 수 있다. 이 경우, 마지막 은닉층의 벡터 값들 중 장르 영역을 나타내는 스페셜 토큰인 [GENRE]와 [/GENRE] 사이에 위치한 토큰들에 대응되는 벡터 값들에 2배의 가중치가 부여될 수 있다. 예를 들어, 토큰들에 대응되는 벡터값들에 대한 평균 풀링 이후에 장르 위치에 있는 벡터들에 대해서만 다시 평균을 낸 후, 해당 평균을 평균 풀링 결과에 가산할 수 있다. 그러나, 본 개시의 실시예들은 이에 제한되지 않는다. 예를 들어, 평균 풀링 시에 각 피처의 위치별로 가중치를 적용하고, 가중치가 적용된 평균을 산출할 수 있다.
일 실시예에 따라, 제목 및 시놉시스 값들에 가중치를 부여하는 방식이 적용될 수 있다. 이 경우, 마지막 은닉층의 벡터 값들 중 [SEP]의 앞뒤에 위치한 토큰들에 대응되는 벡터 값들에 2배의 가중치가 부여될 수 있다.
일 실시예에 따라, 장르 및 해시태그 값들에 가중치를 부여하는 방식이 적용될 수 있다. 이 경우, 마지막 은닉층의 벡터 값들 중 [TAG]와 [/TAG] 사이에 위치한 토큰들 및 [GENRE]와 [/GENRE] 사이에 위치한 토큰들에 대응되는 벡터 값들에 2배의 가중치가 부여될 수 있다.
일 실시예에 따라, 서로 다른 종류의 피처들의 값들(예: 제목 및 해시태그 값들 또는 시놉시스 및 해시태그 값들)에 가중치를 부여하는 방식이 적용될 수 있다. 이 경우, 마지막 은닉층의 벡터 값들 중 [TAG]와 [/TAG] 사이에 위치한 토큰들 및 [SEP]의 앞에 위치한 토큰들, [SEP]의 뒤에 위치한 토큰들 중 어느 하나의 토큰에 대응되는 벡터 값들에 2배의 가중치가 부여될 수 있다.
일 실시예에 따라, 해시태그 정보를 기반으로 언어모델에 대한 학습이 수행된 경우, 장르 값들에 가중치를 부여하는 방식이 적용될 수 있다. 이 경우, 마지막 은닉층의 벡터 값들 중 장르 영역을 나타내는 스페셜 토큰인 [GENRE]와 [/GENRE] 사이에 위치한 토큰들에 대응되는 벡터 값들에 2배의 가중치가 부여될 수 있다.
전술한 다양한 실시예들 중, 유사도 결정부(640)는 마지막 은닉층의 벡터 값들 중 적어도 하나의 피처의 위치에 대응되는 벡터 값들에 가중치를 부여할 수 있다. 유사도 결정부(640)는 가중치를 부여한 후, 마지막 은닉층의 벡터 값들의 평균을 결정함으로써 유사도 계산을 위한 입력 텍스트 벡터를 획득할 수 있다. 예를 들어, 토큰들에 대응되는 벡터값들에 대한 평균 풀링 이후에 가중치를 부여한 특정 피처의 위치에 있는 벡터들에 대해서만 다시 평균을 낸 후, 해당 평균을 평균 풀링 결과에 가산할 수 있다. 그러나, 본 개시의 실시예들은 이에 제한되지 않는다. 예를 들어, 평균 풀링 시에 각 피처의 위치별로 가중치를 적용하고, 가중치가 적용된 평균을 산출할 수 있다.
일 실시예에 따르면, 언어모델이 텍스트 분류 예측모델인 장르 예측모델에 기반하여 학습된 경우, 마지막 은닉층의 벡터 값들에 장르 값들이 존재하지 아니할 수 있다. 이는, 언어모델에 입력되는 입력 시퀀스형 텍스트 데이터에 장르 관련 토큰이 존재하지 아니하기 때문이다. 이 경우, 전술한 가중치 부여 방식들 중 장르 값에 가중치를 부여하는 방식은 적용되지 아니할 것이다.
콘텐츠 결정부(650)는 유사도 결정부(640)에서 결정된 검색어와 콘텐츠 아이템들 간의 유사도를 기반으로 검색어와 유사한 콘텐츠 아이템들을 결정하고, 결정된 콘텐츠 아이템들을 포함하는 콘텐츠 검색 목록을 생성할 수 있다. 콘텐츠 결정부(650)는 검색어에 대한 각 콘텐츠 아이템의 유사도를 확인하고, 유사도에 기반하여 콘텐츠 검색 목록을 생성할 수 있다. 예를 들어, 콘텐츠 결정부(650)는 서버(120)에 저장된 콘텐츠 아이템들 중 검색어와의 유사도에 대한 내림차순으로 지정된 개수의 콘텐츠 아이템들을 선택하고, 선택된 콘텐츠 아이템들을 포함하는 콘텐츠 검색 목록을 생성할 수 있다. 즉, 콘텐츠 검색 목록에 포함되는 콘텐츠 아이템들은 유사도에 따라 나열될 수 있다.
상술한 설명에서, 모델 학습부(620)는 콘텐츠들의 텍스트 메타데이터의 빈출 단어들을 기본 언어모델의 어휘사전에 추가하고, 빈출 단어들이 추가된 어휘사전을 이용하여 학습할 수 있다. 빈출 단어가 어휘사전에 추가될 경우, 언어모델에서 빈출단어는 분절되지 않고 단일 토큰으로 인식될 수 있다. 예를 들어, 대분류 장르를 나타내는 빈출 단어들이 어휘사전에 추가될 수 있다. 대분류 장르를 나타내는 빈출 단어들이 어휘사전에 추가될 경우, 대분류 장르를 나타내는 빈출 단어가 언어모델에서 단일 토큰으로 인식됨으로써, 언어모델이 인식 가능한 시퀀스 길이가 늘어나서 성능이 더 높게 나타날 수 있다.
전술한 실시예들에서, 모델 학습부(620)는 서버(120)에 포함되는 것으로 설명되었다. 즉, 학습된 언어모델을 사용하는 서버(120)가 언어모델에 대한 학습을 수행할 수 있다. 하지만, 다른 실시예에 따라, 언어모델에 대한 학습은 서버(120)가 아닌 다른 엔티티에 의해 수행될 수 있다. 이 경우, 모델 학습부(620)는 서버(120)에 포함되지 아니할 수 있고, 서버(120)는 제3의 장치로부터 학습된 언어모델에 대한 정보를 수신하고, 학습된 언어모델을 구축한 후, 학습된 언어모델을 이용하여 검색어와 콘텐츠 아이템 간 유사도를 결정할 수 있다.
상술한 설명에서, 검색어는 클라이언트 장치(110)에서 서버(120)로 제공된다. 따라서, 서버(120)에서 클라이언트 장치(110)로부터 어떤 검색어가 입력될 지 사전에 예측하는 것은 용이하지 않다. 따라서, 서버(120)는 클라이언트 장치(110)로부터 특정 검색어에 대응되는 콘텐츠 검색이 요청될 경우, 실시간으로 검색어에 대한 벡터를 계산해야 할 것이다. 그러나, 콘텐츠 아이템들은 서버(120)에 미리 저장된 것이므로, 콘텐츠 아이템들에 대한 벡터는 콘텐츠 검색이 요청 시점과 관련없이, 획득될 수 있다. 즉, 서버(120)는 서버(120)에 새로운 콘텐츠 아이템들이 추가 저장될 때마다, 미리 학습된 언어모델을 이용하여 새로운 콘텐츠 아이템들에 대한 벡터 값들을 계산하고, 계산된 콘텐츠 아이템별 벡터 값을 콘텐츠 벡터 DB(612)에 저장할 수 있다. 서버(120)는 콘텐츠 검색이 요청될 시, 콘텐츠 벡터 DB(612)에 저장된 콘텐츠 아이템별 벡터 값을 이용함으로써, 콘텐츠 검색 목록 생성에 소요되는 시간을 단축시킬 수 있다.
일 실시예에 따르면, 콘텐츠 아이템별 벡터 값은 학습된 언어모델이 저장된 위치에 저장될 수 있다. 이를 통해, 서버(120)에서 콘텐츠 검색을 위한 검색어와 콘텐츠 간의 유사도 결정 시, 동일 위치 또는 동일 경로에 있는 콘텐츠 아이템별 벡터 값을 이용할 수 있다.
상술한 설명에서, 콘텐츠 아이템의 벡터 값을 획득하기 위해, 텍스트 분류 방식의 예측모델인 장르 예측모델에 의해 학습된 언어모델의 입력으로 장르 관련 토큰이 제거된 입력 시퀀스형 텍스트 데이터를 이용하였다. 그러나, 본 개시의 실시예들은 이에 한정되지 아니한다. 예를 들어, 본 개시의 실시예에 따른 서버, 또는 유사도 결정부(640)는 학습된 언어모델이 텍스트 분류 방식의 예측모델인 장르 예측모델에 의해 학습된 경우에도, 장르 관련 토큰을 포함하는 시퀀스형 텍스트 데이터를 학습된 언어모델의 입력으로 이용할 수도 있다. 예컨대, 서버 또는 유사도 결정부(640)는 표 1에 나타낸 바와 같은 장르 관련 토큰을 포함하는 시퀀스형 텍스트 데이터를 학습된 언어모델에 입력함으로써, 콘텐츠 아이템별 벡터 값을 획득할 수도 있다.
도 12는 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 콘텐츠를 검색하는 절차의 예를 도시한다. 도 12의 동작 주체는 도 1의 서버(120)일 수 있다.
도 12를 참고하면, S1201 단계에서, 서버는 검색어를 획득한다. 서버는 클라이언트 장치로부터 텍스트 데이터 형태의 검색어를 획득할 수 있다. 일 실시예에 따르면, 서버는 클라이언트 장치로부터 검색어를 포함하는 콘텐츠 검색 요청 메시지를 수신하고, 콘텐츠 검색 요청 메시지로부터 검색어를 추출할 수 있다. 검색어는 자연어인 비정형 텍스트 데이터를 포함할 수 있다. 예를 들어, 서버는 “긴장감 넘치는 영화”와 같이, 비정형 텍스트 데이터로 구성된 검색어를 획득할 수 있다.
S1203 단계에서, 서버는 학습된 언어모델을 이용하여 검색어와 콘텐츠 아이템 간의 유사도를 결정한다. 서버는 콘텐츠의 메타데이터, 즉, 텍스트 메타데이터를 기반으로 학습된 언어모델을 이용하여 검색어의 벡터 값 및 콘텐츠 아이템별 벡터 값을 획득할 수 있다. 이때, 콘텐츠 아이템별 벡터 값은 콘텐츠의 메타데이터를 기반으로 학습된 언어모델을 이용하여 실시간으로 획득된 것일 수도 있으며, 콘텐츠의 메타데이터를 기반으로 학습된 언어모델을 이용하여 학습된 언어모델을 이용하여 검색어가 획득되기 이전에 미리 획득 및 저장된 것일 수 있다. 콘텐츠의 메타데이터를 기반으로 학습된 언어모델은 모델 학습부(620)에 의해 학습된 언어모델을 포함할 수 있다. 서버는 검색어의 벡터와 콘텐츠 아이템별 벡터 값을 기반으로 검색어와 콘텐츠 아이템들 간의 유사도를 결정할 수 있다. 예를 들어, 서버는 표 6의 입력 형식들 중 어느 하나의 입력 형식으로 변환된 검색어를 학습된 언어모델에 입력함으로써 검색어의 벡터를 획득하고, 제1 콘텐츠 아이템의 시퀀스형 텍스트 데이터를 학습된 언어모델에 입력함으로써 제1 콘텐츠의 벡터를 획득할 수 있다. 서버는 유사도 알고리즘(예: 코사인 유사도 알고리즘)을 이용하여 두 벡터들의 유사도를 계산할 수 있다. 서버는 계산된 유사도를 검색어 및 제1 콘텐츠 아이템 간의 유사도로 결정할 수 있다. 이를 통해, 서버는 검색어 및 콘텐츠 아이템들 각각 간의 유사도를 계산할 수 있다.
S1205 단계에서, 서버는 검색어와 유사한 적어도 하나의 콘텐츠 아이템을 포함하는 콘텐츠 검색 목록을 제공할 수 있다. 즉, 서버는 검색어와 콘텐츠들 간의 유사도를 기반으로 검색어에 유사한 적어도 하나의 콘텐츠 아이템을 결정하고, 결정된 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 생성할 수 있다. 예를 들어, 서버는 보유한 콘텐츠 아이템들 중 검색어와의 유사도의 내림차순으로 지정된 개수의 콘텐츠 아이템들 또는 임계치 이상의 유사도를 가지는 콘텐츠 아이템들을 선택할 수 있다. 예를 들어, 서버는 다른 기준에 따라 지정된 후보 콘텐츠 아이템들 중 검색어와의 유사도의 내림차순으로 지정된 개수의 콘텐츠 아이템들 또는 임계치 이상의 유사도를 가지는 콘텐츠 아이템들을 선택할 수 있다. 그리고, 서버는 선택된 콘텐츠 아이템들에 대한 정보를 포함하는 콘텐츠 검색 목록을 생성하고, 생성된 콘텐츠 검색 목록을 클라이언트 장치로 제공할 수 있다. 다시 말해, 서버는 콘텐츠 검색 목록을 클라이언트 장치에게 송신할 수 있다. 이때, 구체적인 콘텐츠 검색 목록의 형식은 콘텐츠 검색 결과를 제공하는 환경, 서비스 등에 따라 달라질 수 있다.
도 12를 참고한 설명에서, 학습된 언어모델은 후술되는 도 13a, 도 14a, 도 15a, 또는 도 15b 중 어느 하나의 절차에 의해 학습된 언어모델일 수 있다.
도 13a는 본 개시의 일 실시예에 따른 언어모델에 대한 학습을 수행하는 절차의 예를 도시한다. 이하 도 13a의 적어도 일부 동작들은 순차적으로 수행될 수도 있고, 병렬적으로 수행될 수도 있다. 예를 들어, 도 13a의 일부 동작들은 적어도 일시적으로 동일한 시점에 수행될 수 있다. 이하에서 도 13a의 적어도 일부 동작은 도 13b를 참고하여 설명할 것이다. 도 13b는 본 개시의 일 실시예에 따른 언어모델을 이용하는 언어모델의 학습의 예를 도시한다.
도 13a를 참고하면, S1301 단계에서, 서버는 콘텐츠에 대한 텍스트 메타 데이터를 획득한다. 예를 들어, 도 13b에 도시된 바와 같이, 서버는 콘텐츠의 제목, 장르, 감독, 배우, 해시태그, 및 시놉시스를 포함하는 텍스트 메타데이터(1310)를 획득할 수 있다.
S1303 단계에서, 서버는 텍스트 메타데이터에 대한 토크나이징을 수행한다. 예를 들어, 서버는 바이트 페어 인코딩(byte pair encoding, BPE) 알고리즘 또는 형태소 분석기를 활용하여 텍스트 메타데이터를 토큰 단위로 구분할 수 있다. 바이트 페어 인코딩 알고리즘은, 대상 데이터에서 가장 많이 등장한 문자열을 병합해서 데이터를 압축하는 정보 압축 알고리즘으로, 어휘 구축 단계와 토큰화 단계로 이루어질 수 있다. 구체적으로, 바이트 페어 인코딩 알고리즘은 데이터에서 자주 등장하는 문자열을 병합하고, 병합된 문자열을 어휘 집합에 추가하여 어휘 집합을 구축한 후, 대상 데이터 내 각 어절에 어휘 집합의 서브워드가 포함되어 있을 때, 해당 서브워드를 어절에서 분리하는 알고리즘이다. 형태소 분석기는, 대상 데이터를 최소 의미 단위인 형태소로 분절하는 기법이다.
S1305 단계에서, 서버는 시퀀스형 텍스트 데이터를 획득한다. 예를 들어, 토큰 단위로 구분된 데이터에 적어도 하나의 구분자를 추가하여 시퀀스형 텍스트 데이터를 획득할 수 있다. 예를 들어, 시퀀스형 텍스트 데이터는 도 13b와 같이 결정될 수 있다. 도 13b를 참고하면, 서버는 콘텐츠의 텍스트 메타데이터(1310)를 토큰들로 구분하고, 토큰들에 적어도 하나의 분리 토큰 및 적어도 스페셜 토큰(예: 장르 토큰, 감독 토큰, 배우 토큰, 해시태그 토큰 등)을 삽입함으로써 시퀀스형 텍스트 데이터(1320)를 획득할 수 있다.
S1307 단계에서, 서버는 해시태그를 마스킹한다. 서버는 해시태그 영역에 위치한 복수의 토큰들 중 임의의 하나의 토큰을 마스킹할 수 있다. 이때, 해시태그 영역은, 해시태그를 나타내는 스페셜 토큰인 [TAG] 및 [/TAG]를 기반으로 식별될 수 있다. 예를 들어, 도 13b를 참고하면, 서버는 시퀀스형 텍스트 데이터(1320)에서 [TAG], 및 [/TAG] 사이에 "감동" 토큰과 "따듯" 토큰이 존재함을 인식하고, 이들 중 "따뜻" 토큰을 [MASK](1331)로 대체하거나, "감동" 토큰을 [MASK](1332)로 대체할 수 있다. 일 실시예에 따라, 서버는 해시태그 영역에 위치한 복수의 토큰들 중에서 "#"으로 시작하지 않는 토큰을 마스킹할 수 있다. “#”으로 시작하지 아니하는 토큰을 마스킹하는 것은, 체언 및 용언과 같이 핵심의미를 포함하는 토큰은 “#”으로 시작하지 않기 때문이다.
S1309 단계에서, 서버는 언어모델 기반의 예측모델을 이용하여 마스킹된 해시태그를 추론하는 학습을 수행한다. 예를 들어, 서버는 도 13b에 도시된 바와 같이, "따뜻" 토큰이 마스킹된 경우, 예측모델(1340)을 이용하여 마스킹된 해시태그인 "따뜻"을 추론하도록 학습될 수 있고, "감동" 토큰이 마스킹된 경우, 예측모델(1340)을 이용하여 마스킹된 해시태그인 "감동"을 추론하도록 학습될 수 있다. 이때, 예측모델(1340)은 마스킹된 해시태그를 추론해내도록 손실(loss) 값을 역전파하여 학습될 수 있다. 이를 통해, 제목, 및 시놉시스의 토큰의 벡터들이 마스킹된 해시태그의 의미정보를 반영할 수 있도록, 예측모델(1340)에서 각 토큰의 벡터를 도출하는 언어모델의 파라미터들이 업데이트될 수 있다.
서버는 복수의 콘텐츠 아이템들에 대하여 상술한 S1305 단계 및 S1307 단계를 반복적으로 수행할 수 있다. 또한, 서버는 해시태그 영역 내 복수의 토큰들에 대해 S1305 단계 및 S1307 단계를 반복적으로 수행할 수 있다. 이와 같이, 복수의 해시태그 정보들에 대한 랜덤 마스킹 훈련 방식을 반복하는 경우, 복수의 해시태그들의 의미정보가 시퀀스형 텍스트 데이터 내 다른 토큰들의 벡터에 반영되도록 언어모델의 파라미터들이 업데이트될 수 있다. 따라서, 언어모델은 도 13에 도시된 바와 같은 마스킹된 토큰을 추론하는 태스크에 의해 더욱 정교한 의미표상을 제공하도록 학습될 수 있으며, 이에 따라 콘텐츠 간의 유사관계를 더욱 잘 식별할 수 있게 된다.
또한, 상술한 바와 같이 학습된 언어모델은, 시퀀스형 텍스트 데이터 내에 해시태그가 부족하거나 없는 경우에도, 시퀀스형 텍스트 데이터 내 다른 종류의 피처들(예: 제목, 시놉시스)로부터 해시태그 피처의 정보가 함축된 벡터를 반환할 수 있다.
도 14a는 본 개시의 일 실시예에 따른 언어모델에 대한 학습을 수행하는 절차의 예를 도시한다. 이하 도 14a의 적어도 일부 동작들은 순차적으로 수행될 수도 있고, 병렬적으로 수행될 수도 있다. 예를 들어, 도 14a의 일부 동작들은 적어도 일시적으로 동일한 시점에 수행될 수 있다. 이하에서 도 14a의 적어도 일부 동작은 도 14b를 참고하여 설명할 것이다. 도 14b는 본 개시의 일 실시예에 따라 장르 예측을 이용하는 언어모델의 학습의 예를 도시한다.
도 14a를 참고하면, S1401 단계에서, 서버는 콘텐츠에 대한 텍스트 메타 데이터를 획득한다. 예를 들어, 도 14b에 도시된 바와 같이, 서버는 콘텐츠의 제목, 장르, 감독, 배우, 해시태그, 및 시놉시스를 포함하는 텍스트 메타데이터(1410)를 획득할 수 있다.
S1403 단계에서, 서버는 텍스트 메타데이터에 대한 토크나이징을 수행한다. 텍스트 메타 데이터에 대한 토크나이징은 도 13의 S1303 단계에서 설명한 바와 같은 방식으로 수행될 수 있다.
S1405 단계에서, 서버는 시퀀스형 텍스트 데이터를 획득한다. 예를 들어, 토큰 단위로 구분된 데이터에 적어도 하나의 구분자를 추가하여 시퀀스형 텍스트 데이터를 획득할 수 있다. 예를 들어, 시퀀스형 텍스트 데이터는 도 14b와 같이 결정될 수 있다. 예를 들어, 도 14b를 참고하면, 서버는 메타데이터(1410)를 토큰들로 구분하고, 토큰들에 적어도 하나의 분리 토큰 및 적어도 스페셜 토큰(예: 장르 토큰, 감독 토큰, 배우 토큰, 해시태그 토큰 등)을 삽입함으로써 시퀀스형 텍스트 데이터(1420)를 획득할 수 있다.
S1407 단계에서, 서버는 예측모델의 입력 및 타겟을 설정한다. 서버는 시퀀스형 텍스트 데이터에서 장르 관련 토큰들을 제거하여 입력 시퀀스형 텍스트 데이터를 획득하고, 장르 관련 토큰을 기반으로 타겟 레이블을 설정할 수 있다. 예를 들어, 도 14를 참고하면, 서버는 시퀀스형 텍스트 데이터(1420)에서 [GENRE] 및 [/GENRE] 사이에 "드라마" 토큰과 "음악" 토큰이 존재함을 인식하고, 이들이 제거된 입력 시퀀스형 텍스트 데이터(1430)를 예측 모델의 입력으로 설정할 수 있다. 또한, 서버는 시퀀스형 텍스트 데이터(1420)에서 [GENRE] 및 [/GENRE] 사이에 위치한 "드라마" 토큰과 "음악" 토큰을 기반으로 타겟 레이블을 설정할 수 있다.
S1409 단계에서, 서버는 언어모델 기반의 예측모델을 이용하여 입력 시퀀스형 텍스트 데이터에 대한 장르를 추론하는 학습을 수행한다. 예를 들어, 서버는 도 14b에 도시된 바와 같이, 입력 시퀀스형 텍스트 데이터(1430)에 대한 장르가 "드라마", 및 "음악"으로 추론되도록 예측모델(1440)에 대한 학습을 수행할 수 있다. 이때, 예측모델(1440)은 타겟으로 설정된 장르를 추론해내도록 손실(loss) 값을 역전파하여 학습될 수 있다. 이를 통해, 제목, 시놉시스, 및 해시태그의 토큰의 벡터들이 장르 토큰의 의미정보를 반영할 수 있도록, 예측모델(1440)에서 각 토큰의 벡터를 도출하는 언어모델의 파라미터들이 업데이트될 수 있다.
또한, 상술한 바와 같이 학습된 언어모델은, 시퀀스형 텍스트 데이터 내에 장르 정보가 없는 경우에도, 시퀀스형 텍스트 데이터 내 다른 종류의 피처들(예: 제목, 시놉시스)로부터 장르 피처의 정보가 함축된 벡터를 반환할 수 있다.
도 15a는 본 개시의 일 실시예에 따른 언어모델에 대한 학습을 수행하는 절차의 예를 도시한다. 이하 도 15a의 적어도 일부 동작들은 순차적으로 수행될 수도 있고, 병렬적으로 수행될 수도 있다. 예를 들어, 도 15a의 일부 동작들은 적어도 일시적으로 동일한 시점에 수행될 수 있다. 이하에서 도 15a의 적어도 일부 동작은 도 15c를 참고하여 설명할 것이다. 도 15c는 본 개시의 일 실시예에 따라 해시태그 및 시놉시스를 이용하는 언어모델의 학습의 예를 도시한다.
도 15a를 참고하면, S1501 단계에서, 서버는 콘텐츠에 대한 텍스트 메타 데이터를 획득한다. 예를 들어, 도 15c에 도시된 바와 같이, 서버는 콘텐츠의 제목, 장르, 감독, 배우, 해시태그, 및 시놉시스를 포함하는 텍스트 메타데이터(1510)를 획득할 수 있다.
S1503 단계에서, 서버는 텍스트 메타데이터에 대한 토크나이징을 수행한다. 텍스트 메타 데이터에 대한 토크나이징은 도 13의 S1303 단계에서 설명한 바와 같은 방식으로 수행될 수 있다.
S1505 단계에서, 서버는 시퀀스형 텍스트 데이터를 획득한다. 예를 들어, 토큰 단위로 구분된 데이터에 적어도 하나의 구분자를 추가하여 시퀀스형 텍스트 데이터를 획득할 수 있다. 예를 들어, 시퀀스형 텍스트 데이터는 도 15c와 같이 결정될 수 있다. 도 15c를 참고하면, 서버는 메타데이터(1510)를 토큰들로 구분하고, 토큰들에 적어도 하나의 분리 토큰 및 적어도 스페셜 토큰(예: 장르 토큰, 감독 토큰, 배우 토큰, 해시태그 토큰 등)을 삽입함으로써 시퀀스형 텍스트 데이터(1520)를 획득할 수 있다.
S1507 단계에서, 서버는 해시태그를 이용하여 MLM 기반의 1차 학습을 수행한다. 서버는 시퀀스형 텍스트 데이터의 해시태그 영역에 위치한 복수의 해시태그 토큰들 중 임의의 하나의 해시태그 토큰을 마스킹하고, 언어모델 기반의 예측모델을 이용하여 마스킹된 해시태그 토큰을 추론하는 1차 학습을 수행한다. 이때, 해시태그 영역은, 해시태그를 나타내는 스페셜 토큰인 [TAG] 및 [/TAG]를 기반으로 식별될 수 있다. 예를 들어, 도 15c를 참고하면, 서버는 시퀀스형 텍스트 데이터(1520)에서 [TAG], 및 [/TAG] 사이에 "감동" 토큰과 "따듯" 토큰이 존재함을 인식하고, 이들 중 "따뜻" 토큰을 [MASK](1531)로 대체하거나, "감동" 토큰을 [MASK](1532)로 대체할 수 있다. 일 실시예에 따라, 서버는 해시태그 영역에 위치한 복수의 토큰들 중에서 의존적인 토큰이 아닌 토큰을 마스킹할 수 있다. 서버는 도 15c에 도시된 바와 같이, "따뜻" 토큰이 마스킹된 경우, 마스킹된 해시태그 토큰인 "따뜻"을 추론하도록 예측모델(1540)에 대한 학습을 수행하고, "감동" 토큰이 마스킹된 경우, 마스킹된 해시태그 토큰인 "감동"을 추론하도록 예측모델(1540)에 대한 학습을 수행할 수 있다. 이때, 예측모델(1540)은 마스킹된 해시태그 토큰을 추론해내도록 손실(loss) 값을 역전파하여 학습될 수 있다. 이를 통해, 제목, 및 시놉시스의 토큰의 벡터들이 마스킹된 해시태그의 의미정보를 반영할 수 있도록, 예측모델(1540)에서 각 토큰의 벡터를 도출하는 언어모델의 파라미터들이 업데이트될 수 있다. 서버는 복수의 콘텐츠 아이템들에 대하여 상술한 바와 같은 해시태그 마스킹 및 추론 동작을 복수 번 반복함으로써, 1차 학습된 언어모델을 획득할 수 있다.
S1509 단계에서, 서버는 시놉시스를 이용하여 MLM 기반의 2차 학습을 수행한다. 서버는 시퀀스형 텍스트 데이터의 시놉시스 영역에 위치한 복수의 시놉시스 토큰들 중 임의의 하나의 시놉시스 토큰을 마스킹하고, 언어모델 기반의 예측모델을 이용하여 마스킹된 시놉시스 토큰을 추론하는 2차 학습을 수행한다. 이때, 시놉시스 영역은, 분리 토큰 [SEP] 및 장르 영역에 대한 스페셜 토큰 [GENRE]를 기반으로 식별될 수 있다. 예를 들어, 도 15를 참고하면, 서버는 시퀀스형 텍스트 데이터(1520)에서 [SEP], 및 [GENRE] 사이에 "여자" 토큰과 "교도소" 토큰이 존재함을 인식하고, 이들 중 "여자" 토큰을 [MASK](1551)로 대체하거나, "교도소" 토큰을 [MASK](1552)로 대체할 수 있다. 일 실시예에 따라, 서버는 시놉시스 영역에 위치한 복수의 토큰들 중에서 의존적인 토큰이 아닌 토큰을 마스킹할 수 있다. 서버는 도 15c에 도시된 바와 같이, "여자" 토큰이 마스킹된 경우, 마스킹된 시놉시스 토큰인 "여자"을 추론하도록 예측모델(1550)에 대한 학습을 수행하고, "교도소" 토큰이 마스킹된 경우, 마스킹된 시놉시스 토큰인 "교도소"를 추론하도록 예측모델(1550)에 대한 학습을 수행할 수 있다. 이때, 예측모델(1550)은 S1507 단계에서 1차 학습된 언어모델, 즉, 해시태그를 기반으로 학습된 언어모델을 포함할 수 있다. 예측모델(1550)은 마스킹된 시놉시스 토큰을 추론해내도록 손실(loss) 값을 역전파하여 학습될 수 있다. 이를 통해, 제목, 해시태그, 또는 장르의 토큰의 벡터들이 마스킹된 시놉시스 토큰의 의미정보를 반영할 수 있도록, 예측모델(1540)에서 각 토큰의 벡터를 도출하는 언어모델의 파라미터들이 업데이트될 수 있다. 서버는 복수의 콘텐츠 아이템들에 대하여 상술한 바와 같은 시놉시스 마스킹 및 추론 동작을 복수 번 반복함으로써, 2차 학습된 언어모델을 획득할 수 있다.
도 15b는 본 개시의 일 실시예에 따른 언어모델에 대한 학습을 수행하는 절차의 예를 도시한다. 이하 도 15b의 적어도 일부 동작들은 순차적으로 수행될 수도 있고, 병렬적으로 수행될 수도 있다. 예를 들어, 도 15b의 일부 동작들은 적어도 일시적으로 동일한 시점에 수행될 수 있다. 이하에서 도 15b의 적어도 일부 동작은 도 15c를 참고하여 설명할 것이다.
도 15b를 참고하면, S1551 단계에서, 서버는 콘텐츠에 대한 텍스트 메타 데이터를 획득한다. 예를 들어, 도 15c에 도시된 바와 같이, 서버는 콘텐츠의 제목, 장르, 감독, 배우, 해시태그, 및 시놉시스를 포함하는 텍스트 메타데이터(1510)를 획득할 수 있다.
S1553 단계에서, 서버는 텍스트 메타데이터에 대한 토크나이징을 수행한다. 텍스트 메타 데이터에 대한 토크나이징은 도 13의 S1303 단계에서 설명한 바와 같은 방식으로 수행될 수 있다.
S1555 단계에서, 서버는 시퀀스형 텍스트 데이터를 획득한다. 예를 들어, 토큰 단위로 구분된 데이터에 적어도 하나의 구분자를 추가하여 시퀀스형 텍스트 데이터를 획득할 수 있다.
S1557 단계에서, 서버는 시놉시스를 이용하여 MLM 기반의 1차 학습을 수행한다. 서버는 시퀀스형 텍스트 데이터의 시놉시스 영역에 위치한 복수의 시놉시스 토큰들 중 임의의 하나의 시놉시스 토큰을 마스킹하고, 언어모델 기반의 예측모델을 이용하여 마스킹된 시놉시스 토큰을 추론하는 1차 학습을 수행한다.
S1559 단계에서, 서버는 해시태그를 이용하여 MLM 기반의 2차 학습을 수행한다. 서버는 시퀀스형 텍스트 데이터의 해시태그 영역에 위치한 복수의 해시태그 토큰들 중 임의의 하나의 해시태그 토큰을 마스킹하고, 언어모델 기반의 예측모델을 이용하여 마스킹된 해시태그 토큰을 추론하는 2차 학습을 수행한다.
전술한 도 15a 및 도 15b와 바와 같이, 복수의 해시태그 토큰들 및 복수의 시놉시스 토큰들에 대한 랜덤 마스킹 훈련 방식을 반복하는 경우, 복수의 해시태그 토큰들의 의미정보 및 복수의 시놉시스 토큰들의 의미정보가 시퀀스형 텍스트 데이터 내 다른 토큰들의 벡터에 반영되도록 언어모델의 파라미터들이 업데이트될 수 있다. 따라서, 언어모델은 도 15a 및 도 15b에 도시된 바와 같은 마스킹된 토큰을 추론하는 태스크에 의해 더욱 정교한 의미표상을 제공하도록 학습될 수 있으며, 이에 따라 콘텐츠 간의 유사관계를 더욱 잘 식별할 수 있게 된다.
또한, 도 15a 및 도 15b를 참고하여 설명한 바와 같이 학습된 언어모델은, 시퀀스형 텍스트 데이터 내에 해시태그 또는 시놉시스가 부족하거나 없는 경우에도, 시퀀스형 텍스트 데이터 내 다른 종류의 피처들(예: 제목, 장르)로부터 해시태그 피처의 정보가 함축된 벡터를 반환할 수 있다.
도 15a는 서버가 MLM을 이용하여 해시태그 정보를 기반으로 언어모델에 대한 1차 학습을 수행한 후, 시놉시스를 기반으로 언어모델에 대한 2차 학습을 수행하는 절차를 예시하고, 도 15b는 서버가 MLM을 이용하여 시놉시스 정보를 기반으로 언어모델에 대한 1차 학습을 수행한 후, 해시태그를 기반으로 언어모델에 대한 2차 학습을 수행하는 절차를 예시한다. 일반적으로, 콘텐츠 아이템들의 해시태그 정보는 사용자의 콘텐츠 취향에 관련된 정보, 또는 사용자의 콘텐츠 취향을 반영할 수 있는 정보를 포함하는 반면, 시놉시스 정보는 사용자의 콘텐츠 취향에 관련된 정보 뿐만 아니라, 사용자의 콘텐츠 취향과 관련없는 정보도 포함할 수 있다. 따라서, 언어모델의 학습 시에 해시태그 정보 및 시놉시스 정보 중 어느 정보를 먼저 이용하는지에 따라 언어모델의 성능이 달라질 수 있다. 구체적으로, 도 15a와 같이, 언어모델이 해시태그 정보로 학습된 이후, 시놉시스 정보에 기반하여 학습되는 경우, 언어모델의 파라미터들은 해시태그 정보를 기반으로 최적 값에 근접한 값으로 빠르게 수렴된 후, 시놉시스 정보에 기반하여 보다 미세하게 조정(fine-tuning)될 수 있다. 반면, 도 15b와 같이, 해시태그 정보와 시놉시스 정보 중 시놉시스 정보로 먼저 학습하는 경우, 학습된 언어모델의 오버피팅(overfitting)을 방지할 수 있다. 오버피팅은 언어모델이 학습 데이터에 지나치게 적응되어 학습 데이터 이외의 다른 데이터에 대한 성능이 저하되는 상태를 의미한다. 즉, 시놉시스 정보는 사용자의 콘텐츠 취향과 관련 없는 정보도 포함하므로, 언어모델의 오버피팅 현상을 억제할 수 있다.
도 15a 및 도 15b를 참고한 설명에서, 언어모델은 콘텐츠 아이템들의 메타데이터 내 해시태그 정보들 및 시놉시스 정보들을 기반으로 학습되었으나, 언어모델의 학습에 다른 종류의 정보가 이용될 수도 있다. 예를 들어, 언어모델은 MLM을 기반으로 해시태그 정보를 이용하여 1차 학습된 후, 장르 정보를 이용하여 2차 학습될 수 있다. 다른 예로, 언어모델은 MLM을 기반으로 시놉시스 정보를 이용하여 1차 학습된 후, 장르 정보를 이용하여 2차 학습될 수 있다.
또한, 언어모델은 MLM을 기반으로 콘텐츠 아이템들의 시놉시스 정보만을 이용하여 학습될 수도 있다.
도 16은 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 검색어와 콘텐츠 간의 유사도를 결정하는 절차의 예를 도시한다. 도 16의 절차는 도 12의 S1203 단계의 일예로서, 검색어와 하나의 콘텐츠 아이템 간의 유사도를 판단하는 절차로 이해될 수 있다. 이하 도 16의 적어도 일부 동작들은 순차적으로 수행될 수도 있고, 병렬적으로 수행될 수도 있다. 예를 들어, 도 16의 일부 동작들은 적어도 일시적으로 동일한 시점에 수행될 수 있다.
도 16을 참고하면, S1601 단계에서, 서버는 검색어의 벡터를 결정한다. 여기서, 검색어의 벡터는 해시태그를 추론하도록 미리 학습된 언어모델에 기반하여 결정될 수 있다. 예를 들어, 서버는 클라이언트 장치로부터 검색어를 획득하고, 획득된 검색어에 대한 토크나이징을 수행한 후, 적어도 하나의 구분자를 삽입함으로써 표 6의 입력 형식들 중 어느 하나를 따르는 변환된 검색어를 획득할 수 있다. 그리고, 서버는 학습된 언어모델을 이용하여 변환된 검색어에 대응하는 벡터를 획득할 수 있다. 구체적으로, 서버는 변환된 검색어를 학습된 언어모델에 입력하고, 언어모델의 출력 데이터를 획득함으로써, 벡터, 즉, 임베딩 값을 결정할 수 있다. 학습된 언어모델은 도 6에서 설명한 바와 같이 모델 학습부(620)에 의해 학습된 언어모델일 수 있다. 다만, 유사도 계산을 위해 언어모델에서 학습을 위해 이용되는 헤드 레이어(예: MLM 헤드 레이어, 또는 텍스트 분류 헤드 레이어)를 제외하고, 언어모델 자체의 마지막 은닉계층 임베딩 값을 콘텐츠의 텍스트 메타데이터에 대한 임베딩 값으로 사용할 수 있다. 이때, 일 실시예에 따라, 서버는 풀러 출력을 이용하는 방식, 마지막 은닉 상태 값들의 평균을 이용하는 방식, 또는 마지막 은닉 상태 값들의 최대값을 이용하는 방식 중 어느 하나를 이용하여, 유사도 계산을 위한 검색어의 벡터를 결정할 수 있다. 또한, 일 실시예에 따라, 서버는 유사도 계산을 위한 검색어의 벡터 결정 시, 마지막 은닉 상태 값들 중 특정 피처의 위치에 해당하는 값에 가중치를 부여할 수 있다.
S1603 단계에서, 서버는 콘텐츠 아이템의 벡터를 결정한다. 여기서, 콘텐츠 아이템의 벡터는 텍스트 메타데이터를 이용하여 결정되는 시퀀스형 텍스트 데이터에 기반하여 결정될 수 있다. 예를 들어, 서버는 콘텐츠 아이템의 텍스트 메타데이터를 획득하고, 획득된 텍스트 메타데이터에 대한 토크나이징을 수행한 후, 적어도 하나의 구분자를 삽입함으로써 시퀀스형 텍스트 데이터를 획득할 수 있다. 그리고, 서버는 학습된 언어모델을 이용하여 콘텐츠 아이템의 시퀀스형 텍스트 데이터에 대응하는 벡터를 획득할 수 있다. 구체적으로, 서버는 시퀀스형 텍스트 데이터를 학습된 언어모델에 입력하고, 언어모델의 출력 데이터를 획득함으로써, 벡터, 즉, 임베딩 값을 결정할 수 있다. 학습된 언어모델은 도 6에서 설명한 바와 같이 모델 학습부(620)에 의해 학습된 언어모델일 수 있다. 다만, 유사도 계산을 위해 언어모델에서 학습을 위해 이용되는 헤드 레이어(예: MLM 헤드 레이어, 또는 텍스트 분류 헤드 레이어)를 제외하고, 언어모델 자체의 마지막 은닉계층 임베딩 값을 콘텐츠의 텍스트 메타데이터에 대한 임베딩 값으로 사용할 수 있다. 이때, 일 실시예에 따라, 서버는 풀러 출력을 이용하는 방식, 마지막 은닉 상태 값들의 평균을 이용하는 방식, 또는 마지막 은닉 상태 값들의 최대값을 이용하는 방식 중 어느 하나를 이용하여, 유사도 계산을 위한 콘텐츠의 벡터를 결정할 수 있다. 또한, 일 실시예에 따라, 서버는 유사도 계산을 위한 콘텐츠의 벡터 결정 시, 마지막 은닉 상태 값들 중 특정 피처의 위치에 해당하는 값에 가중치를 부여할 수 있다.
S1605 단계에서, 서버는 검색어와 콘텐츠 아이템 간의 유사도를 계산한다. 즉, 서버는 코사인 유사도 알고리즘에 기반하여 검색어 및 콘텐츠 아이템 간의 유사도를 결정할 수 있다. 예를 들어, 서버는 검색어의 벡터 및 콘텐츠 아이템의 벡터의 유사도를 계산하고, 계산된 유사도를 검색어 및 콘텐츠 아이템의 유사도로 결정할 수 있다.
도 17은 본 개시의 일 실시예에 따른 학습된 언어모델을 이용하여 콘텐츠를 검색하는 절차의 다른 예를 도시한다. 이하 도 17의 적어도 일부 동작들은 순차적으로 수행될 수도 있고, 병렬적으로 수행될 수도 있다. 예를 들어, 도 17의 일부 동작들은 적어도 일시적으로 동일한 시점에 수행될 수 있다. 이하에서 도 17의 적어도 일부 동작은 도 18을 참고하여 설명할 것이다. 도 18은 본 개시의 일 실시예에 따른 검색 시나리오의 예를 도시한다.
도 17을 참고하면, S1701 단계에서, 서버는 검색 이벤트를 감지한다. 검색 이벤트는 클라이언트 장치로부터 콘텐츠 검색 요청을 수신함으로써 감지될 수 있다. 예를 들어, 서버는 클라이언트 장치로부터 텍스트 데이터 형태의 검색어를 포함하는 콘텐츠 검색 요청 메시지를 수신함으로써, 검색 이벤트를 감지할 수 있다.
S1703 단계에서, 서버는 텍스트 검색을 수행한다. 다시 말해, 서버는 검색 엔진을 이용하여 텍스트 형태의 검색어에 대응되는 콘텐츠 아이템을 검색할 수 있다. 예를 들어, 도 18에 도시된 바와 같이, 서버의 프로세서(1810)는 텍스트 검색을 위해 검색 엔진(1820)으로 텍스트 형태의 검색어를 전송함으로써, 검색 엔진(1810)에 검색어에 대응되는 콘텐츠 아이템들의 검색을 요청하고, 검색 엔진(1810)으로부터 검색 결과를 수신할 수 있다. 검색 엔진(1810)은 단어 기반의 역색인(inverted index) 방식으로 콘텐츠 아이템들을 저장 및 관리함으로써, 텍스트 형태의 검색어에 포함된 단어들에 대응되는 콘텐츠 아이템들을 검색할 수 있다. 검색 엔진(1810)은 검색어에 포함된 단어들에 대응되는 콘텐츠 아이템이 존재하는 경우, 해당 콘텐츠 아이템의 정보를 포함하는 검색 결과를 프로세서(1810)로 제공할 수 있다. 검색 엔진(1810)은 검색어에 포함된 단어들에 대응되는 콘텐츠 아이템이 존재하지 않는 경우, 검색된 콘텐츠 아이템이 없음을 프로세서(1810)에 통지할 수 있다. 일 실시예에 따르면, 검색 엔진(1810)은 엘리스틱서치(elasticsearch) 기반의 분산형 검색 및 분석 엔진일 수 있다. 그러나, 본 발명의 실시예들에 따른 검색 엔진은 엘라스틱서치 기반의 엔진으로 제한되지 않는다.
S1705 단계에서, 서버는 텍스트 검색에 대한 검색 결과가 존재하는지 여부를 결정한다. 예를 들어, 서버는 도 18에 도시된 바와 같이 검색 엔진(1820)으로부터 획득된 텍스트 결과에 적어도 하나의 콘텐츠 아이템의 정보가 포함되어 있는지 여부를 결정할 수 있다.
텍스트 검색에 대한 검색 결과가 존재하는 경우, 서버는 S1713 단계에서, 검색 결과를 기반으로 검색 목록을 생성 및 제공한다. 다시 말해, 서버는 검색 결과에 포함된 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 생성하고, 생성된 콘텐츠 검색 목록을 클라이언트 장치로 제공할 수 있다. 예를 들어, 서버는 텍스트 검색을 통해 검색된 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 클라이언트 장치에게 전송할 수 있다.
텍스트 검색에 대한 검색 결과가 존재하지 않는 경우, 서버는 S1707 단계에서, 학습된 언어모델을 이용하여 검색어의 벡터를 결정할 수 있다. 예를 들어, 도 18에 도시된 바와 같이, 서버의 프로세서(1810)는 텍스트 검색에 대한 검색 결과가 존재하지 않는 경우, 벡터 기반의 검색 수행을 결정할 수 있다. 서버의 프로세서(1810)는 벡터 검색 엔진(1830)으로 검색어를 전송함으로써, 벡터 기반의 콘텐츠 검색을 요청할 수 있다. 이에 따라, 벡터 검색 엔진(1830)은 언어모델(1832)을 이용하여 검색어의 벡터를 결정할 수 있다. 예를 들어, 벡터 검색 엔진(1830)은 검색어를 토큰 단위로 구분한 후, 적어도 하나의 구분자를 삽입함으로써, 표 6의 입력 형식 중 어느 하나의 입력 형식으로 변환된 검색어를 획득할 수 있다. 그리고, 벡터 검색 엔진(1830)은 변환된 검색어를 언어모델(1832)에 입력함으로써, 검색어의 벡터를 획득할 수 있다. 여기서, 언어모델(1832)은 모델 학습부(620)에 의해 학습된 언어모델일 수 있다. 다만, 유사도 계산을 위해, 예측모델에서 학습을 위한 헤드 레이어(예: MLM 헤드 레이어, 또는 텍스트 분류 헤드 레이어)를 제외한 언어모델 자체의 마지막 은닉계층 임베딩 값을 콘텐츠의 텍스트 메타데이터에 대한 임베딩 값으로 사용할 수 있다.
S1709 단계에서, 서버는 콘텐츠 아이템별 벡터와의 유사도를 결정한다. 즉, 서버는 콘텐츠 아이템별 벡터를 획득하고, 검색어의 벡터와 콘텐츠 아이템별 벡터 간의 유사도를 결정할 수 있다. 일 실시예에 따르면, 벡터 검색 엔진(1830)은 도 18에 도시된 바와 같은 언어모델(1832)을 이용하여 콘텐츠 아이템별 벡터를 획득할 수 있다. 예를 들어, 벡터 검색 엔진(1830)은 검색 엔진(1820) 또는 검색 엔진(1820)에 연동된 DB로부터 지정된 제1 조건을 만족하는 콘텐츠 아이템들을 획득하고, 언어모델(1832)을 이용하여 콘텐츠 아이템들의 벡터를 결정할 수 있다. 여기서, 지정된 제1 조건은, 저장 시기, 저장 위치, 및/또는 분류 중 적어도 하나에 관련된 조건을 포함할 수 있다. 예를 들어, 지정된 제1 조건을 만족하는 콘텐츠 아이템들은, 서버에 저장된 모든 콘텐츠 아이템들, 지정된 기간 내에 서버에 추가 저장된 신규 콘텐츠 아이템들, 지정된 분류에 해당하는 콘텐츠 아이템들, 또는 지정된 위치에 저장된 콘텐츠 아이템들일 수 있다. 벡터 검색 엔진(1830)은 콘텐츠 아이템별로 텍스트 메타데이터를 획득하고, 획득된 텍스트 메타데이터에 대한 토크나이징을 수행한 후, 적어도 하나의 구분자를 삽입함으로써 콘텐츠 아이템별 시퀀스형 텍스트 데이터를 획득할 수 있다. 그리고, 벡터 검색 엔진(1830)은 학습된 언어모델(1832)을 이용하여 콘텐츠 아이템별 시퀀스형 텍스트 데이터에 대응하는 벡터를 획득할 수 있다.
일 실시예에 따르면, 벡터 검색 엔진(1830)은 벡터 검색 엔진(1830) 내 저장소, 벡터 검색 엔진(1830)에 연동된 DB, 검색 엔진(1820), 또는 검색 엔진(1820)에 연동된 DB로부터 기 저장된 콘텐츠 아이템들의 벡터를 획득할 수 있다. 벡터 검색 엔진(1830)은 유사도 계산 알고리즘을 이용하여 검색어의 벡터와 콘텐츠 아이템별 벡터 간의 유사도를 결정할 수 있다. 여기서, 검색어의 벡터와 콘텐츠 아이템별 벡터 간의 유사도는 검색어와 콘텐츠 아이템 간의 유사도로 결정될 수 있다.
S1711에서, 서버는 유사도에 기반하여 검색 목록을 생성 및 제공할 수 있다. 즉, 서버는 검색어와 콘텐츠 아이템 간의 유사도를 기반으로, 검색어에 유사한 적어도 하나의 콘텐츠 아이템을 결정하고, 결정된 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 생성할 수 있다. 예를 들어, 도 18에 도시된 바와 같이, 벡터 검색 엔진(1830)은 지정된 제1 조건을 만족하는 콘텐츠 아이템들 중 검색어와의 유사도의 내림차순으로 지정된 개수의 콘텐츠 아이템들 또는 임계치 이상의 유사도를 가지는 콘텐츠 아이템들을 선택할 수 있다. 그리고, 벡터 검색 엔진(1830)은 선택된 콘텐츠 아이템들의 정보를 포함하는 벡터 기반의 검색 결과를 프로세서(1810)로 제공할 수 있다. 프로세서(1830)는 벡터 기반의 검색 결과에 포함된 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 생성하고, 생성된 콘텐츠 검색 목록을 클라이언트 장치에게 송신할 수 있다. 이때, 구체적인 콘텐츠 검색 목록의 형식은 콘텐츠 검색 결과를 제공하는 환경, 서비스 등에 따라 달라질 수 있다.
상술한 도 17 및 도 18에서, 서버는 검색어에 대한 텍스트 검색을 수행하고, 텍스트 검색 결과가 존재하지 아니한 경우, 즉, 텍스트 검색을 수행하였으나 적어도 하나의 콘텐츠 아이템이 검색되지 아니한 경우에 벡터 기반의 검색을 수행하였다. 그러나, 서버는 검색어에 대한 텍스트 검색 결과가 지정된 검색 품질을 만족하지 아니하는 경우에도 벡터 기반의 검색을 수행할 수 있을 것이다. 지정된 검색 품질은 검색되는 콘텐츠 아이템의 개수에 대한 조건, 검색되는 콘텐츠 아이템의 텍스트 매칭 스코어에 대한 조건, 또는 검색되는 콘텐츠 아이템에 대한 사용자 검색 횟수 별 실제 클릭 비율에 대한 조건을 포함할 수 있다. 예를 들어, 서버는 검색어에 대한 텍스트 검색 결과로 지정된 개수 이하의 콘텐츠 아이템이 검색된 경우에도 벡터 기반의 검색을 수행할 수 있을 것이다. 예를 들어, 서버는 검색어에 대한 텍스트 검색을 통해 획득된 콘텐츠 아이템의 개수가 지정된 개수보다 작거나 같은 경우, 언어모델을 이용한 벡터 기반의 검색을 수행하여 적어도 하나의 콘텐츠 아이템을 추가 검색할 수 있다. 다른 예로, 서버는 텍스트 검색에 의해 검색된 콘텐츠 아이템의 텍스트 매칭 스코어가 지정된 스코어 이하인 경우, 벡터 기반의 검색을 수행하여 적어도 하나의 콘텐츠 아이템을 추가 검색할 수 있다. 텍스트 매칭 스코어는 검색어와 검색된 콘텐츠 아이템 간의 유사성을 나타내는 스코어를 의미하며, TF-IDF(Term Frequency-Inverse Document Frequency) 또는 BM25(Best Matching 25)를 기반으로 계산될 수 있다. 또 다른 예로, 서버는 검색되는 콘텐츠 아이템에 대한 사용자의 검색 횟수 별 실제 클릭 비율이 지정된 값 이하인 경우, 벡터 기반의 검색을 수행할 수 있다. 사용자의 검색 횟수 별 실제 클릭 비율은, 사용자의 검색 이력 및/또는 검색 결과에 대한 사용자 피드백 이력에 기반하여 계산될 수 있다. 예를 들어, 사용자의 검색 횟수 별 실제 클릭 비율은, 검색된 콘텐츠 아이템에 대한 정보가 이전에 동일 검색어 또는 유사하거나 다른 검색어에 대한 결과로서 클라이언트 장치에게 제공된 후, 사용자가 해당 콘텐츠 아이템을 클릭(또는 선택)하였는지 여부를 나타내는 클라이언트 장치로부터의 피드백 이력을 기반으로 계산될 수 있다. 이때, 서버는 텍스트 검색을 통해 획득된 콘텐츠 아이템의 정보 및 벡터 기반의 검색을 통해 추가 획득된 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 생성할 수 있다.
일 실시예에 따르면, 서버는 검색어의 텍스트 검색에 대한 검색 결과가 존재하지 않는 경우, 해당 검색어를 NR(No result) 검색어로 저장할 수 있다. 또한, 서버는 클라이언트 장치에게 검색어에 대한 콘텐츠 검색 목록을 전송한 후, 콘텐츠 검색 목록 내 적어도 하나의 콘텐츠 아이템이 사용자에 의해 클릭(또는 선택)되었는지 여부를 클라이언트 장치로부터 피드백 받을 수 있다. 콘텐츠 검색 목록 내 적어도 하나의 콘텐츠 아이템이 클릭되지 아니한 경우, 서버는 해당 콘텐츠 검색 목록에 대응되는 검색어를 NR 검색어로 저장할 수 있다. NR 검색어는 사용자별, 및/또는 클라이언트 장치별로 저장될 수 있다.
일 실시예에 따르면, 서버는 NR 검색어가 저장된 상태에서 신규 콘텐츠 아이템이 감지될 시, NR 검색어와 신규 콘텐츠 아이템 간의 유사도를 계산할 수 있다. NR 검색어와 콘텐츠 아이템 간의 유사도는, 학습된 언어모델을 이용하여 획득되는 NR 검색어의 벡터 및 신규 콘텐츠 아이템의 벡터를 기반으로 계산될 수 있다. 서버는 계산된 유사도가 지정된 임계값 이상인 경우, 신규 콘텐츠 아이템을 추천하는 추천 알림 메시지를 해당 NR 검색어의 사용자에 대응되는 클라이언트 장치에게 전송할 수 있다. 이때, 추천 알림 메시지는 푸시 메시지 형태로 제공될 수 있다. 예를 들어, 서버는 신규 콘텐츠 아이템을 NR 검색어의 추천 콘텐츠 아이템으로 결정하고, 클라이언트 장치에게 이전에 사용자가 검색한 검색어에 관련된 신규 콘텐츠 아이템이 존재함을 알리는 푸시 메시지를 전송할 수 있다.
일 실시예에 따르면, 서버는 NR 검색어에 대한 지정된 삭제 조건이 만족되는 경우, NR 검색어를 서버에서 삭제할 수 있다. 예를 들어, 서버는 제1 NR 검색어에 관련된 추천 알림 메시지를 클라이언트 장치에게 전송한 후, 클라이언트 장치로부터 제1 NR 검색어에 관련된 추천 알림 메시지 내 신규 콘텐츠 아이템이 사용자에 의해 클릭 또는 선택되었음을 나타내는 피드백 메시지를 수신한 경우, 제1 NR 검색어를 서버에서 삭제할 수 있다. 다른 예를 들어, 서버는 제2 NR 검색어에 관련된 추천 알림 메시지가 클라이언트 장치에게 전송되는 동작이 지정된 횟수만큼 수행되면, 제2 NR 검색어를 서버에서 삭제할 수 있다. 또 다른 예를 들어, 서버는 제3 NR 검색어에 관련된 추천 알림 메시지가 전송되었는지 여부에 관련없이, 제3 NR 검색어의 저장 기간이 지정된 기간을 초과한 경우, 제3 NR 검색어를 서버에서 삭제할 수 있다.
본 개시의 다양한 실시예들에 따르면, 서버는 파이썬 모듈 및/또는 엘리스틱서치 모듈을 이용하여 검색어와 콘텐츠의 유사도를 계산할 수 있다. 예를 들어, 검색어와 콘텐츠의 유사도는 도 19에 도시된 바와 같이 파이썬 모듈에서 계산되거나, 도 20에 도시된 바와 같이 엘리스틱서치 모듈에서 계산될 수 있다.
도 19는 본 개시의 일 실시예에 따른 파이썬 모듈을 기반으로 검색을 수행하는 예를 도시한다. 도 19를 참고하면, 검색 클라이언트(1910)는 REST(Representational State Transfer) API(Application Programming Interface)(1920)를 통해 시맨틱 검색어, 또는 시맨틱 검색어를 포함하는 쿼리를 언어모델(1930)에게 전송한다. 예를 들어, 시맨틱 검색어는 “긴장감 넘치는 영화”와 같이, 적어도 하나의 키워드를 포함하는 자연어일 수 있다. 시맨틱 검색어는 실시간으로 처리되어야 하므로, REST API(1920)를 거쳐 파이썬 모듈의 언어모델(1930)로 제공될 수 있다. REST API(1920)는 REST 아키텍처 스타일의 제약 조건을 준수하고 RESTful 웹 서비스와 상호 작용할 수 있도록 하는 애플리케이션 프로그래밍 인터페이스를 의미한다.
언어모델(1930)은 REST API(1920)를 통해 수신된 시맨틱 검색어의 벡터를 계산하고, 시맨틱 검색어의 벡터와 콘텐츠 벡터 간의 유사도를 계산한다. 언어모델(1930)은 자연어를 처리하는 CBF 모델로, 예를 들어, RoBERTa일 수 있다. 언어모델(1930)은 콘텐츠의 텍스트 메타데이터를 기반으로 학습될 수 있다. 일 실시예에 따르면, 언어모델(1930)은 학습에 이용된 콘텐츠 아이템들의 벡터 값들을 DB(1940)에 저장할 수 있다. 일 실시예에 따르면, 언어모델(1930)은 지정된 이벤트 발생 시 콘텐츠 아이템들의 벡터 값들을 계산하고, 계산된 콘텐츠 아이템들의 벡터 값들을 DB(1940)에 저장할 수 있다. 언어모델(1930)은 시맨틱 검색어의 벡터와 콘텐츠 벡터 간의 유사도 계산 시, DB(1940)에 저장된 콘텐츠 아이템별 벡터 값들을 이용할 수 있다.
언어모델(1930)은 시맨틱 검색어와 콘텐츠 아이템들 간의 유사도에 기초하여 적어도 하나의 콘텐츠 아이템들을 선택하고, 선택된 콘텐츠 아이템들의 정보를 포함하는 콘텐츠 검색 목록을 REST API(1920)를 통해 검색 클라이언트(1910)에게 제공할 수 있다. 여기서, 콘텐츠 아이템들의 정보는, 콘텐츠 아이템 식별 정보, 또는 검색어와의 유사도 정보 중 적어도 하나를 포함할 수 있다.
일 실시예에 따르면, 파이썬 모듈은 시맨틱 검색어와 콘텐츠 아이템들 간의 유사도에 기초하여 적어도 하나의 콘텐츠 아이템들을 선택한 후, 적어도 하나의 선택된 콘텐츠 아이템에 대한 필터링을 수행하는 후처리 로직을 수행할 수 있다. 예를 들어, 파이썬 모듈은 적어도 하나의 선택된 콘텐츠 아이템 중 비인기 콘텐츠 아이템 또는 사용자 비선호 콘텐츠 아이템을 필터링함으로써, 비인기 콘텐츠 아이템 또는 사용자 비선호 콘텐츠 아이템이 제외된 콘텐츠 검색 목록을 생성할 수 있다.
도 19에서 설명한 바와 같이, 파이썬 모듈에서 검색어와 콘텐츠의 유사도를 계산하는 방식은, 파이썬 모듈이 벡터 기반 검색을 위한 모든 동작을 수행하므로, 관리가 용이한 장점을 가진다.
도 20은 본 개시의 일 실시예에 따른 엘라스틱 검색 엔진을 기반으로 검색을 수행하는 예를 도시한다. 도 20을 참고하면, 검색 클라이언트(2010)는 시맨틱 검색어, 또는 시맨틱 검색어를 포함하는 쿼리를 엘라스틱서치(2020)에게 전송한다. 예를 들어, 시맨틱 검색어는 “긴장감 넘치는 영화”일 수 있다. 엘라스틱서치(2020)는 REST API(2030)를 통해 시맨틱 검색어, 또는 시맨틱 검색어를 포함하는 쿼리를 파이썬 모듈의 언어모델(2040)에게 전송한다.
언어모델(2040)은 REST API(2030)를 통해 수신된 시맨틱 검색어의 벡터를 계산하고, 시맨틱 검색어의 벡터를 REST API(2030)를 통해 엘라스틱서치(2020)에게 전송한다. 언어모델(2040)은 자연어를 처리하는 CBF 모델로, 예를 들어, RoBERTa일 수 있다. 언어모델(2040)은 콘텐츠의 텍스트 메타데이터를 기반으로 학습될 수 있다.
엘라스틱서치(2020)는 시맨틱 검색어의 벡터와 콘텐츠 벡터 간의 유사도를 계산한다. 엘라스틱서치(2020)는 DB(2050)에 기 저장된 콘텐츠 아이템별 벡터 값들을 획득하고, 획득된 콘텐츠 아이템별 벡터 값들을 이용하여 시맨틱 검색어의 벡터와 콘텐츠 벡터 간의 유사도를 계산할 수 있다. 예를 들어, 엘라스틱서치(2020)는 REST API(2030)를 통해 언어모델(2030)로부터 시맨틱 검색어에 대한 벡터 값을 획득하기 이전에 언어모델(2040)과 싱크(sync)가 맞는 콘텐츠 아이템별 벡터를 DB(2050)로부터 획득해야 한다. 엘라스틱서치(2020)는 REST API(2030)를 통해 획득되는 시맨틱 검색어의 벡터와 미리 획득한 콘텐츠 아이템별 벡터들 간의 유사도를 계산할 수 있다. DB(2050)는 언어모델(2030)로부터 콘텐츠 아이템들의 벡터 값들을 획득하여 저장할 수 있다.
엘라스틱서치(2020)는 시맨틱 검색어와 콘텐츠 아이템들 간의 유사도에 기초하여 적어도 하나의 콘텐츠 아이템들을 선택하고, 선택된 콘텐츠 아이템들의 정보를 포함하는 콘텐츠 검색 목록을 검색 클라이언트(2010)에게 제공할 수 있다. 여기서, 콘텐츠 아이템들의 정보는, 콘텐츠 아이템 식별 정보, 또는 검색어와의 유사도 정보 중 적어도 하나를 포함할 수 있다. 일 실시예에 따르면, 엘라스틱서치(2020)는 시맨틱 검색어와 콘텐츠 아이템들 간의 유사도에 기초하여 적어도 하나의 콘텐츠 아이템들을 선택한 후, 적어도 하나의 선택된 콘텐츠 아이템에 대한 필터링을 수행하는 후처리 로직을 수행할 수 있다. 예를 들어, 엘라스틱서치(2020)는 적어도 하나의 선택된 콘텐츠 아이템 중 비인기 콘텐츠 아이템 또는 사용자 비선호 콘텐츠 아이템을 필터링함으로써, 비인기 콘텐츠 아이템 또는 사용자 비선호 콘텐츠 아이템이 제외된 콘텐츠 검색 목록을 생성할 수 있다. 다른 예로, 엘라스틱서치(2020)는 보유 중인 다양한 콘텐츠 아이템별 피처를 활용하여 적어도 하나의 선택된 콘텐츠 아이템에 대한 필터링을 수행할 수 있다.
도 20에서 설명한 바와 같이, 엘라스틱서치(2020)에서 검색어의 벡터와 콘텐츠의 유사도를 계산하는 방식은, 높은 서비스 성능(예: 레이턴시(latency), 또는 쓰루풋(throughput))을 얻을 수 있는 장점을 가진다.
도 19 및 도 20의 엘리스틱서치는 검색 엔진 모듈의 일 예에 불과하며, 본 개시의 실시예들은 이에 제한되지 않는다. 예를 들어, 엘리스틱서치 대신 역색인 구조에서 벡터 검색에 필요한 기능(예: 코사인 유사도 검색 기능 등)을 지원하는 다양한 검색 엔진 모듈(예: Lucene, Solr 등)이 이용될 수 있음은 당업자에게 자명할 것이다. 또한, 도 19 및 도 20의 REST API는 API의 일 예에 불과하며, 본 개시의 실시예들은 이에 제한되지 않는다. 예를 들어, REST API 대신 SOAP(Simple Object Access Protocol) API와 같은 다른 API가 이용될 수 있음은 당업자에게 자명할 것이다.
상술한 설명에서, 검색어의 벡터는 서버에서 언어모델을 통해 실시간으로 획득하였다. 그러나, 다양한 실시예들에 따라 검색어의 벡터는 언어모델을 통해 미리 계산된 후 서버에 저장될 수 있다. 예를 들어, 서버는 지정된 제2 조건을 만족하는 검색어들의 벡터 값들을 DB에 저장할 수 있다. 지정된 제2 조건은, 검색 요청 횟수, 및/또는 검색 빈도에 대한 조건을 포함할 수 있다. 예를 들어, 서버는 제1 검색어에 대한 검색 요청 횟수가 지정된 횟수 이상 발생된 경우, 제1 검색어의 벡터 값을 DB에 저장할 수 있다. 다른 예로, 서버는 제2 검색어에 대한 검색 요청 횟수가 지정된 기간 내에 지정된 횟수 이상 발생된 경우, 제2 검색어의 벡터 값을 DB에 저장할 수 있다. 이 경우, 서버는 DB에 저장된 검색어의 벡터를 이용하여 콘텐츠 검색 목록을 생성할 수 있다.
도 21a는 본 개시의 실시예에 적용 가능한 트랜스포머의 구조의 예를 도시하고, 도 21b는 본 개시의 실시예에 적용 가능한 트랜스포머의 인코더 및 디코더 블록들의 상세 구조의 예를 도시한다.
도 21a 및 도 21b를 참고하면, 트랜스포머(2100)는 N개의 인코더 블록들(2110-1 내지 2110-N), 및 N개의 디코더 블록들(2120-1 내지 2120-N)을 포함할 수 있다. N개의 인코더 블록들(2110-1 내지 2110-N) 각각은 셀프 어탠션(self-attention) 블록(2111) 및 피드 포워드(feed forward) 블록(또는 뉴럴 네트워크)(2113)을 포함할 수 있다. N개의 디코더 블록들(2120-1 내지 2120-N) 각각은 셀프-어탠션 블록(2121), 인코더-디코더 어탠션 블록(2123), 및 피드 포워드 블록(2125)을 포함할 수 있다.
트랜스포머(2100)의 입력은 토큰화되어 임베딩되고, 포지셔널 인코딩(positional encoding) 벡터와 더해진 후, N개의 인코더 블록들(2110-1 내지 2110-N) 중 가장 하단에 위치한 제1 인코더 블록(2110-1)에 입력될 수 있다. N개의 인코더 블록들(2110-1 내지 1810-N) 각각의 셀프-어탠션 블록(2111)은 입력되는 여러 단어들 중 집중할 단어를 결정할 수 있다. 셀프-어탠션 블록(2111)은 입력되는 임베딩 벡터에 세 개의 학습 가능한 행렬들을 각각 곱하여, 쿼리 벡터, 키 벡터, 및 밸류 벡터를 생성할 수 있다. 셀프-어탠션 블록(2111)은 복수의 어탠션 헤드를 가지고, 복수의 쿼리 벡터, 키 벡터, 및 밸류 벡터를 이용하여 각 목적에 맞게 각 벡터들을 각각 다른 표현 공간으로 나타내는 멀티-헤드(multi-headed) 어탠션 블록일 수 있다. 셀프- 어탠션 블록(2111)의 출력은 피드 포워드 블록(2113)의 신경망을 통과하여 다음 인코더 블록(예: 제2 인코더 블록(2110-2))으로 입력될 수 있다.
N개의 인코더 블록들(2110-1 내지 2110-N) 중 가장 상단에 위치한 제N 인코더 블록(2110-N)의 출력은 어탠션 벡터들인 키 벡터와 밸류 벡터일 수 있으며, 이들은 N개의 디코더 블록들(2120-1 내지 2120-N) 각각의 인코더-디코더 어탠션 블록(2123)으로 입력될 수 있다.
트랜스포머(2100)의 이전 출력은 N개의 디코더 블록들(2120-1 내지 2120-N) 중 가장 하단에 위치한 제1 디코더 블록(2120-1)의 입력으로 이용될 수 있다. 예를 들어, 트랜스포머(2100)의 이전의 출력은 토큰화되어 임베딩되고, 포지셔널 인코딩 벡터와 더해진 후에 제1 디코더 블록(2120-1)에 입력될 수 있다.
N개의 디코더 블록들(2120-1 내지 2120-N) 각각의 셀프-어탠션 블록(2121)은 N개의 인코더 블록들(2110-1 내지 2110-N) 각각의 셀프-어탠션 블록(2111)과 유사하다. 그러나, N개의 디코더 블록들(2120-1 내지 2120-N) 각각의 셀프-어탠션 블록(2121)은 출력 시퀀스 내에서 현재 위치의 이전 위치들에 대해서만 어탠션할 수 있도록 마스킹을 수행한다는 점에서 N개의 인코더 블록들(2110-1 내지 2110-N) 각각의 셀프-어탠션 블록(2111)과 차이를 가진다.
N개의 디코더 블록들(2120-1 내지 2120-N) 각각의 인코더-디코더 어탠션 블록(2123)은 셀프-어탠션 블록(2121)에서 출력되는 쿼리 벡터와 제N 인코더 블록(2110-N)으로부터 출력되는 키 벡터 및 밸류 벡터를 입력으로 하여 출력을 생성할 수 있다.
N개의 디코더 블록들(2120-1 내지 2120-N) 중 가장 상단에 위치한 제N 디코더 블록(2120-N)의 출력 벡터는, 선형 계층(linear layer)(2130) 및 소프트맥스 계층(softmax layer)(2140)에 입력될 수 있다. 선형 계층(2130) 및 소프트맥스 계층(2140)은 제N 디코더 블록(2120-N)의 출력 벡터를 하나의 단어로 변경할 수 있다. 선형 계층(2130)은 완전 연결된(fully-connected) 신경망으로 구성되며, 제N 디코더 블록(2120-N)의 출력 벡터를 더 큰 사이즈의 벡터인 로짓(logits) 벡터로 투영시킬 수 있다. 투영된 로짓 벡터의 각 셀은 대응되는 각 단어에 대한 점수를 가질 수 있다. 소프트맥스 계층(2140)은 각 셀의 점수들을 확률로 변환할 수 있다. 각 셀의 변환된 확률 값들은 모두 양수 값을 가지며, 각 확률 값들의 합은 1이 될 수 있다. 이때, 가장 높은 확률 값을 가지는 셀에 해당하는 단어가 해당 소프트맥스 계층(2140)의 최종 결과물로서 출력될 수 있다. 소프트맥스 계층(2140)의 출력은 다시 임베딩되어 포지셔널 인코딩 벡터와 더해진 후, 가장 하단에 위치한 제1 디코더 블록(2120-1)으로 입력될 수 있다.
N개의 인코더 블록들(2110-1 내지 2110-N) 및 N개의 디코더 블록들(2120-1 내지 2120-N) 각각에 포함되는 서브 블록들은 잔차 연결(residual connection) 방식으로 연결될 수 있으며, 각 서브 블록들 사이에는 계층 정규화(layer-normalization)(또는 Add & normalize) 블록이 포함될 수 있다. 계층 정규화 블록은, 셀프 어탠션 블록(2111, 2121)의 입력과 출력을 합하여 한 계층에서 과도하게 데이터가 변경되는 것을 방지할 수 있다.
트랜스포머(2100)는 문장 내 단어들의 관계를 추적하여 문장의 맥락과 의미를 학습하는 신경망으로, 라벨링된 데이터 세트 없이 요소들 사이의 패턴을 수학적으로 찾아낼 수 있다. 따라서, 트랜스포머(2100)는 데이터 세트를 생성하는 과정이 필요 없고, 병렬 프로세싱에 적합하기 때문에 빠른 속도를 가질 수 있다.
RNN(Recurrent Neural Network)은 단어의 위치에 따라 단어를 순차적으로 입력받아 처리하는 특성으로 인해 각 단어의 위치 정보(position information)를 가질 수 있어 자연어 처리 분야에서 많이 활용되었다. 그러나, RNN은 병렬 처리가 어렵고, 장기 의존성(long-term dependency)을 갖는 문제점이 있다. 반면, 트랜스포머는 RNN 대신 어탠션 메커니즘을 이용하여 입/출력 간 디팬던시를 포착할 수 있다. 또한, 트랜스포머는 학습 시 인코더 블록에서 각 단어의 위치(position)에 어탠션(attention)을 적용, 즉, 쿼리(query)와 가장 밀접한 연관성을 가지는 값(value)을 강조하고, 디코더 블록에서 마스킹(masking) 기법을 이용하므로, 병렬 처리가 가능하다.
트랜스포머의 인코더/디코더 입/출력의 크기, 인코더/디코더의 개수, 어탠션 헤드의 개수, 및/또는 피드 포워드 신경망의 은닉층의 크기 등은 하이퍼 파라미터로 사용자에 의해 변경될 수 있다.
BERT 모델은 상술한 바와 같은 트랜스포머 기반의 언어 모델로, 트랜스포머의 일부 구성요소를 치환, 또는 삭제하여 사용할 수 있다. 도 22는 본 개시의 실시예에 적용 가능한 BERT 모델의 구조의 예를 도시한다. 예를 들어, BERT 모델(2200)은 도 22에 도시된 바와 같이, 트랜스포머에서 디코더 블록들(2120-1 내지 2120-N)을 제외하고, 인코더 블록들(2110-1 내지 2110-N)을 이용하는 모델일 수 있다.
BERT 모델에서, 입력 문장의 시작 위치에는 [CLS] 토큰이 위치할 수 있고, 문장의 끝 위치에는 문장의 구분을 위한 [SEP] 토큰이 이용될 수 있다. BERT 연산을 거친 후의 출력 임베딩은 문장의 문맥이 모두 고려된 임베딩이 될 수 있다. 예를 들어, [CLS]는 BERT 입력 시에 임베딩 층을 지난 단순한 임베딩 벡터지만, BERT 모델을 통과하면 문장 내 모든 단어 벡터들이 고려된 문맥 정보를 가진 벡터가 될 수 있다.
BERT 모델 등의 트랜스포머 기반 모델을 이용한 자연어 처리는 2단계로 진행될 수 있다. 2단계는, 거대 인코더가 입력 문장들을 임베딩하여 언어를 모델링하는 사전 훈련(Pre-training)하는 단계, 및 사전 훈련에 의해 학습된 모델을 미세 조정(fine-tuning)하여 여러 자연어 처리 과제(Task)를 수행하는 단계를 포함할 수 있다.
BERT 모델은 사전 학습(pre-trained) 모델로서, 특정 과제(task)를 수행하기 전에 사전 훈련 임베딩을 실시하므로 기존의 임베딩 기술보다 과제의 성능을 더욱 향상시킬 수 있는 모델로 관심받고 있다. BERT 모델을 적용한 모델링 과정을 살펴보면, 사전 학습(pre-trained)은 비지도 학습(unsupervised learning) 방식으로 진행되고 대량의 코퍼스(말뭉치)를 인코더가 임베딩하고, 이를 트렌스퍼(transfer)하여 미세 조정(fine-tuning)을 통해 목적에 맞는 학습을 수행함으로써 과제를 수행할 수 있다. BERT 모델의 다른 특징은 양방향 모델을 적용하여 문장의 앞과 뒤의 문맥을 고려하는 것으로, 이전보다 더 높은 정확도를 나타낼 수 있다는 점이다.
상술한 바와 같이, 본 개시의 실시예에 따라 학습된 언어모델은, 해시태그 정보 뿐만 아니라 다른 종류의 피처의 의미정보 및/또는 문맥정보를 복합적으로 고려하여 콘텐츠의 벡터를 획득하고, 이를 기반으로 검색어와 콘텐츠 간의 유사도를 계산한다. 따라서, 본 개시의 실시예에 따라 언어모델에 기반하여 검색어와 콘텐츠 간의 유사도를 판단하는 방식은 단순히 검색어와 유사한 메타데이터를 갖는 콘텐츠를 필터링하는 것과는 상이하다 할 수 있다.
본 발명의 예시적인 방법들은 설명의 명확성을 위해서 동작의 시리즈로 표현되어 있지만, 이는 단계가 수행되는 순서를 제한하기 위한 것은 아니며, 필요한 경우에는 각각의 단계가 동시에 또는 상이한 순서로 수행될 수도 있다. 본 발명에 따른 방법을 구현하기 위해서, 예시하는 단계에 추가적으로 다른 단계를 포함하거나, 일부의 단계를 제외하고 나머지 단계를 포함하거나, 또는 일부의 단계를 제외하고 추가적인 다른 단계를 포함할 수도 있다.
본 발명의 다양한 실시예는 모든 가능한 조합을 나열한 것이 아니고 본 발명의 대표적인 양상을 설명하기 위한 것이며, 다양한 실시예에서 설명하는 사항들은 독립적으로 적용되거나 또는 둘 이상의 조합으로 적용될 수도 있다.
또한, 본 발명의 다양한 실시예는 하드웨어, 펌웨어(firmware), 소프트웨어, 또는 그들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 범용 프로세서(general processor), 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
본 발명의 범위는 다양한 실시예의 방법에 따른 동작이 장치 또는 컴퓨터 상에서 실행되도록 하는 소프트웨어 또는 머신-실행가능한 명령들(예를 들어, 운영체제, 애플리케이션, 펌웨어(firmware), 프로그램 등), 및 이러한 소프트웨어 또는 명령 등이 저장되어 장치 또는 컴퓨터 상에서 실행 가능한 비-일시적 컴퓨터-판독가능 매체(non-transitory computer-readable medium)를 포함한다.
Claims (18)
- 콘텐츠 스트리밍 시스템에서 서버의 동작 방법에 있어서,검색어를 획득하는 단계;콘텐츠 아이템들의 메타데이터에 포함되는 시놉시스 정보를 기반으로 학습된 언어모델을 이용하여, 상기 검색어에 대응하는 제1 벡터를 결정하는 단계;상기 검색어에 대응되는 제1 벡터와 제1 콘텐츠 아이템의 제2 벡터를 기반으로 상기 검색어와 상기 제1 콘텐츠 아이템 간의 유사도를 결정하는 단계; 및상기 유사도에 기반하여 선택된 상기 제1 콘텐츠 아이템을 포함하는 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 제공하는 단계를 포함하는 방법.
- 청구항 1에 있어서,상기 제1 콘텐츠 아이템의 제2 벡터는 상기 시놉시스 정보를 기반으로 학습된 언어모델을 통해 획득되는 방법.
- 청구항 2에 있어서,상기 제1 콘텐츠 아이템의 제2 벡터는, 상기 제1 콘텐츠 아이템의 제1 메타 데이터에 포함되는 정보를 포함하는 시퀀스형 텍스트 데이터를 상기 시놉시스 정보를 기반으로 학습된 언어모델에 입력하여 획득되는 방법.
- 청구항 1에 있어서,상기 언어모델은, MLM(masked language model)에 기반하여 상기 콘텐츠 아이템들의 시놉시스 정보를 예측하는 훈련을 통해 학습되는 방법.
- 청구항 4에 있어서,상기 언어모델은, 상기 MLM에 기반하여 상기 콘텐츠 아이템들의 시놉시스 정보를 예측하는 훈련을 통해 1차 학습되고, 상기 MLM에 기반하여 상기 콘텐츠 아이템들의 해시태그 정보를 예측하는 훈련을 통해 2차 학습되는 방법.
- 청구항 4에 있어서,상기 언어모델은, 상기 MLM에 기반하여 상기 콘텐츠 아이템들의 해시태그 정보를 예측하는 훈련을 통해 1차 학습되고, 상기 MLM에 기반하여 상기 콘텐츠 아이템들의 시놉시스 정보를 예측하는 훈련을 통해 2차 학습되는 방법.
- 청구항 1에 있어서,상기 검색어에 대응하는 제1 벡터를 결정하는 단계는,상기 검색어를 토큰 단위로 구분하는 단계;상기 토큰 단위로 구분된 검색어에 적어도 하나의 구분자를 삽입하여 변환된 검색어를 획득하는 단계; 및상기 변환된 검색어를 상기 언어모델에 입력하여 상기 제1 벡터를 획득하는 단계를 포함하는 방법.
- 청구항 7에 있어서,상기 변환된 검색어는, 분리 토큰 또는 스페셜 토큰 중 적어도 하나를 포함하는 방법.
- 청구항 1에 있어서,상기 콘텐츠 아이템들의 내용을 설명하는 텍스트 메타데이터를 시퀀스형 텍스트 데이터로 변환하는 단계;상기 시퀀스형 텍스트 데이터의 시놉시스 영역에 위치한 시놉시스 토큰을 마스킹(making)하는 단계; 및상기 마스킹된 시놉시스 토큰을 예측하도록 상기 언어모델에 대한 훈련을 수행하는 단계를 더 포함하며,상기 텍스트 메타데이터는 제목, 시놉시스, 복합 장르, 감독, 배우, 또는 해시태그 정보 중 적어도 하나를 포함하는 방법.
- 청구항 9에 있어서,상기 텍스트 메타데이터를 상기 시퀀스형 텍스트 데이터로 변환하는 단계는,상기 텍스트 메타데이터를 복수의 토큰들로 구분하는 단계; 및상기 토큰들 사이에 적어도 하나의 구분자를 삽입함으로써 상기 시퀀스형 텍스트 데이터를 생성하는 단계를 포함하며,상기 적어도 하나의 구분자는, 서로 다른 종류의 피처들을 구분하기 위한 분리 토큰 및 특정 피처를 나타내기 위해 특정 피처의 앞 및 뒤에 삽입되는 스페셜 토큰 중 적어도 하나를 포함하는 방법.
- 청구항 9에 있어서,상기 시놉시스 토큰을 마스킹하는 단계는,상기 시놉시스 영역에 위치한 복수의 시놉시스 토큰들 중에서 비의존적인 토큰을 선택하는 단계; 및상기 선택된 비의존적인 토큰을 마스킹하는 단계를 포함하며,상기 비의존적인 토큰은, 지정된 기호로 시작하지 아니하는 토큰인 방법.
- 청구항 9에 있어서,상기 훈련은, 예측모델을 이용하여 수행되며,상기 예측모델은, 마스킹된 시놉시스 토큰을 포함하는 시퀀스형 텍스트 데이터를 입력으로 취하고, 상기 시퀀스형 텍스트 데이터에 대응되는 벡터 값들을 출력하는 상기 언어모델, 및 상기 언어모델에서 출력되는 적어도 하나의 벡터 값에 대응되는 적어도 하나의 입력 토큰을 예측하도록 구성된 MLM(masked language model) 헤드 레이어를 포함하는 방법.
- 청구항 1에 있어서,상기 제1 벡터 및 상기 제2 벡터 각각은, 상기 학습된 언어모델의 마지막 은닉층의 출력 벡터 값들 중 지정된 피처(feature)의 위치에 해당하는 벡터 값에 가중치를 부여함으로써 결정되는 방법.
- 청구항 1에 있어서,상기 검색어에 대응되는 제1 벡터와 복수의 콘텐츠 아이템들 각각의 벡터를 기반으로, 상기 검색어와 상기 복수의 콘텐츠 아이템들 간의 유사도를 결정하는 단계를 더 포함하며,상기 콘텐츠 목록을 제공하는 단계는,상기 제1 콘텐츠 아이템 및 상기 복수의 콘텐츠 아이템들 중 상기 검색어와의 유사도에 대한 내림차순으로 상기 제1 콘텐츠 아이템을 포함하는 둘 이상의 콘텐츠 아이템을 선택하는 단계; 및상기 선택된 둘 이상의 콘텐츠 아이템의 정보를 포함하는 상기 콘텐츠 목록을 제공하는 단계를 포함하는 방법.
- 청구항 1에 있어서,상기 검색어에 대응하는 제1 벡터를 결정하기 이전에, 상기 검색어를 기반으로 텍스트 검색을 수행하는 단계를 더 포함하며,상기 텍스트 검색을 통해 획득된 결과가 지정된 조건을 만족하지 않는 경우, 상기 검색어에 대응하는 제1 벡터를 결정하는 단계를 수행하는 방법.
- 청구항 15에 있어서,상기 지정된 조건은, 적어도 하나의 콘텐츠 아이템이 검색되는지 여부, 또는 검색된 콘텐츠 아이템의 개수 중 적어도 하나에 대한 조건인 방법.
- 콘텐츠 스트리밍 시스템에서 서버에 있어서,적어도 하나의 클라이언트 장치와 신호를 송수신하는 통신부; 및상기 통신부와 전기적으로 연결된 프로세서를 포함하며,상기 프로세서는,검색어를 획득하고,콘텐츠 아이템들의 메타데이터에 포함되는 시놉시스 정보를 기반으로 학습된 언어모델을 이용하여, 상기 검색어에 대응하는 제1 벡터를 결정하고,상기 검색어에 대응되는 제1 벡터와 제1 콘텐츠 아이템의 제2 벡터를 기반으로 상기 검색어와 상기 제1 콘텐츠 아이템 간의 유사도를 결정하고,상기 유사도에 기반하여 선택된 상기 제1 콘텐츠 아이템을 포함하는 적어도 하나의 콘텐츠 아이템의 정보를 포함하는 콘텐츠 검색 목록을 제공하는 서버.
- 프로세서에 의해 동작되면 제1항 내지 제16항 중의 어느 한 항에 따른 방법을 실행하기 위해 기록 매체에 저장된 프로그램.
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2023-0046976 | 2023-04-10 | ||
KR1020230046976A KR102605100B1 (ko) | 2023-04-10 | 2023-04-10 | 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치 |
KR1020230063795A KR102708124B1 (ko) | 2023-05-17 | 2023-05-17 | 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치 |
KR10-2023-0063795 | 2023-05-17 | ||
KR20230150514 | 2023-11-03 | ||
KR10-2023-0150514 | 2023-11-03 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2024215057A1 true WO2024215057A1 (ko) | 2024-10-17 |
Family
ID=93059814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2024/004729 WO2024215057A1 (ko) | 2023-04-10 | 2024-04-09 | 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2024215057A1 (ko) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200092465A (ko) * | 2019-01-07 | 2020-08-04 | 삼성전자주식회사 | 추천 컨텐츠 리스트 제공 방법 및 그에 따른 전자 장치 |
KR20200144417A (ko) * | 2019-06-18 | 2020-12-29 | 빅펄 주식회사 | 멀티모달 콘텐츠 분석 시스템 및 그 방법 |
KR20210121387A (ko) * | 2020-03-30 | 2021-10-08 | 주식회사 메디치소프트 | 콘텐츠에서 키워드를 추출하고, 추출된 키워드를 이용하여 콘텐츠를 추천하는 방법, 장치 및 프로그램 |
KR20230012095A (ko) * | 2021-01-08 | 2023-01-25 | 동의대학교 산학협력단 | 설명가능한 인공지능을 위하여 자연어 처리 알고리즘을 분석하는 방법 및 장치 |
KR20230036011A (ko) * | 2021-09-06 | 2023-03-14 | 성균관대학교산학협력단 | 문서 검색 모델의 학습 방법 및 이를 지원하는 장치 |
-
2024
- 2024-04-09 WO PCT/KR2024/004729 patent/WO2024215057A1/ko unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200092465A (ko) * | 2019-01-07 | 2020-08-04 | 삼성전자주식회사 | 추천 컨텐츠 리스트 제공 방법 및 그에 따른 전자 장치 |
KR20200144417A (ko) * | 2019-06-18 | 2020-12-29 | 빅펄 주식회사 | 멀티모달 콘텐츠 분석 시스템 및 그 방법 |
KR20210121387A (ko) * | 2020-03-30 | 2021-10-08 | 주식회사 메디치소프트 | 콘텐츠에서 키워드를 추출하고, 추출된 키워드를 이용하여 콘텐츠를 추천하는 방법, 장치 및 프로그램 |
KR20230012095A (ko) * | 2021-01-08 | 2023-01-25 | 동의대학교 산학협력단 | 설명가능한 인공지능을 위하여 자연어 처리 알고리즘을 분석하는 방법 및 장치 |
KR20230036011A (ko) * | 2021-09-06 | 2023-03-14 | 성균관대학교산학협력단 | 문서 검색 모델의 학습 방법 및 이를 지원하는 장치 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020235712A1 (ko) | 콘텐츠 기반의 스타일을 갖는 텍스트 또는 음성을 생성하는 인공 지능 장치 및 그 방법 | |
WO2019182265A1 (ko) | 인공 지능 기기 및 그의 동작 방법 | |
WO2020105948A1 (en) | Image processing apparatus and control method thereof | |
WO2019031707A1 (en) | MOBILE TERMINAL AND METHOD FOR CONTROLLING A MOBILE TERMINAL USING MACHINE APPRENTICESHIP | |
WO2020235696A1 (ko) | 스타일을 고려하여 텍스트와 음성을 상호 변환하는 인공 지능 장치 및 그 방법 | |
WO2014003283A1 (en) | Display apparatus, method for controlling display apparatus, and interactive system | |
WO2013187714A1 (en) | Display apparatus, method for controlling the display apparatus, server and method for controlling the server | |
WO2014107097A1 (en) | Display apparatus and method for controlling the display apparatus | |
WO2021006405A1 (ko) | 인공지능 서버 | |
WO2015129989A1 (ko) | 콘텐츠 및 음원 추천 장치 및 방법 | |
WO2017222354A1 (ko) | 사물 인터넷 환경에서 온톨로지 기반의 상황인지 서비스를 제공하기 위한 시스템, 방법 및 컴퓨터 판독 가능한 기록 매체 | |
WO2020130262A1 (ko) | 컴퓨팅 장치 및 그 동작 방법 | |
WO2020184746A1 (ko) | 주행 정보에 기반한 오토 스탑 시스템을 제어하는 인공 지능 장치 및 그 방법 | |
WO2020017930A1 (ko) | 추천 채널 리스트 제공 방법 및 그에 따른 디스플레이 장치 | |
WO2020184753A1 (ko) | 음성 추출 필터를 이용하여 음성 제어를 수행하는 인공 지능 장치 및 그 방법 | |
WO2021187734A1 (ko) | 컴퓨팅 장치 및 그 동작 방법 | |
WO2024071836A1 (en) | Method for video action recognition | |
WO2015178716A1 (en) | Search method and device | |
WO2021132922A1 (en) | Computing device and operation method thereof | |
WO2024215057A1 (ko) | 콘텐츠 스트리밍 시스템에서 콘텐츠를 검색하기 위한 방법 및 장치 | |
WO2019088627A1 (en) | Electronic apparatus and controlling method thereof | |
WO2017146454A1 (ko) | 컨텐트를 인식하는 방법 및 장치 | |
WO2024172254A1 (ko) | 콘텐츠 스트리밍 시스템에서 유사 콘텐츠를 제공하기 위한 방법 및 장치 | |
WO2022092569A1 (ko) | 전자 장치 및 이의 제어 방법 | |
WO2020222338A1 (ko) | 화상 정보를 제공하는 인공 지능 장치 및 그 방법 |