CN112214980A - Customization and recommendation of tree structure templates - Google Patents

Customization and recommendation of tree structure templates Download PDF

Info

Publication number
CN112214980A
CN112214980A CN202010661950.4A CN202010661950A CN112214980A CN 112214980 A CN112214980 A CN 112214980A CN 202010661950 A CN202010661950 A CN 202010661950A CN 112214980 A CN112214980 A CN 112214980A
Authority
CN
China
Prior art keywords
user
computer
tree structure
template
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010661950.4A
Other languages
Chinese (zh)
Inventor
黄磊
任广杰
江顺
R·I·阿拉尔
E·Y·刘
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN112214980A publication Critical patent/CN112214980A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/906Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

According to one embodiment, a computer-implemented method is used to create custom templates and template recommendations. The computer-implemented method includes: extracting text content from user information corresponding to the user, and generating a feature vector using the text content extracted from the user information. The feature vectors are also used to form one or more clusters of existing user versions. For each of the one or more formed clusters, a tree structure is generated for each user version in the cluster. Furthermore, the tree structures in the cluster are merged into a merged tree structure. For each of the one or more formed clusters, custom templates are generated using the respective merged tree structure, and at least one of the custom templates is recommended to the user based on the user information.

Description

Customization and recommendation of tree structure templates
Technical Field
The present invention relates to customization of templates, and more particularly, the present invention relates to generating customized templates for users based on information associated with the users.
Background
Templates are commonly used in different services related to word processing, Web-based builders, business architecture modeling, etc. Templates can be valuable tools in simplifying the generation of desired content. The template effectively acts as a skeleton that helps form the beginning of the desired content, allowing the resource to be used elsewhere as desired.
However, templates are traditionally pre-designed by individuals who often lack an understanding of where the template will ultimately be used, let alone how it is used. Thus, conventional templates are fixed and thus cannot be developed as user preferences change.
Disclosure of Invention
According to one embodiment, a computer-implemented method is used to create custom templates and template recommendations. The computer-implemented method includes: extracting text content from user information corresponding to the user, and generating a feature vector using the text content extracted from the user information. The feature vectors are also used to form one or more clusters of existing user versions. For each of the one or more formed clusters, a tree structure is generated for each user version in the cluster. Furthermore, the tree structures in the cluster are merged into a merged tree structure. For each of the one or more formed clusters, custom templates are generated using the respective merged tree structure, and at least one of the custom templates is recommended to the user based on the user information.
A computer program product according to another embodiment includes a computer-readable storage medium having program instructions embodied in the computer-readable storage medium. The program instructions are readable and/or executable by a processor to cause the processor to perform the aforementioned methods.
A system according to yet another embodiment, comprising: a processor, and logic integrated with or executable by the processor. The logic is configured to: the aforementioned method is performed.
Other aspects and embodiments of the invention will become apparent from the following detailed description, which, when taken in conjunction with the drawings, illustrate by way of example the principles of the invention.
Drawings
Fig. 1 is a network architecture according to one embodiment.
FIG. 2 is a representative hardware environment that may be associated with the servers and/or clients of FIG. 1, according to one embodiment.
FIG. 3 is a hierarchical data storage system according to one embodiment.
FIG. 4A is a flow diagram of a method according to an embodiment.
FIG. 4B is a flow diagram of a method according to an embodiment.
FIG. 4C is a flow diagram of a sub-process for operation according to one embodiment.
FIG. 5 is a partial representation of a tree structure according to one embodiment.
FIG. 6A is a representation of two tree structures according to one embodiment.
FIG. 6B is a representation of a merge structure, according to one embodiment.
FIG. 7A is a representation of a recommendation engine according to one embodiment.
7B-7C are representative diagrams of pseudo code in accordance with an example embodiment.
FIG. 8 depicts a cloud computing node, according to one embodiment.
FIG. 9 depicts a cloud computing environment, according to one embodiment.
FIG. 10 depicts abstraction model layers according to one embodiment.
Detailed Description
The following description is made for the purpose of illustrating the general principles of the present invention and is not meant to limit the inventive concepts claimed herein. In addition, particular features described herein can be used in combination with other described features in each of the various possible combinations and permutations.
Unless otherwise explicitly defined herein, all terms are to be given their broadest possible interpretation, including meanings implied from the specification and meanings understood by those skilled in the art and/or defined as dictionaries, articles, etc.
It must also be noted that, as used in the specification and the appended claims, the singular forms "a," "an," and "the" include plural references unless the context clearly dictates otherwise. It will be further understood that the terms "comprises" and/or "comprising," when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The following description discloses several preferred embodiments of a system, method and computer program product for generating customized templates and providing recommendations regarding customized templates, such as will be described in more detail below.
In one general embodiment, a computer-implemented method is used to create customized templates and template recommendations. The computer-implemented method includes: extracting text content from user information corresponding to the user, and generating a feature vector using the text content extracted from the user information. The feature vectors are also used to form one or more clusters of existing user versions. For each of the one or more formed clusters, a tree structure is generated for each user version in the cluster. Furthermore, the tree structures in the cluster are combined into a merged tree structure. For each of the one or more formed clusters, custom templates are generated using the respective merged tree structure, and at least one of the custom templates is recommended to the user based on the user information.
In another general embodiment, a computer program product includes a computer readable storage medium having program instructions embodied therein. The program instructions are readable and/or executable by a processor to cause the processor to perform the aforementioned methods.
In yet another general embodiment, a system includes: a processor, and logic integrated with or executable by the processor. The logic is configured to: the aforementioned method is performed.
FIG. 1 illustrates an architecture 100 according to one embodiment. As shown in fig. 1, a plurality of remote networks 102 including a first remote network 104 and a second remote network 106 are provided. Gateway 101 may be coupled between remote network 102 and neighboring network 108. In the context of the architecture 100, each of the networks 104, 106 may take any form, including but not limited to: a Local Area Network (LAN), a Wide Area Network (WAN) such as the Internet, the Public Switched Telephone Network (PSTN), an internal telephone network, etc.
In use, the gateway 101 acts as an entry point from the remote network 102 to the adjacent network 108. In this way, gateway 101 may act as a router capable of directing a given data packet arriving at gateway 101, as well as a switch that provides the actual path into and out of gateway 101 for the given data packet.
Also included is at least one data server 114 coupled to the proximity network 108 and accessible from the remote network 102 through the gateway 101. It should be noted that the data server 114 may include any type of computing device/groupware. A plurality of user devices 116 are coupled to each data server 114. The user device 116 may also be directly connected through one of the networks 104, 106, 108. Such user devices 116 may include desktop computers, laptop computers, handheld computers, printers, or any other type of logic. It should be noted that in one embodiment, user device 111 may also be directly coupled to any network.
A peripheral device 120 or series of peripheral devices 120, such as a fax machine, a printer, a networked and/or local storage unit or system, etc., may be coupled to one or more of the networks 104, 106, 108. It should be noted that the database and/or additional components may be used with or integrated into any type of network element coupled to the networks 104, 106, 108. In the context of this specification, a network element may refer to any component of a network.
According to some methods, the methods and systems described herein may be implemented with and/or on a virtual system and/or a system that simulates one or more other systems, e.g., simulating
Figure BDA0002578917140000041
z/
Figure BDA0002578917140000042
Of the environment
Figure BDA0002578917140000043
System to virtually host
Figure BDA0002578917140000044
Of the environment
Figure BDA0002578917140000045
System, simulation
Figure BDA0002578917140000046
z/
Figure BDA0002578917140000047
Of the environment
Figure BDA0002578917140000048
Systems, and the like. In some embodiments, such virtualization and/or emulation may be through the use of
Figure BDA0002578917140000049
Software to enhance.
In further approaches, one or more of the networks 104, 106, 108 may represent a cluster of systems commonly referred to as a "cloud". In cloud computing, shared resources such as processing power, peripherals, software, data, servers, etc., are provided to any system in the cloud in an on-demand relationship, allowing access and service allocation across many computing systems. Cloud computing typically involves an internet connection between systems running in the cloud, but other techniques of connecting systems may also be used.
FIG. 2 illustrates a representative hardware environment associated with the user device 116 and/or the server 114 of FIG. 1, in accordance with one embodiment. The figure shows a typical hardware configuration of a workstation having a central processing unit 210, such as a microprocessor, and a number of other units interconnected via a system bus 212.
The workstation shown in fig. 2 comprises: random Access Memory (RAM)214, Read Only Memory (ROM)216, input/output (I/O) adapter 218 for connecting peripheral devices such as disk storage unit 220 to bus 212, user interface adapter 222 for connecting keyboard 224, mouse 226, speaker 228, microphone 232, and/or other user interface devices such as a touch screen and digital camera (not shown) to bus 212, communication adapter 234 for connecting the workstation to a communication network 235 (e.g., a data processing network), and display adapter 236 for connecting bus 212 to a display device 238.
The workstation may have an operating system resident thereon, such as Microsoft Windows
Figure BDA0002578917140000051
An Operating System (OS) for the operating system,
Figure BDA0002578917140000052
OS, and the like. It should be understood that the preferred embodiments may also be implemented on platforms and operating systems other than those mentioned. The preferred embodiments may be written using extensible markup language (XML), C and/or C + + languages, or other programming languages, as well as object-oriented programming methods. Object Oriented Programming (OOP) may be used, which has been increasingly used to develop complex applications.
Referring now to FIG. 3, a storage system 300 is shown according to one embodiment. Note that some of the elements shown in fig. 3 may be implemented as hardware and/or software, according to various embodiments. The storage system 300 may include a storage system manager 312 for communicating with a plurality of media and/or drives on at least one upper storage tier 302 and at least one lower storage tier 306. The upper storage layer 302 may preferably include: one or more random access and/or direct access media 304, such as a hard disk in a Hard Disk Drive (HDD), non-volatile memory (NVM), solid state memory in a Solid State Drive (SSD), flash memory, an SSD array, a flash memory array, etc., and/or other media described herein or known in the art. The lower storage tier 306 may preferably include one or more lower performance storage media 308, including sequential access media (e.g., tape and/or optical media in a tape drive), slower access HDDs, slower access SSDs, etc., and/or other media described herein or known in the art. The one or more additional storage layers 316 may include any combination of storage media desired by the designer of the system 300. Moreover, any of the upper storage tier 302 and/or the lower storage tier 306 may include some combination of storage devices and/or storage media.
The storage system manager 312 may communicate with the drives and/or storage media 304, 308 on the upper storage tier 302 and the lower storage tier 306 over a network 310, such as a Storage Area Network (SAN) as shown in fig. 3 or some other suitable network type. The storage system manager 312 may also communicate with one or more host systems (not shown) through a host interface 314, which may or may not be part of the storage system manager 312. The storage system manager 312 and/or any other components of the storage system 300 may be implemented in hardware and/or software and may utilize a processor (not shown) to execute commands of a type known in the art, such as a Central Processing Unit (CPU), Field Programmable Gate Array (FPGA), Application Specific Integrated Circuit (ASIC), and the like. Of course, any arrangement of storage systems may be used, as will be apparent to those skilled in the art upon reading this description.
In further embodiments, storage system 300 may include any number of data storage layers, and may include the same or different storage memory media within each storage layer. For example, each data storage layer may comprise the same type of storage memory media, such as an HDD, an SSD, a sequential access media (a magnetic tape in a tape drive, an optical disk in an optical disk drive, etc.), a direct access media (CD-ROM), DVD-ROM, etc.), or any combination of media storage types. In one such configuration, the upper storage tier 302 may comprise most SSD storage media for storing data in a higher performance storage environment, while the remaining storage tiers, including the lower storage tier 306 and the additional storage tier 316, may comprise any combination of SSDs, HDDs, tape drives, and the like, for storing data in a lower performance storage environment. In this way, more frequently accessed data, data with a higher priority, data that needs to be accessed more quickly, etc. may be stored to the higher storage tier 302, while data that does not have one of these attributes may be stored to the additional storage tier 316, including the lower storage tier 306. Of course, many other combinations of storage media types can be devised to implement different storage schemes according to the embodiments presented herein by those skilled in the art after reading this description.
According to some embodiments, a storage system (e.g., 300) may include: the computer-readable medium includes logic configured to receive a request to open a data set, logic configured to determine whether the requested data set is stored in a plurality of associated portions to a lower storage tier 306 of the hierarchical data storage system 300, logic configured to move each associated portion of the requested data set to an upper storage tier 302 of the hierarchical data storage system 300, and logic configured to integrate the requested data set from the associated portion onto the upper storage tier 302 of the hierarchical data storage system 300.
Of course, according to various embodiments, this logic may be implemented as a method or computer program product on any device and/or system.
As previously mentioned, templates have traditionally been pre-designed by individuals who often lack an understanding of where the template will ultimately be used, let alone how it was used. As such, conventional templates are fixed and therefore cannot evolve as user preferences change. As a result, the applicability of the template has traditionally been limited.
In sharp contrast, the various embodiments included herein enable the generation of customized templates that can effectively assist users in completing their tasks. These custom templates are generated using information corresponding to the user itself and their preferences, thereby improving applicability and retention in use. Recommendations may also be made to particular users based on the generated templates and/or available information. In some approaches, these improvements are achieved by generating a composition tree structure for use in actually forming the custom template, e.g., as will be described in further detail below.
Referring to FIG. 4A, a flow diagram of a method 400 for creating customized templates and/or template recommendations is shown, according to one embodiment. Among other things, in various embodiments, method 400 may be performed in accordance with the present invention in any of the environments depicted in fig. 1-3. Of course, as one of ordinary skill in the art will understand upon reading this description, more or fewer operations than specifically described in fig. 4A may be included in the method 400.
Each step of method 400 may be performed by any suitable component of an operating environment. For example, in various embodiments, the method 400 may be performed in part or in whole by a controller, processor, computer, or the like, or some other device having one or more processors therein. Thus, in some embodiments, the method 400 may be a computer-implemented method. Moreover, the terms "computer," "processor," and "controller" may be used interchangeably with respect to any of the embodiments herein, and such components are considered equivalents in the many various permutations of the present invention.
Further, for those embodiments having a processor, the processor (e.g., processing circuitry, chips and/or modules implemented in hardware and/or software, and preferably having at least one hardware component) may be used in any device to perform one or more steps of method 400. Illustrative processors include, but are not limited to, a Central Processing Unit (CPU), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), the like, combinations thereof, or any other suitable computing device known in the art.
As shown in FIG. 4A, operation 402 of method 400 includes extracting textual content from user information corresponding to a user. According to the present description, a "user" may include any person, company, entity, etc. desiring a template. Thus, in some approaches, operation 402 may be performed in response to receiving a request for a template or even an initial template from a user (e.g., see fig. 4B below). In addition, the text content extracted from the available user information may also vary depending on the situation. For example, in some approaches, the extracted textual content may depend on the type of user information available. Illustrative lists of different user information types include, but are in no way limited to, user background information, user expertise information, user preferences, desired functions (e.g., template requirements), previous selections made by the user, and the like.
In some approaches, the process of actually extracting text content implements a word recognition algorithm. As will be appreciated by those skilled in the art upon reading this specification, these algorithms may be provided with relevant key words to search. These keywords may be stored in memory, dynamically updated based on the type of user, predetermined, and so forth. In some approaches, at least some textual content may be extracted from a user version associated with a given user. With respect to this specification, "user version" is intended to refer to a previously released customized (e.g., revised) template implemented by, recommended to, generated for, etc. a user. In other words, a template that has been adopted by the adopted user and modified to generate a customized version is considered herein as a user version.
The method 400 also includes generating a digital feature vector using textual content extracted from the user information and/or the user version. See operation 404. In other words, operation 404 includes forming a numerical value representing the extracted textual content. In some approaches, the extracted textual content may be considered "keywords". Also, the process of generating the digital feature vector may include implementing a hash value for each portion of the text content. These hash values may further be stored in a hash table, thereby preserving the corresponding textual content. Concentration values corresponding to text content may also be assigned to some or all of the respective hash values. In some approaches, one of the entries in the hash map is used as a placeholder that stores the total weight of all keys included in the hash map. For example, the last entry in the hah-graph is reserved for the total combined weight (or density) of all entries stored therein.
The digital feature vector is used to evaluate existing users and/or user versions. See operation 406. With respect to this specification, "existing user" is intended to refer to a user profile corresponding to a duplicate user. Thus, information corresponding to existing users may be stored in memory (e.g., in a look-up table) and used as needed. Further, as noted above, "user version" is intended to refer to previously published customized templates that the user has made, as well as updates in template structure, layout, content, and the like. In this way, feature vectors and/or other information corresponding to previously formed user versions may be stored in memory and referenced during development of new customized templates.
The evaluation performed in operation 406 is used to identify certain users and/or user versions that best match a given situation. See operation 408. In other words, the user information corresponding to the user is implemented upon selection of a previous user and/or user version similar to the current situation. According to some methods, which are in no way intended to limit the present invention, users and/or user versions having a predetermined number of similarities to the current user and/or current template request are identified in operation 406. Further, any desired type of similarity analysis may be implemented to perform operation 408.
These existing users and/or user versions are further separated to form one or more clusters. See operation 410. Clusters of two or more existing user versions are preferably formed using feature vectors. For example, in some methods, forming the one or more clusters of existing user versions includes extracting textual content from the existing user versions and using the textual content extracted from the user versions with textual content extracted from user information to generate feature vectors. The feature vector is also used to merge two or more existing user versions into one cluster.
In this way, the feature vectors are used to form one or more clusters of existing user versions. Each cluster includes a plurality of user profiles and/or user versions that are determined to be sufficiently similar to each other. For example, equation 1, described below, may be used to determine the similarity that exists between two or more particular nodes. Two or more user profiles and/or user versions determined to have a predetermined number of the same feature vectors may thus be placed in the same cluster. Thus, the clusters are preferably created using the digital feature vectors formed in operation 404. In other words, clusters are formed directly based on (e.g., using) the feature vectors. Depending on the method, the user profile and/or user version may be identified as being included in a particular cluster by using flags, data headers and/or pins, lookup tables, and the like.
Still referring to method 400, operation 412 includes generating a tree structure for each user version in the cluster. In other words, for each cluster, a tree structure is formed using the user profiles and/or user versions included in a given cluster. Each tree structure includes a plurality of nodes organized into a plurality of levels (e.g., depths). Further, each node in the tree structure acts as a component in the corresponding user version. The tree structure is preferably organized such that each node in the same level represents a different aspect of the user profile and/or user version.
The user versions are taken from the template and they include the updates made by the user. For greater clarity, an analogy may be made in which a user version is represented by a table in which components correspond to cells in the table. Components may also include sub-components such as titles, descriptions, and other textual content. Thus, the table has a hierarchical structure (or "tree structure"), e.g., as shown in FIG. 5. Each user version may thus be represented by a tree structure, where each node corresponds to a component, and the child nodes extending therefrom indicate the sub-components under that given node. The user version cluster contains many similar user versions, each of which can be represented as a tree structure. Multiple tree structures in a given cluster may be merged into one merged tree.
It should also be noted that in the preferred approach, the user profile is not part of the tree structure. Instead, the user profile is used to help accurately cluster different user versions, as well as predict and/or recommend templates for new users. For example, the new user's profile (e.g., background, expertise, requirements, etc.) may be similar to the users in a given cluster. As a result, templates generated using a given cluster may be recommended to new users.
Referring momentarily to FIG. 5, an exemplary tree structure 500 is shown according to an example in use, which is in no way intended to limit the present invention. As shown, each node in the first level 502 corresponds to a different employment component. Further, each child node extending from a given node in the first level 502 preferably corresponds to the same or similar subject matter. For example, looking at the "architectural element" node in the first level 502, each child node extending therefrom into the second level 504 is related to the subject matter of the architectural element.
Returning to method 400, the tree structure may be formed using any process that will be apparent to one skilled in the art upon reading the present specification. For example, in some approaches, each user profile and/or user version may be reformatted into a tree structure. Each of the tree structures formed may be further combined to form a single combined tree structure, as will become apparent shortly, for example.
Proceeding to operation 413, the method 400 includes merging the tree structures in the cluster into a merged tree structure. Further, operation 414 includes generating a custom template using the respective merged tree structure for each of the one or more formed clusters. In a preferred approach, a top-down tree node clustering and merging approach is implemented to generate a merged tree structure and/or customized template for a given cluster using the corresponding merged tree structure. Referring briefly to FIG. 4C, an exemplary sub-process of combining tree structures in a cluster into a merged tree structure is illustrated, according to one embodiment, where one or more of the sub-processes may be used to perform operation 414 of FIG. 4A and/or operation 466 of FIG. 4B below. It should be noted, however, that the sub-process of FIG. 4C is shown according to one embodiment, which is in no way intended to limit the present invention.
As shown, the sub-processes included in FIG. 4C are used to merge multiple user version tree structures (preferably in the same cluster) into a combined tree structure by forming each level of the respective tree structure. For efficiency, it is preferable to form (e.g., merge) multiple levels of the tree structure in top-down order. For example, the process of merging two or more nodes may also result in each of the child nodes that depend on it also being merged. However, the tree structures may be merged according to any desired order, process, procedure, etc.
Depending on the method, any number of nodes may be included in a given tree structure, e.g., depending on the number, type, distribution (spread), etc., of user profiles and/or user versions used to form them. Thus, sub-operation 470 includes grouping nodes at a given level of the tree structure, while sub-operation 472 includes evaluating the grouping of nodes based on the digital feature vectors corresponding thereto. In other words, the sub-operation 472 includes determining whether there is any similarity and/or difference between the digital feature vectors corresponding to each node that has been grouped together in the sub-operation 470.
Depending on the method, in sub-operation 472, the evaluation may be performed using any desired type of process. For example, in some approaches, feature vectors associated with two of the nodes may be compared to each other to determine whether the nodes are sufficiently similar to each other. The determination may be based on a number of similarities between the contents of the feature vectors, the number of feature vectors associated with each node, predetermined criteria, etc., or any other factors that will be apparent to one skilled in the art after reading this specification.
Sub-operation 474 also includes deleting nodes and their children that are identified as unimportant packets. In other words, sub-operation 474 includes removing those nodes that are identified as not being sufficiently similar to other nodes in the same level of the tree structure. Further, in sub-operation 474, the nodes (e.g., "branches") that extend from the removed node are also deleted from the tree structure, thereby avoiding any dangling branches in the tree structure.
While some nodes may be identified as "unimportant" relative to other nodes in the same level of the tree structure, other nodes may be identified as providing important content to a given level and/or the entire tree structure. Thus, nodes identified as very similar are merged together, forming merged nodes. See sub-operation 476. The process of merging two or more nodes determined to be sufficiently similar to each other may be performed in any desired manner. For example, in some approaches, the nodes may be combined simply by merging the feature vectors associated with each node. In other approaches, the process of merging two or more nodes may depend on whether any node has a child node extending therefrom. For example, the child nodes in the branch that extend from two or more nodes to be merged may simply be updated to extend from the same merge node. However, in some cases, the number, style, direction, etc. of child nodes that extend from a given node may actually play a role in determining whether the node can be merged with one or more other nodes.
Referring to fig. 6A-6B, there are shown representative diagrams of merging two different tree structures according to an example in use, which is in no way intended to limit the invention. As shown, fig. 6A includes a first tree structure 600 and a second tree structure 602, each of the first tree structure 600 and the second tree structure 602 having a root 603 and a plurality of nodes 604 extending therefrom. The nodes 604 are further organized in levels, each level corresponding to a different aspect of the user profile and/or user version.
Moving to FIG. 6B, a merged tree structure 606 is formed by removing or merging various nodes 604 included in the first and second tree structures 600, 602. The nodes that are common between the first and second tree structures 600, 602 may be merged compared to nodes that are present in only one of the tree structures. Thus, the resulting merged tree structure 606 may include a different number of nodes than the first tree structure 600 and the second tree structure 602.
The process of merging nodes in different tree structures may be performed differently depending on the desired method. For example, in some approaches, two tree structures may be merged by implementing any portion of the pseudo code included in exemplary FIGS. 7B-7C. According to another illustrative approach, which is in no way intended to limit the invention, equation 1 may be used to determine the degree of similarity of two or more nodes. In other words, equation 1 is used to illustrate the overall goal of template customization, which minimizes the difference between a user version of a cluster and the corresponding customized template for that cluster. Thus, templates that correspond exactly to a cluster should implement the functionality of the user version in the cluster as much as possible and as accurately as possible.
Figure BDA0002578917140000131
Here, equation 1 may involve generating a template "Ti" for the user version cluster "Ui" by converting each user version "Uij" in the user version cluster "Ui" into a tree structure. Each tree structure is then merged together to form a single merged tree structure that is optimized and ultimately converted into a customized template "Ti". Thus, equation 1 may be used to measure the total distance between the user versions in cluster "Ui" and the corresponding template "Ti", where "i" represents the number of clusters, "j" represents the number of user versions in cluster "Ui", and "Ti" is the template for cluster "Ui". Furthermore, "dist" indicates any distance calculation method, "min" represents minimization, and "λ" is a regularization parameter, as will be apparent to those skilled in the art upon reading this specification.
Thus, for each level in the tree structure "i", the grouping of nodes in a given level "i" is performed based on the information of the node itself and the child nodes available for expansion therefrom. Textual information may also be extracted from the nodes and/or their respective children. A feature vector is formed for each node and the similarity between nodes is measured based on the feature vector corresponding thereto.
Still referring to FIG. 4C, sub-operation 478 includes renaming the merge node. It should be noted that in some approaches, the process of renaming a merge node may actually involve changing a name (e.g., a file name) associated with the merge node. However, in other approaches, the merge node may be "renamed" by changing physical storage locations, logical storage locations, association information in a lookup table, etc., depending on the desired approach. Further, the process of renaming a merge node may be based on any available information, such as relative popularity (popularity) associated with the merge node and/or various portions thereof. For example, a repeated feature vector may have a greater weight than a single occurrence of a feature vector.
Returning now to fig. 4A, the method 400 proceeds from operation 414 to operation 416. There, operation 416 includes recommending at least one of the customized templates to the user. It should be noted that the recommendation made in operation 416 is preferably based on a match between the user profile data and the customized template. That is, a prediction is made based on which template best matches the relevant user profile (including information corresponding to context, expertise, needs, etc.) and recommendations are made based thereon. According to an exemplary method, which is not intended to be limiting in any way, recommending at least one of the customized templates to the user based on the user information includes converting the customized template and the user information into a feature vector, measuring a similarity based on the feature vector, identifying a customized template that best matches the user information, and recommending the identified customized template.
Thus, the available user information is preferably used to select one or more of the customized templates that are determined to be best suited for a given situation. However, the number, type, style, etc. of customized templates recommended to a user may depend on a number of other factors. The type of template that is active may affect the recommendation process. For example, word processing based templates may have many different options in terms of format, text style, margin size, color, etc., which may affect the number and/or type of customized templates that are recommended. However, a presentation-based template may only have a number of different context choices available for selection, resulting in a fewer number and/or types of customized templates being recommended.
According to an exemplary embodiment, which is in no way intended to limit the present invention, recommending to a user at least one of the customized templates based at least in part on the user information comprises comparing the customized template to a numerical feature vector. According to one approach, the comparison may be performed by attempting to match each available feature vector collected from the user to one or more nodes in a given customized template. In other words, a comparison may be made between the digital feature vector in each customized template and the node itself. This comparison allows one or more customized templates that best match the digital feature vector to be identified and recommended to the user accordingly.
According to another exemplary embodiment, which is in no way intended to limit the present invention, the process of recommending at least one of the customized templates to the user may be performed by a recommendation engine, for example, as shown in FIG. 7A. Referring briefly to FIG. 7A, recommendation engine 702 receives a user profile and information corresponding thereto, such as, for example, desired template features (e.g., user requirements). Recommendation engine 702 may also access a number of different existing templates stored in pool 704. Thus, recommendation engine 702 can modify existing templates using information received from the initial template and user information and/or user versions to form any desired number of user version clusters and/or customized templates, which can then be specifically recommended to the user.
As previously described, in some approaches, a request for a template, or even an initial template, is received. For the method in which the initial template is received, the user may modify the initial template to create its own version, which is again referred to herein as the user version. Based on these user versions, the various processes included herein can in turn generate customized templates (see, e.g., method 450 above). However, for methods in which an initial template is not provided, the process included herein can learn using previous user versions of a single user and/or other similar versions made by other similar users and generate a customized template for the single user (e.g., see method 400 above).
Thus, the process of generating the customized template may be based on one or more initial parameters specified by the requesting user. Referring back to FIG. 4B, a method 450 for creating a customized template and/or template recommendation based on an initial template is shown, according to one embodiment. It should be noted, however, that the various methods described in connection with the processes included in method 450 are similar and/or identical to those described above with respect to method 400. Thus, any of the above methods may be implemented in method 450 as desired.
Each step of method 450 may be performed by any suitable component of an operating environment. For example, in various embodiments, the method 450 may be performed in part or in whole by a controller, processor, computer, or the like, or some other device having one or more processors therein. Thus, in some embodiments, method 450 may be a computer-implemented method. Moreover, the terms "computer," "processor," and "controller" may be used interchangeably with respect to any of the embodiments herein, and such components are considered equivalents in many of the various permutations of the present invention.
Further, for those embodiments having a processor, the processor (e.g., processing circuitry, chips and/or modules implemented in hardware and/or software, and preferably having at least one hardware component) may be used in any device to perform one or more steps of method 450. Illustrative processors include, but are not limited to, a Central Processing Unit (CPU), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), the like, combinations thereof, or any other suitable computing device known in the art.
As shown in FIG. 4B, operation 452 of the method 450 includes receiving an initial template. In some approaches, the initial template may be received from a user who wishes to develop a customized template for a particular situation. In addition, this initial template may be a previous template implemented by the user, a generic template best suited for the task the user is facing, a template developed by the user himself, or the like.
Operation 454 also includes extracting textual content from the initial template, other user information, and/or other user versions corresponding to the user. As will be appreciated by those skilled in the art, any one or more of the methods described above with respect to method 400 may be implemented in extracting textual content in operation 454.
The method 450 also includes generating a digital feature vector using the textual content, other user information, and/or other user versions extracted from the initial template. See operation 456. In other words, operation 456 includes forming a numerical value representing the extracted text content. In some approaches, the extracted textual content may be considered "keywords". Further, the process of generating the digital feature vector may be any of the methods described above.
The digital feature vector is also used to evaluate existing users and/or user versions. See operation 458. The evaluation performed in operation 458 is used to identify certain users and/or user versions that best match the given situation. See operation 460. In other words, the user information, other user information, and/or other user versions corresponding to the initial template are implemented in selecting previous users and/or user versions similar to the current situation. According to some methods, which are in no way intended to limit the present invention, users and/or user versions having a predetermined number of similarities to the current user and/or current template are identified in operation 458. In other approaches, multiple user versions included in a given cluster and corresponding to a user may be used to determine whether an association exists with a given situation. Further, any desired type of similarity analysis may be implemented in order to perform operation 460.
These existing users and/or user versions are further separated to form one or more clusters. See operation 462. Each cluster includes a plurality of user profiles and/or user versions that are determined to be sufficiently similar to each other. For example, two or more user profiles and/or user versions determined to have a predetermined number of the same feature vectors may be placed in the same cluster. Thus, these clusters are preferably created using the digital feature vectors formed in operation 456. Depending on the method, the user profile and/or user version may be identified as being included in a particular cluster by using flags, data headers and/or pins, lookup tables, and the like.
Still referring to method 450, operation 464 includes generating a tree structure for each user version in the cluster. In other words, for each cluster, a tree structure is formed using the user profiles and/or user versions included in a given cluster. As described above, each tree structure includes a plurality of nodes organized into a plurality of levels (e.g., depths). Further, each node in the tree structure acts as a component in the respective user version. The tree structure is preferably organized such that each node in the same level represents a different aspect of the user profile and/or user version, e.g., as shown in FIG. 5.
The tree structure may be formed using any process that will be apparent to one skilled in the art upon reading this specification. For example, in some approaches, each user profile and/or user version may be reformatted into a tree structure. For example, as will become apparent shortly, each of the tree structures formed may be further combined to form a single combined tree structure.
Proceeding to operation 465, the method 450 includes combining tree structures in the cluster into a merged tree structure. Further, operation 466 includes generating a custom template for each of the one or more formed clusters using the respective merged tree structure. In a preferred approach, a top-down tree node aggregation and merging approach is implemented to generate a merged tree structure and/or custom template for a given cluster using the corresponding merged tree structure. In some methods, a customized template is formed for each of the one or more formed clusters by modifying the template initially received in operation 452. In other words, the initial template is preferably modified differently for each of the one or more formed clusters, thereby forming a different customized template for each of the formed clusters. However, any one or more of the sub-processes included in FIG. 4C may be used to generate a customized template using the corresponding tree structure for a given cluster. Accordingly, any one or more of the sub-processes in FIG. 4C may be used to perform operation 466 of FIG. 4B and/or operation 414 of FIG. 4A described above. It should be noted, however, that the sub-process of FIG. 4C is shown according to one embodiment, which is in no way intended to limit the present invention.
With continued reference to fig. 4B, the method 450 proceeds from operation 466 to operation 468. There, operation 468 includes recommending at least one of the customized templates to the user. As described above, the recommendation made in operation 468 is preferably based at least in part on user information corresponding to the given user. In other words, the available user information is preferably used to select one or more of the customized templates that are determined to best suit a given situation. However, the number, type, style, etc. of customized templates recommended to a user may depend on a number of other factors. The type of template that is active may affect the recommendation process. For example, word processing based templates may have many different options in terms of format, text style, margin size, color, etc., which may affect the number and/or type of customized templates that are recommended. However, a presentation-based template may only have a number of different context choices available for selection, resulting in a fewer number and/or types of customized templates being recommended.
Referring now to fig. 7B-7C, according to an exemplary embodiment, which is in no way intended to limit the present invention, pseudo code is provided for performing top-down grouping and merging of nodes in different tree structures. Thus, the pseudo-code may be used in generating a customized template using a respective tree structure for each of the one or more formed clusters.
The main processing performed by the pseudo-code in fig. 7B involves building a feature vector for each node at a given level of the tree structure to be combined. Further, the process is based on information included in each respective packet from the same level of nodes and information corresponding to child nodes extending therefrom. Thus, the provided output includes a feature vector for each node.
In addition, the pseudo code included in fig. 7C is mainly used to actually form the resultant merged tree structure. This is achieved by again analyzing the nodes in a given level in the tree structure being combined. The feature vectors formed for these nodes (e.g., using the pseudo code in fig. 7B) are used to combine particular ones of the nodes and determine whether the particular nodes should be removed or merged together. Thereafter, the newly formed merge node is renamed, e.g., according to any of the methods included herein. Once formed, the resulting merged tree structure can be used to form (e.g., convert to) a custom template, which can be used as desired.
As such, various embodiments included herein are capable of converting input (e.g., templates, user versions, user profiles, user preferences, etc.) into output in the form of customized templates and/or template recommendations. This significantly improves the accuracy with which custom templates can be developed, and thus also improves the applicability of these custom templates in many different situations.
Furthermore, since additional equipment and/or infrastructure is not used in many cases, these improvements can be achieved at minimal cost. Thus, various embodiments included herein may be implemented in a cloud-based computing environment. Accordingly, one of skill in the art will understand, upon reading this specification, that any one or more of the methods included herein may be implemented in a cloud computing environment. Moreover, the various methods herein can be implemented in connection with any other type of computing environment now known or later developed.
Cloud computing is a service delivery model for convenient, on-demand network access to a shared pool of configurable computing resources. Configurable computing resources are resources that can be deployed and released quickly with minimal administrative cost or interaction with a service provider, such as networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services. Such a cloud model may include at least five features, at least three service models, and at least four deployment models.
Is characterized by comprising the following steps:
self-service on demand: consumers of the cloud are able to unilaterally automatically deploy computing capabilities such as server time and network storage on demand without human interaction with the service provider.
Wide network access: computing power may be acquired over a network through standard mechanisms that facilitate the use of the cloud through heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, Personal Digital Assistants (PDAs)).
Resource pool: the provider's computing resources are relegated to a resource pool and serve multiple consumers through a multi-tenant (multi-tenant) model, where different physical and virtual resources are dynamically allocated and reallocated as needed. Typically, the customer has no control or even knowledge of the exact location of the resources provided, but can specify the location at a higher level of abstraction (e.g., country, state, or data center), and thus has location independence.
Quick elasticity: computing power can be deployed quickly, flexibly (and sometimes automatically) to enable rapid expansion, and quickly released to shrink quickly. The computing power available for deployment tends to appear unlimited to consumers and can be available in any amount at any time.
Measurable service: cloud systems automatically control and optimize resource utility by utilizing some level of abstraction of metering capabilities appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled and reported, providing transparency for both service providers and consumers.
The service model is as follows:
software as a service (SaaS): the capability provided to the consumer is to use the provider's applications running on the cloud infrastructure. Applications may be accessed from various client devices through a thin client interface (e.g., web-based email) such as a web browser. The consumer does not manage nor control the underlying cloud infrastructure including networks, servers, operating systems, storage, or even individual application capabilities, except for limited user-specific application configuration settings.
Platform as a service (PaaS): the ability provided to the consumer is to deploy consumer-created or acquired applications on the cloud infrastructure, which are created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but has control over the applications that are deployed, and possibly also the application hosting environment configuration.
Infrastructure as a service (IaaS): the capabilities provided to the consumer are the processing, storage, network, and other underlying computing resources in which the consumer can deploy and run any software, including operating systems and applications. The consumer does not manage nor control the underlying cloud infrastructure, but has control over the operating system, storage, and applications deployed thereto, and may have limited control over selected network components (e.g., host firewalls).
The deployment model is as follows:
private cloud: the cloud infrastructure operates solely for an organization. The cloud infrastructure may be managed by the organization or a third party and may exist inside or outside the organization.
Community cloud: the cloud infrastructure is shared by several organizations and supports a specific community of common interest relationships, such as mission missions, security requirements, policy and compliance considerations. A community cloud may be managed by multiple organizations or third parties within a community and may exist within or outside of the community.
Public cloud: the cloud infrastructure is offered to the public or large industry groups and owned by organizations that sell cloud services.
Mixing cloud: the cloud infrastructure consists of two or more clouds (private, community, or public) of deployment models that remain unique entities but are bound together by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting traffic sharing technology for load balancing between clouds).
Cloud computing environments are service-oriented with features focused on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that contains a network of interconnected nodes.
Referring now to FIG. 8, an example of a cloud computing node is shown. The cloud computing node 800 shown in fig. 1 is only one example of a suitable cloud computing node and should not impose any limitations on the functionality or scope of use of embodiments of the present invention. In general, cloud computing node 800 can be used to implement and/or perform any of the functions described above.
Cloud computing node 800 has a computer system/server 802 that is operational with numerous other general purpose or special purpose computing system environments or configurations. As is well known, examples of computing systems, environments, and/or configurations that may be suitable for operation with computer system/server 802 include, but are not limited to: personal computer systems, server computer systems, thin clients, thick clients, hand-held or laptop devices, microprocessor-based systems, set top boxes, programmable consumer electronics, networked personal computers, minicomputer systems, mainframe computer systems, distributed cloud computing environments that include any of the above, and the like.
Computer system/server 802 may be described in the general context of computer system-executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types. Computer system/server 802 may be practiced in distributed cloud computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media including memory storage devices.
As shown in fig. 8, computer system/server 802 in cloud computing node 800 is in the form of a general purpose computing device. Components of computer system/server 802 may include, but are not limited to: one or more processors or processing units 806, a system memory 818, and a bus 808 that couples the various system components (including the system memory 818 and the processing unit 806).
Bus 808 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, such architectures include, but are not limited to, Industry Standard Architecture (ISA) bus, micro-channel architecture (MAC) bus, enhanced ISA bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus.
Computer system/server 802 typically includes a variety of computer system readable media. Such media can be any available media that is accessible by computer system/server 802 and includes both volatile and nonvolatile media, removable and non-removable media.
The system memory 818 may include computer system readable media in the form of volatile memory, such as Random Access Memory (RAM)820 and/or cache memory 822. The computer system/server 802 may further include other removable/non-removable, volatile/nonvolatile computer system storage media. By way of example only, the storage system 824 may be used to read from and write to non-removable, nonvolatile magnetic media (not shown in FIG. 1, and commonly referred to as a "hard disk drive"). Although not shown in FIG. 1, a magnetic disk drive for reading from and writing to a removable, nonvolatile magnetic disk (e.g., a "floppy disk") and an optical disk drive for reading from or writing to a removable, nonvolatile optical disk (e.g., a CD-ROM, DVD-ROM, or other optical media) may be provided. In these cases, each drive may be connected to the bus 808 by one or more data media interfaces. Memory 818 may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of embodiments of the invention.
A program/utility 830 having a set (at least one) of program modules 832 may be stored in memory 818, such program modules 832 including, but not limited to, an operating system, one or more application programs, other program modules, and program data, each of which examples or some combination thereof may comprise an implementation of a network environment. Program modules 832 generally carry out the functions and/or methodologies of embodiments of the invention as described herein.
The computer system/server 802 may also communicate with one or more external devices 804 (e.g., keyboard, pointing device, display 814, etc.), with one or more devices that enable a user to interact with the computer system/server 802, and/or with any devices (e.g., network card, modem, etc.) that enable the computer system/server 802 to communicate with one or more other computing devices. Such communication may occur via input/output (I/O) interfaces 812. Also, computer system/server 802 can communicate with one or more networks (e.g., a Local Area Network (LAN), a Wide Area Network (WAN), and/or a public network such as the internet) through network adapter 810. As shown, network adapter 810 communicates with the other modules of computer system/server 802 via bus 808. It should be appreciated that although not shown in the figures, other hardware and/or software modules may operate with computer system/server 802, including but not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data backup storage systems, among others.
Referring now to FIG. 9, an exemplary cloud computing environment 900 is shown. As shown, cloud computing environment 900 includes one or more cloud computing nodes 800 with which local computing devices used by cloud consumers, such as Personal Digital Assistants (PDAs) or mobile phones 904A, desktop computers 904B, notebook computers 904C, and/or automobile computer systems 904N may communicate. The cloud computing nodes 800 may communicate with each other. Cloud computing nodes 800 may be physically or virtually grouped (not shown) in one or more networks including, but not limited to, private, community, public, or hybrid clouds, or a combination thereof, as described above. In this way, cloud consumers can request infrastructure as a service (IaaS), platform as a service (PaaS), and/or software as a service (SaaS) provided by the cloud computing environment 50 without maintaining resources on the local computing devices. It should be appreciated that the types of computing devices 904A-N shown in fig. 9 are merely illustrative and that cloud computing node 800, as well as cloud computing environment 900, may communicate with any type of computing device over any type of network and/or network addressable connection (e.g., using a web browser).
Referring now to FIG. 10, therein is shown a set of functional abstraction layers provided by a cloud computing environment 900 (FIG. 9). It should be understood at the outset that the components, layers, and functions illustrated in FIG. 10 are illustrative only and that embodiments of the present invention are not limited thereto. As shown in fig. 10, the following layers and corresponding functions are provided:
the hardware and software layer 1000 includes hardware and software components. Examples of hardware components include: a host 1001; a RISC (reduced instruction set computer) architecture based server 1002; a server 1003; a blade server 1004; a storage device 1005; networks and network components 1006. Examples of software components include: network application server software 1007 and database software 1008.
The virtual layer 1010 provides an abstraction layer that can provide examples of the following virtual entities: virtual server 1011, virtual storage 1012, virtual network 1013 (including virtual private networks), virtual applications and operating system 1014, and virtual client 1015.
In one example, management layer 1020 may provide the following functionality: resource provisioning function 1021: providing dynamic acquisition of computing resources and other resources for performing tasks in a cloud computing environment; metering and pricing function 1022: cost tracking of resource usage and billing and invoicing therefor is performed within a cloud computing environment. In one example, the resource may include an application software license. The safety function is as follows: identity authentication is provided for cloud consumers and tasks, and protection is provided for data and other resources. User portal function 1023: access to the cloud computing environment is provided for consumers and system administrators. Service level management function 1024: allocation and management of cloud computing resources is provided to meet the requisite level of service. Service Level Agreement (SLA) planning and fulfillment function 1025: the future demand for cloud computing resources predicted according to the SLA is prearranged and provisioned.
Workload layer 1030 provides an example of the functionality that a cloud computing environment may implement. In this layer, examples of workloads or functions that can be provided include: mapping and navigation 1031; software development and lifecycle management 1032; virtual classroom education offers 1033; data analysis processing 1034; transaction processing 1035; and generating a customized template and/or making suggestions related to the customized template 1036.
The present invention may be a system, method and/or computer program product in any combination of possible technical details. The computer program product may include a computer-readable storage medium having computer-readable program instructions embodied therewith for causing a processor to implement various aspects of the present invention.
The computer readable storage medium may be a tangible device that can hold and store the instructions for use by the instruction execution device. The computer readable storage medium may be, for example, but not limited to, an electronic memory device, a magnetic memory device, an optical memory device, an electromagnetic memory device, a semiconductor memory device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: a portable computer diskette, a hard disk, a Random Access Memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a Static Random Access Memory (SRAM), a portable compact disc read-only memory (CD-ROM), a Digital Versatile Disc (DVD), a memory stick, a floppy disk, a mechanical coding device, such as punch cards or in-groove projection structures having instructions stored thereon, and any suitable combination of the foregoing. Computer-readable storage media as used herein is not to be construed as transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., optical pulses through a fiber optic cable), or electrical signals transmitted through electrical wires.
The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to a respective computing/processing device, or to an external computer or external storage device via a network, such as the internet, a local area network, a wide area network, and/or a wireless network. The network may include copper transmission cables, fiber optic transmission, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. The network adapter card or network interface in each computing/processing device receives computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium in the respective computing/processing device.
Computer program instructions for carrying out operations of the present invention may be assembly instructions, Instruction Set Architecture (ISA) instructions, machine related instructions, microcode, firmware instructions, state setting data, integrated circuit configuration data, or source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C + + or the like and procedural programming languages, such as the "C" programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the case of a remote computer, the remote computer may be connected to the user's computer through any type of network, including a Local Area Network (LAN) or a Wide Area Network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet service provider). In some embodiments, aspects of the present invention are implemented by personalizing an electronic circuit, such as a programmable logic circuit, a Field Programmable Gate Array (FPGA), or a Programmable Logic Array (PLA), with state information of computer-readable program instructions, which can execute the computer-readable program instructions.
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer-readable program instructions.
These computer-readable program instructions may be provided to a processor of a computer 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/acts specified in the flowchart and/or block diagram block or blocks. These computer-readable program instructions may also be stored in a computer-readable storage medium that can direct a computer, programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer-readable medium storing the instructions comprises an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer, other programmable apparatus or other devices implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved, and substantially concurrently, with some or all of the blocks overlapping in time. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems which perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
Further, a system according to various embodiments may comprise a processor and logic integrated with and/or executable by the processor and configured to perform one or more of the process steps described herein. The processor may have any of the configurations described herein, such as a discrete processor or processing circuitry that includes many components (e.g., processing hardware, memory, I/O interfaces, etc.). Integrated together means that the processor has logic embedded therein as hardware logic, e.g., an Application Specific Integrated Circuit (ASIC), FPGA, etc. Executable by a processor, meaning that the logic is hardware logic; software logic, such as firmware, part of an operating system, part of an application program; or the like, or some combination of hardware and software logic accessible to a processor and configured to cause the processor to perform certain functions when executed by the processor. The software logic may be stored on local and/or remote memory having any memory type, as is known in the art. Any processor known in the art may be used, such as a software processor module and/or a hardware processor, such as an ASIC, FPGA, Central Processing Unit (CPU), Integrated Circuit (IC), Graphics Processing Unit (GPU), and the like.
It will be clear that various features of the foregoing systems and/or methods may be combined in any manner, creating a number of combinations from the description presented above.
It will be further appreciated that embodiments of the present invention may be provided in the form of a service deployed on behalf of a customer to provide services on demand.
Having described embodiments of the present invention, the foregoing description is intended to be exemplary, not exhaustive, and not limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terms used herein were chosen in order to best explain the principles of the embodiments, the practical application, or technical improvements to the techniques in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.

