Detailed Description
In order to make those skilled in the art better understand the technical solutions in one or more embodiments of the present disclosure, the technical solutions in one or more embodiments of the present disclosure will be clearly and completely described below with reference to the drawings in one or more embodiments of the present disclosure, and it is obvious that the described embodiments are only a part of the embodiments of the present disclosure, and not all embodiments. All other embodiments obtained by a person skilled in the art based on the embodiments in the present specification without any inventive step should fall within the scope of protection of the present specification.
In this specification, the executing agent for executing the information recommendation method may be a server or a terminal device, and for convenience of description, the information recommendation method provided in this specification will be described below with only the server as the executing agent.
Fig. 1 is a schematic diagram of a process of information recommendation provided in this specification, specifically including the following steps:
s100: the method comprises the steps of obtaining static information and dynamic information, wherein the static information comprises fixed information of a user and/or fixed information corresponding to each service information, and the dynamic information comprises at least one of operation records of each historical service information executed by each user and/or environment attribute information of the environment where the user is located at the current moment.
In this specification, the server may determine service information required by the user by combining information of multiple dimensions, and recommend the service information to the user for viewing. The information of various dimensions mentioned here can be roughly divided into two types, one type can be classified as static information, and the other type can be classified as dynamic information.
Here, the static information mentioned here may be information that can effectively indicate inherent characteristics of user or service information and that does not change frequently. For example, the time interval of the change of the information such as the age, the academic calendar, the sex, the address and the like of the user is usually long, and the information can effectively represent some inherent characteristics of the user. For example, the fixed information corresponding to the service information can be classified into static information because the period of change of information such as the size of a merchant of the service information is generally long for the service information, the region where the service provider who distributes the service information is located, the effective time of the service information (generally, the effective time of the service information does not change once the service information is distributed), and the number of stores corresponding to the service provider who distributes the service information.
In this specification, the fixed information of the user can effectively reflect the actual needs, preferences, which information may be concerned, and the like of the user to a certain extent. For example, users at different ages tend to focus on different information, users at a lower age tend to focus on fashionable topics, and users at a relatively higher age tend to focus on health topics. For another example, the academic degree of a user may reflect the income status of the user to a certain extent, for a user with a low academic degree, the income status is poor, and for a corresponding user with a high academic degree, the income is high. While users with lower income may be more concerned with the information of some merchandise promotions, users with higher income may be more concerned with the information of some high-end merchandise.
As can be seen from the above example, the fixed information of the user may reflect the actual needs of the user, concern about some types of information, and the like to some extent, and therefore, the fixed information of the user may be used as static information for determining what service information is recommended to the user. In this specification, the fixed information of the user may include, in addition to the examples described above, information such as a service type of a service executed by the user, credit, membership points, and the like, and is not described here by way of example.
Similarly, in practical applications, what kind of service information is favored by users is often related to some inherent characteristics of the service information itself. For example, for service information recommended by some known service providers, users tend to pay more attention; for another example, the presentation forms of the coupons recommended to the users by different service providers are often different, the templates for presenting the coupons by some service providers are novel and gorgeous, the presented coupons are popular, and correspondingly, the number of users getting the coupons is large. Some service providers display the coupons with common templates, which cannot effectively attract the eyes of users, so that the popularity is low, and users who receive the coupons are relatively few.
Therefore, in this specification, fixed information corresponding to each service information may be used as static information to determine which service information is more popular with the user and recommend the service information to the user. In addition to the above examples, the fixed information corresponding to each service information mentioned herein may also be other forms of information, for example, the service category corresponding to each service information (for example, for each restaurant, some restaurants provide a coupon for eating western food to the user, and some restaurants provide a coupon for eating chinese food).
The dynamic information mentioned above may be information with a relatively short variation period and capable of causing a certain impact on the actual needs of the user. For example, when viewing coupons issued by merchants at the current time, a user is generally interested in coupons issued by merchants closer to the current location of the user. For another example, when the user views the coupons of some outdoor scenic spots outside the scene, the user often selects the coupons of the scenic spots suitable for the travel and play in the current season in combination with the current season (the change period of the season is relatively short compared with the information such as the user's academic calendar and age).
Therefore, in this specification, the environment attribute information of the environment where the user is located at the current time may be used as dynamic information, and based on this, service information that meets the actual needs of the user is determined and recommended to the user. The environment attribute information of the environment where the user is currently located mentioned here may include: weather information at the current moment, and the distance between the position of the user at the current moment and each service provider.
Of course, besides the above-mentioned several kinds of information, the environmental attribute information mentioned here may also be other forms of information, such as current month, season, holiday information, etc., which are not illustrated in detail herein.
The operation record in which each piece of historical service information is operated by each user is generally short in the period of change over a past period of time, and by the operation record, the degree of interest of each piece of service information by the user can be laterally known. For example, assume that the user has received meal coupons from 10 restaurants via a mobile phone, but only meal coupons from 4 restaurants are actually used, and the remaining received meal coupons are not used. Therefore, from this aspect, it can be effectively concluded that the user may be more acceptable to the dining environment, dish style and average person consumption of the 4 restaurants, and the interest level is higher, and the interest level is relatively lower for the rest 6 restaurants.
Based on this, in this specification, the operation record representing the operation condition of the user operation history service information may be used to determine which service information is more popular with the user, and the service information is recommended to the user. Among them, the operation records mentioned here may include: the number of times each of the historical service information is browsed by the user, the number of times each of the historical service information is used by the user, the number of times each of the historical service information is selected by the user, and the like. For example, coupons issued by a facilitator are clicked by a user, picked up by a user, used by a user, and the like. The number of times that each historical service information is browsed by the user may be the total number of times that each historical service information is browsed by each user in a past period of time, or the number of times that each historical service information is browsed in each unit time (e.g., one hour, one day, etc.) in the past.
Similarly, the number of times of performing the usage operation (or selection operation) by the user for each historical service information may also refer to the total number of times of performing the usage operation (or selection operation) by the user for a period of time in the past for each historical service information, or the number of times of performing the usage operation (or selection operation) in each unit time in the past.
It should be noted that, in this specification, for the fixed information of the user, the server may determine the fixed information of the user according to the user account registered by the user. Similarly, for the fixed information corresponding to each service information, the server may also determine the fixed information through the account information of each service provider.
For the environment attribute information of the environment where the user is located at the current time, the server may obtain the environment attribute information when determining that the current time meets the preset trigger condition. For example, when the server monitors that the user logs in through the user account of the user, it may be determined that the current time meets a preset trigger condition, and then environmental attribute information of an environment where the user is located at the current time is obtained in a trigger manner; for another example, when the server monitors that the current time reaches the preset time, it is determined that the current time meets the preset trigger condition, and then the environment attribute information of the environment where the user is located at the current time is obtained.
For the above-mentioned operation record, the server may record the operation status of the user operating the service information at any time and store the operation status in the corresponding operation log, so as to determine the service information recommended to the user through the operation record in the stored operation log in the subsequent process. For example, when the user views the coupon sent by the server through the terminal, the server may record the operation performed by the user on the coupon, and the recorded content includes: whether the user clicks to view detailed coupon information of the coupon, whether the coupon is received, whether the coupon is used, etc.
Before determining the fixed information corresponding to each service information, the server may select some alternative service information through a preset screening method, then further determine the fixed information corresponding to the alternative service information, and in the subsequent process, input the determined fixed information into a pre-trained Wide & Deep model. For example, the server may determine a current location of the user, and further take coupons provided by various service providers within a set distance from the location as alternative service information; for another example, the server may determine the received number of coupons currently provided by each service provider, and further use the coupons whose received number is higher than the set number as the alternative service information.
S102: and inputting the static information into a Wide linear model in a pre-trained Wide & Deep model, and inputting the dynamic information into a Deep learning model in the pre-trained Wide & Deep model to obtain an output result of the Wide & Deep model.
In this specification, the server may determine which service information needs to be recommended to the user through a pre-trained Wide & Deep model. The Wide & Deep model has the great characteristic of having both memory capacity and generalization capacity. The term "memory ability" means that data having a strong correlation with history data can be estimated from the history data. For example, the server recommends the same kind of coupon to the user by the kind of coupon that the user has received in the past. The generalization capability means that new data which hardly appears before can be predicted through migration of historical data and data correlation. For example, the server analyzes that the user may be interested in other types of coupons through the types of coupons the user has received in the past, and then recommends the coupons to the user. Wherein further species mentioned herein may be species which have never been present before.
By the Wide & Deep model, the diversity of the service information can be further enhanced under the condition that the service information which accords with the user preference is recommended to the user, so that more choices are provided for the user, and good user experience is brought to the user.
After determining the static information and the dynamic information described above, the server may input the static information into the Wide linear model in the Wide & Deep model, and simultaneously input the dynamic information into the Deep learning model in the Wide & Deep model to obtain an output result of the Wide & Deep model, as shown in fig. 2.
Fig. 2 is a schematic diagram of processing static information and dynamic information obtained by a server through a Wide & Deep model to obtain an output result, which is provided in this specification.
The server can respectively input the obtained static information and the obtained dynamic information into a Wide linear model and a Deep learning model in the Wide & Deep model, then, weighted summation can be carried out on results output by the two models, the results obtained after weighted summation are input into a preset loss function, and finally, the output result of the Wide & Deep model is obtained. Here, the loss function mentioned here is not particularly limited.
The reason for inputting the static information into the Wide linear model is to comprehensively analyze which (or which) service information the user is usually interested in through the static information and the memory capacity of the Wide model. The reason for inputting the dynamic information into the Deep learning model is to comprehensively analyze which service information (which type) the user may be interested in by using the dynamic information and the generalization capability of the Deep learning model. In other words, in the present specification, it is considered that the above-mentioned several kinds of dynamic information have generalization conditions that enable the Deep learning model of Deep learning to perform a generalization analysis.
The output of the Wide & Deep model may be in the form of a recommendation score. Specifically, after the server inputs the static information and the dynamic information into the Wide & Deep model, the Wide & Deep model may obtain a recommendation score for each service information by processing the information, so as to determine which service information needs to be recommended to the user according to the obtained recommendation score. The service information may be service information provided by all service providers at the present time, or may be the above-mentioned alternative service information.
Before the Wide & Deep model is used, the Wide & Deep model needs to be trained. The server can obtain the historical data and split the obtained historical data into training samples and verification samples. The Wide & Deep model can be trained through the training sample, and then the trained Wide & Deep model is verified through the verification sample.
The above mentioned historical data may refer to: fixed information corresponding to a plurality of pieces of historical service information in the past history, personal information of a plurality of users, environment attribute information of environments in which the plurality of users are in the past history, historical operation records of operations performed by the plurality of pieces of historical service information by the users, service information actually selected by the plurality of users, and the like are distributed. The plurality of users mentioned herein may be selected by the server at will, and are not particularly limited.
Accordingly, the server may use, as a training sample, fixed information corresponding to a plurality of pieces of historical service information published in a past history, personal information of a plurality of users, environmental attribute information of environments in which the plurality of users are located in the past history, and a history operation record in which the plurality of pieces of historical service information are operated by each user, and use, as a verification sample, service information actually selected by the plurality of users to train the Wide & Deep model.
In the time dimension, the verification samples selected by the server may refer to historical data of which the release time is after the set time, and the training samples may refer to historical data of which the release time is before the set time. For example, it is assumed that the server may use, as training samples, fixed information corresponding to each coupon provided by each facilitator in month 3 a year, operation records of each coupon in month 3 a year by N users, environment attribute information of the environment in month 3 a year by N users, and the fixed information of the N users. Meanwhile, the server can take each coupon actually used by the N users 3 months after A year as a verification sample to train the Wide & Deep model. The setting time is referred to as 3 months in year A. Therefore, the purpose of predicting future data through historical data is achieved, and the usability of the service information recommended to the user by the server is improved.
In this specification, the information recommendation capability of the Wide & Deep model may be evaluated in a certain evaluation manner, and when it is determined that the Wide & Deep model reaches a preset training target in the evaluation manner, the Wide & Deep model is online. For example, the accuracy of the Wide & Deep model recommended service information may be tested through the above-mentioned training samples and verification samples, and when the accuracy of the Wide & Deep model recommended service information reaches a set accuracy, it is determined that the Wide & Deep model reaches a preset training target. Of course, the Wide & Deep model may be evaluated by an evaluation method such as a general AUC model evaluation index, and the evaluation method is not described here.
S104: and determining the service information recommended to the user according to the output result, and recommending the service information to the user.
After the server obtains the output result, the server can determine which service information needs to be recommended to the user through the output result, and then recommend the determined service information to the user for browsing and operating.
Specifically, after the server determines the recommendation score of each service information through the Wide & Deep model, the server can recommend the service information not less than the set recommendation score to the user. Of course, it may be determined which service information is recommended to the user in other manners. For example, after the server determines the recommendation score of each piece of service information, the server may rank the pieces of service information according to the recommendation scores, and recommend the service information ranked before the set position to the user.
It can be seen from the above method that static information such as fixed information of the user and fixed information corresponding to each service information, and dynamic information such as environment attribute information of the environment where the user is located at the current time and operation records of each historical service information executed by each user can be combined to determine the service information recommended to the user, so that service information actually required by the user can be recommended to the user more accurately compared with a mode of determining the service information recommended to the user through single-dimensional information, thereby bringing great convenience to the user.
It should be noted that, in this specification, the server may train the Wide & Deep model every time a period of time elapses, that is, information of the period of time (that is, the above mentioned historical data that can be used as a training sample and a verification sample) is used as a training sample and a verification sample, and timely perform online update on the trained Wide & Deep model, so as to ensure the accuracy of the information of the recommended service of the Wide & Deep model by using this automatic learning method. For example, every 5 days, the server may use the information of the first 4 days of the 5 days as a training sample, use the information of the 5 th day as a verification sample, and train the Wide & Deep model, so that the trained Wide & Deep model can meet the requirement of the user for obtaining service information in the near future as much as possible.
Based on the same idea, the present specification further provides a corresponding information recommendation apparatus, as shown in fig. 3.
Fig. 3 is a schematic diagram of an information recommendation apparatus provided in this specification, which specifically includes:
the information acquisition module 301 is configured to acquire static information and dynamic information, where the static information includes fixed information of a user and/or fixed information corresponding to each service information, and the dynamic information includes at least one of an operation record of each historical service information executed by each user and/or environment attribute information of an environment where the user is located at the current time;
the input module 302 is used for inputting the static information into a Wide linear model in a pre-trained Wide & Deep model and inputting the dynamic information into a Deep learning model in the pre-trained Wide & Deep model to obtain an output result of the Wide & Deep model;
and an information recommending module 403, configured to determine the service information recommended to the user according to the output result, and recommend the service information to the user.
The fixed information of the user includes: at least one of age, academic calendar, gender, address of the user and service category of the service executed by the user;
the fixed information corresponding to each service information includes: at least one of a region where each service provider issuing each piece of service information is located, an effective time of each piece of service information, the number of stores corresponding to each service provider, and a merchant size corresponding to each service provider;
the environment attribute information of the environment where the user is located at the current time includes: at least one of weather information at the current moment, and distances between the position of the user at the current moment and the service providers;
the operation record comprises: at least one of the times of browsing each historical service information by each user, the times of using each historical service information by the user, and the times of selecting each historical service information by the user.
The output result of the Wide & Deep model comprises the following steps: the Wide & Deep model obtains a recommendation score aiming at each service information;
the information recommending module 303 recommends service information not less than the set recommendation score to the user.
The device further comprises:
a training module 304, which splits the historical data into training samples and verification samples; and training the Wide & Deep model through the training sample, and verifying the trained Wide & Deep model through the verification sample.
The training module 304 uses the historical data before the set time as a training sample, and uses the historical data after the set time as a verification sample.
The service information includes: a coupon.
Based on the information recommendation method described above, the present specification further provides a device for information recommendation, as shown in fig. 4. The apparatus includes one or more memories and a processor, the memories storing programs and configured to perform the following steps by the one or more processors:
acquiring static information and dynamic information, wherein the static information comprises fixed information of a user and/or fixed information corresponding to each service information, and the dynamic information comprises at least one of operation records of each historical service information executed by each user and/or environment attribute information of the environment where the user is located at the current moment;
inputting the static information into a Wide linear model in a pre-trained Wide & Deep model, and inputting the dynamic information into a Deep learning model in the pre-trained Wide & Deep model to obtain an output result of the Wide & Deep model;
and determining the service information recommended to the user according to the output result, and recommending the service information to the user.
In one or more embodiments of the present specification, static information and dynamic information may be obtained, where the static information includes fixed information of a user and/or fixed information corresponding to each service information, and the dynamic information includes at least one of an operation record of each historical service information performed by each user and/or environment attribute information of an environment in which the user is currently located. Then, the obtained static information can be input into a Wide linear model in a pre-trained Wide & Deep model, the obtained dynamic information is input into a Deep learning model in the Wide & Deep model to obtain an input result of the Wide & Deep model, and further, according to the output result, service information recommended to the user is determined and recommended to the user.
It can be seen from the above method that static information such as fixed information of the user and fixed information corresponding to each service information, and dynamic information such as environment attribute information of the environment where the user is located at the current time and operation records of each historical service information executed by each user can be combined to determine the service information recommended to the user, so that service information actually required by the user can be recommended to the user more accurately compared with a mode of determining the service information recommended to the user through single-dimensional information, thereby bringing great convenience to the user.
In the 90 s of the 20 th century, improvements in a technology could clearly distinguish between improvements in hardware (e.g., improvements in circuit structures such as diodes, transistors, switches, etc.) and improvements in software (improvements in process flow). However, as technology advances, many of today's process flow improvements have been seen as direct improvements in hardware circuit architecture. Designers almost always obtain the corresponding hardware circuit structure by programming an improved method flow into the hardware circuit. Thus, it cannot be said that an improvement in the process flow cannot be realized by hardware physical modules. For example, a Programmable Logic Device (PLD), such as a Field Programmable Gate Array (FPGA), is an integrated circuit whose Logic functions are determined by programming the Device by a user. A digital system is "integrated" on a PLD by the designer's own programming without requiring the chip manufacturer to design and fabricate application-specific integrated circuit chips. Furthermore, nowadays, instead of manually making an Integrated Circuit chip, such Programming is often implemented by "logic compiler" software, which is similar to a software compiler used in program development and writing, but the original code before compiling is also written by a specific Programming Language, which is called Hardware Description Language (HDL), and HDL is not only one but many, such as abel (advanced Boolean Expression Language), ahdl (alternate Hardware Description Language), traffic, pl (core universal Programming Language), HDCal (jhdware Description Language), lang, Lola, HDL, laspam, hardward Description Language (vhr Description Language), vhal (Hardware Description Language), and vhigh-Language, which are currently used in most common. It will also be apparent to those skilled in the art that hardware circuitry that implements the logical method flows can be readily obtained by merely slightly programming the method flows into an integrated circuit using the hardware description languages described above.
The controller may be implemented in any suitable manner, for example, the controller may take the form of, for example, a microprocessor or processor and a computer-readable medium storing computer-readable program code (e.g., software or firmware) executable by the (micro) processor, logic gates, switches, an Application Specific Integrated Circuit (ASIC), a programmable logic controller, and an embedded microcontroller, examples of which include, but are not limited to, the following microcontrollers: ARC 625D, Atmel AT91SAM, Microchip PIC18F26K20, and Silicone Labs C8051F320, the memory controller may also be implemented as part of the control logic for the memory. Those skilled in the art will also appreciate that, in addition to implementing the controller as pure computer readable program code, the same functionality can be implemented by logically programming method steps such that the controller is in the form of logic gates, switches, application specific integrated circuits, programmable logic controllers, embedded microcontrollers and the like. Such a controller may thus be considered a hardware component, and the means included therein for performing the various functions may also be considered as a structure within the hardware component. Or even means for performing the functions may be regarded as being both a software module for performing the method and a structure within a hardware component.
The systems, devices, modules or units illustrated in the above embodiments may be implemented by a computer chip or an entity, or by a product with certain functions. One typical implementation device is a computer. In particular, the computer may be, for example, a personal computer, a laptop computer, a cellular telephone, a camera phone, a smartphone, a personal digital assistant, a media player, a navigation device, an email device, a game console, a tablet computer, a wearable device, or a combination of any of these devices.
For convenience of description, the above devices are described as being divided into various units by function, and are described separately. Of course, the functions of the various elements may be implemented in the same one or more software and/or hardware implementations of the present description.
As will be appreciated by one skilled in the art, embodiments of the present description may be provided as a method, system, or computer program product. Accordingly, the description may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, the description may take the form of a computer program product embodied on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, and the like) having computer-usable program code embodied therein.
The description has been presented with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to one or more embodiments of the description. It will be understood that each flow and/or block of the flow diagrams and/or block diagrams, and combinations of flows and/or blocks in the flow diagrams and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
In a typical configuration, a computing device includes one or more processors (CPUs), input/output interfaces, network interfaces, and memory.
The memory may include forms of volatile memory in a computer readable medium, Random Access Memory (RAM) and/or non-volatile memory, such as Read Only Memory (ROM) or flash memory (flash RAM). Memory is an example of a computer-readable medium.
Computer-readable media, including both non-transitory and non-transitory, removable and non-removable media, may implement information storage by any method or technology. The information may be computer readable instructions, data structures, modules of a program, or other data. Examples of computer storage media include, but are not limited to, phase change memory (PRAM), Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), other types of Random Access Memory (RAM), Read Only Memory (ROM), Electrically Erasable Programmable Read Only Memory (EEPROM), flash memory or other memory technology, compact disc read only memory (CD-ROM), Digital Versatile Discs (DVD) or other optical storage, magnetic cassettes, magnetic tape magnetic disk storage or other magnetic storage devices, or any other non-transmission medium that can be used to store information that can be accessed by a computing device. As defined herein, a computer readable medium does not include a transitory computer readable medium such as a modulated data signal and a carrier wave.
It should also be noted that the terms "comprises," "comprising," or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Without further limitation, an element defined by the phrase "comprising an … …" does not exclude the presence of other like elements in a process, method, article, or apparatus that comprises the element.
This description may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. One or more embodiments of the specification may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
The embodiments in the present specification are described in a progressive manner, and the same and similar parts among the embodiments are referred to each other, and each embodiment focuses on the differences from the other embodiments. In particular, for the system embodiment, since it is substantially similar to the method embodiment, the description is simple, and for the relevant points, reference may be made to the partial description of the method embodiment.
The foregoing description has been directed to specific embodiments of this disclosure. Other embodiments are within the scope of the following claims. In some cases, the actions or steps recited in the claims may be performed in a different order than in the embodiments and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In some embodiments, multitasking and parallel processing may also be possible or may be advantageous.
The above description is merely one or more embodiments of the present disclosure and is not intended to limit the present disclosure. Various modifications and alterations to one or more embodiments of the present description will be apparent to those skilled in the art. Any modification, equivalent replacement, improvement or the like made within the spirit and principle of one or more embodiments of the present specification should be included in the scope of the claims of the present specification.