Claims (11)

1. A computer-implemented method for creating customized templates and template recommendations, comprising:
extracting text content from user information corresponding to a user;
generating a feature vector using text content extracted from the user information;
forming one or more clusters of existing user versions using the feature vectors;
for each of the one or more formed clusters, generating a tree structure for each user version in the cluster;
merging the tree structures in the cluster into a merged tree structure;
generating, for each of the one or more formed clusters, a custom template using a respective merged tree structure; and
recommending at least one of the customized templates to the user based on the user information.
2. The computer-implemented method of claim 1, wherein using the feature vectors to form the one or more clusters of existing user versions comprises:
extracting text content from the existing user version;
generating the feature vector using text content extracted from the user version and text content extracted from the user information; and
aggregating two or more of the existing user versions into a cluster based on the respective feature vectors.
3. The computer-implemented method of claim 1, wherein each tree structure comprises a plurality of nodes organized at a plurality of levels, wherein merging the tree structures in the cluster into a merged tree structure comprises:
forming each level of the merged tree structure by:
the nodes at a given level of the tree structure are grouped,
grouping of nodes based on feature vector evaluation corresponding to the nodes,
nodes and their children that are identified as unimportant are deleted,
merging the nodes identified as important to form a merged node, an
Renaming the merge node.
4. The computer-implemented method of claim 3, wherein the levels of the merged tree structure are formed in a top-down order.
5. The computer-implemented method of claim 1, wherein recommending at least one of the customized templates to the user based on the user information comprises:
converting the customized template and the user information into a feature vector;
measuring similarity based on the feature vectors;
identifying a customized template that best matches the user information; and
recommending the identified customized template.
6. The computer-implemented method of claim 1, wherein the user information is selected from the group consisting of: background information, expertise information, requirements, and preferences.
7. The computer-implemented method of claim 1, comprising:
extracting textual content from a user version associated with the user; and
generating the feature vector using textual content extracted from the user version and textual content extracted from the user information.
8. The computer-implemented method of claim 1, comprising:
an initial template is received and a template is received,
wherein the initial template is used with the feature vectors to form the one or more clusters of existing user versions.
9. A computer program product comprising a computer readable storage medium having program instructions embodied therein, the program instructions being readable and/or executable by a processor to cause the processor to perform the method of any of claims 1 to 8.
10. A system, comprising:
a processor; and
logic integrated with, executable by, or integrated with and executable by the processor, the logic configured to perform the method of any of claims 1-8.
11. A non-transitory computer-readable medium comprising instructions that, when read by a processor, cause the processor to perform the method of any one of claims 1-8.
CN202010661950.4A 2019-07-11 2020-07-10 Customization and recommendation of tree structure templates Pending CN112214980A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/509359 2019-07-11
US16/509,359 US11269835B2 (en) 2019-07-11 2019-07-11 Customization and recommendation of tree-structured templates

Publications (1)

Publication Number Publication Date
CN112214980A true CN112214980A (en) 2021-01-12

Family

ID=74059254

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010661950.4A Pending CN112214980A (en) 2019-07-11 2020-07-10 Customization and recommendation of tree structure templates

Country Status (2)

Country Link
US (1) US11269835B2 (en)
CN (1) CN112214980A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11210596B1 (en) 2020-11-06 2021-12-28 issuerPixel Inc. a Nevada C. Corp Self-building hierarchically indexed multimedia database

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11188778B1 (en) 2020-05-05 2021-11-30 Illumina, Inc. Equalization-based image processing and spatial crosstalk attenuator
US11455487B1 (en) * 2021-10-26 2022-09-27 Illumina Software, Inc. Intensity extraction and crosstalk attenuation using interpolation and adaptation for base calling
US11687708B2 (en) * 2021-09-27 2023-06-27 Microsoft Technology Licensing, Llc Generator for synthesizing templates

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090216708A1 (en) * 2008-02-22 2009-08-27 Yahoo! Inc. Structural clustering and template identification for electronic documents
US20170220544A1 (en) * 2016-02-01 2017-08-03 Microsoft Technology Licensing, Llc. Automatic template generation based on previous documents
CN108108387A (en) * 2016-11-23 2018-06-01 谷歌有限责任公司 Structured document classification and extraction based on masterplate
CN108255975A (en) * 2017-12-27 2018-07-06 东软集团股份有限公司 Template construction method, content of pages grasping means and device, medium and equipment
US20180349476A1 (en) * 2017-06-06 2018-12-06 International Business Machines Corporation Evaluating theses using tree structures
CN109670163A (en) * 2017-10-17 2019-04-23 阿里巴巴集团控股有限公司 Information identifying method, information recommendation method, template construction method and calculating equipment

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7849115B2 (en) 2006-06-05 2010-12-07 Bruce Reiner Method and apparatus for adapting computer-based systems to end-user profiles
US7660804B2 (en) * 2006-08-16 2010-02-09 Microsoft Corporation Joint optimization of wrapper generation and template detection
US8060857B2 (en) * 2009-01-31 2011-11-15 Ted J. Biggerstaff Automated partitioning of a computation for parallel or other high capability architecture
US9069802B2 (en) * 2013-03-15 2015-06-30 Locus, LP Syntactic tagging in a domain-specific context
US9563689B1 (en) 2014-08-27 2017-02-07 Google Inc. Generating and applying data extraction templates
CN105426352A (en) 2015-11-24 2016-03-23 国家电网公司 Automatic generation method of template document

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090216708A1 (en) * 2008-02-22 2009-08-27 Yahoo! Inc. Structural clustering and template identification for electronic documents
US20170220544A1 (en) * 2016-02-01 2017-08-03 Microsoft Technology Licensing, Llc. Automatic template generation based on previous documents
CN108108387A (en) * 2016-11-23 2018-06-01 谷歌有限责任公司 Structured document classification and extraction based on masterplate
US20180349476A1 (en) * 2017-06-06 2018-12-06 International Business Machines Corporation Evaluating theses using tree structures
CN109670163A (en) * 2017-10-17 2019-04-23 阿里巴巴集团控股有限公司 Information identifying method, information recommendation method, template construction method and calculating equipment
CN108255975A (en) * 2017-12-27 2018-07-06 东软集团股份有限公司 Template construction method, content of pages grasping means and device, medium and equipment

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11210596B1 (en) 2020-11-06 2021-12-28 issuerPixel Inc. a Nevada C. Corp Self-building hierarchically indexed multimedia database
US11810007B2 (en) 2020-11-06 2023-11-07 Videoxrm Inc. Self-building hierarchically indexed multimedia database

Also Published As

Publication number Publication date
US20210011896A1 (en) 2021-01-14
US11269835B2 (en) 2022-03-08

Similar Documents

Publication Publication Date Title
US11120589B2 (en) Increasing readability of visualization nodes
CN112214980A (en) Customization and recommendation of tree structure templates
US20190149617A1 (en) Migration of applications to a computing environment
US10922101B2 (en) User interface widget recommendation
US11144607B2 (en) Network search mapping and execution
AU2021257649B2 (en) Vision-based cell structure recognition using hierarchical neural networks and cell boundaries to structure clustering
US10482162B2 (en) Automatic equation transformation from text
US8874513B2 (en) Transitioning application replication configurations in a networked computing environment
US20190138646A1 (en) Systematic Browsing of Automated Conversation Exchange Program Knowledge Bases
US11030015B2 (en) Hardware and software resource optimization
WO2023098302A1 (en) Identifying microservices for monolith application through static code analysis
JP7410040B2 (en) Determining query-aware resiliency in virtual agent systems
US10902037B2 (en) Cognitive data curation on an interactive infrastructure management system
US11847443B2 (en) Constraints-based refactoring of monolith applications through attributed graph embeddings
US20230021563A1 (en) Federated data standardization using data privacy techniques
US9542616B1 (en) Determining user preferences for data visualizations
US11620275B2 (en) Multi-text interconnection
US11429381B1 (en) Software application refactoring and modification
US11514121B2 (en) Webpage customization
US20230267278A1 (en) Context-based response generation
US20230177032A1 (en) Performing automated semantic feature discovery
US20220012220A1 (en) Data enlargement for big data analytics and system identification

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination