Feature submission deduplication engine
Through natural language processing and machine learning, repeated feature submission is detected, and blockchain management system is used to solve the problem of duplication of feature submission in complex systems, efficient and secure feature development management is achieved, and resource waste and development conflicts are reduced.
Patent Information
- Application Number
- CN202010209130.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-04-02
- Filing Date
- 2020-03-23
- Publication Date
- 2025-01-17
- Estimated Expiration
- 2040-03-23
AI Technical Summary
During the development and maintenance of complex systems, there may be duplication of feature submissions submitted by multiple stakeholders, resulting in waste of computing resources and incoordinated development, which in turn leads to duplication and conflicting solutions.
Natural language processing and machine learning technology are used to detect duplicate feature submissions, provide duplicate data deletion notifications, and achieve secure feature submission and development management through a blockchain-based feature management system to reduce duplicate development.
It effectively reduces the waste of duplicate development and computing resources, improves development efficiency, and ensures the security and coordination of feature development.
Smart Images

Figure CN111797633B_ABST
Abstract
Description
Technical Field
[0001] Embodiments of the present disclosure relate to the field of software development, and more particularly to feature submission. Background Art
[0002] During the development and / or maintenance of a complex system, multiple stakeholders may be responsible for feature conception, feature implementation, and feature monitoring. For example, when a software application is deployed for use in an organization, many members of the organization may use the software application to complete tasks. Further, many members of the organization may provide feature submissions to a team of software developers to suggest new features for the software application. The team of software developers may select a subset of the feature submissions and devote resources (e.g., time resources, computing resources, etc.) to the subset for development. Summary of the invention
[0003] According to some implementations, a method may include: receiving, by a device, a feature submission identifying a candidate feature for a software application; preprocessing, by the device, the feature submission so that data associated with the candidate feature is reformatted to match a data format associated with stored information about past feature submissions; performing, by the device, natural language processing on the data associated with the candidate feature to determine a semantic meaning of the candidate feature; comparing, by the device, the semantic meaning of the candidate feature with an index of past feature submissions to determine whether the candidate feature matches any of the past feature submissions; and providing, by the device, a response indicating whether the candidate feature matches any of the past feature submissions within a threshold semantic similarity, wherein the response includes an indication that the candidate feature does not match any of the past feature submissions or identifies information associated with one or more past feature submissions that have a threshold semantic similarity to the candidate feature.
[0004] According to some implementations, a device may include: one or more memories; and one or more processors, the one or more processors being communicatively coupled to the one or more memories, the one or more processors being configured to: train a binary machine learning classifier to summarize a description of a past feature submission based on one or more features of the description; use the binary machine learning classifier to perform a text summarization process to identify a set of key phrases; receive a feature submission that identifies a candidate feature for an application; pre-process the feature submission to reformat data associated with the candidate feature to match a data format associated with stored information about past feature submissions; perform natural language processing on the data associated with the candidate feature to determine a semantic meaning of the candidate feature; compare the semantic meaning of the candidate feature with an index of past feature submissions and associate it with the set of key phrases to determine whether the candidate feature matches any of the past feature submissions; and provide a response indicating whether the candidate feature matches any of the past feature submissions, wherein the response includes an indication that the candidate feature does not match any of the past feature submissions or identifies information associated with one or more past feature submissions that have a threshold semantic similarity to the candidate feature.
[0005] According to some implementations, a non-transitory computer-readable medium may store one or more instructions. The one or more instructions, when executed by one or more processors of a device, may cause the one or more processors to: receive a feature submission identifying a candidate feature for an application; perform natural language processing on data associated with the candidate feature to determine a semantic meaning of the candidate feature; compare the semantic meaning of the candidate feature with an index of past feature submissions to determine whether the candidate feature matches any of the past feature submissions; and provide a response indicating whether the candidate feature matches the past feature submission, wherein the response includes an indication that the candidate feature does not match any of the past feature submissions or information identifying one or more past feature submissions associated with a threshold semantic similarity to the candidate feature. BRIEF DESCRIPTION OF THE DRAWINGS
[0006] Figures 1A to 1E is a schematic diagram of an example implementation described herein.
[0007] Figure 2 is a schematic diagram of an example environment in which the systems and / or methods described herein may be implemented.
[0008] Figure 3 yes Figure 2 A schematic diagram of example components of one or more devices in FIG.
[0009] Figure 4is a flow chart of an example process for feature submission deduplication and blockchain-based feature management.
[0010] Figure 5 is a flow chart of an example process for feature submission deduplication and blockchain-based feature management.
[0011] Figure 6 is a flow chart of an example process for feature submission deduplication and blockchain-based feature management. DETAILED DESCRIPTION
[0012] The following detailed description of example implementations refers to the accompanying drawings.The same reference numerals in different drawings may identify the same or similar elements.
[0013] In increasingly complex organizations, ideation is a distributed process. For example, an organization may have thousands, tens of thousands, hundreds of thousands, or even millions of employees or associated personnel. As a result, expertise in using different software applications, tools, and the like may be distributed across many teams of employees around the world. An organization may deploy a feature submission platform to receive feature submissions identifying different ideas for improving software applications, tools, and the like. The feature submission platform may receive feature submissions and may automatically generate code for creating new features for a software application, or may automatically assign software developers to attempt to develop code for a software application, a tool associated with a software application, a new version of a software application, and the like.
[0014] However, many feature submissions may be duplicates of other feature submissions submitted by other employees. For example, a first employee may identify a defect in a software application, such as a bug, a missing feature, an inefficiency, etc., and may submit a first feature submission identifying a solution to the defect. Before the defect is corrected, a second employee may identify the same defect in the same software application and submit a second feature submission identifying the same or a different solution. As a result, multiple different tools, multiple versions of the software application, etc. may be developed. Such development may be duplicative, may waste computing resources, may result in excess time due to uncoordinated work between multiple different software developer teams assigned the same new feature, etc.
[0015] Some implementations described herein provide feature submission deduplication, thereby reducing the utilization of computing resources associated with developing duplicate, parallel, and / or conflicting solutions. For example, some implementations may use natural language processing and / or machine learning to detect duplicate feature submissions, provide notifications about duplicate feature submissions, merge duplicate feature submissions, etc. In addition, some implementations described herein may provide blockchain-based feature management, thereby enabling secure feature submission sponsorship and feature development management.
[0016] Figures 1A to 1E is a schematic diagram of an example implementation 100 described herein. Figure 1A As shown in , the example implementation 100 may include a feature analysis platform 102 .
[0017] As in Figure 1A As further shown in , the feature analysis platform 102 may include a preprocessing module 104, which the feature analysis platform 102 may use to preprocess input data of the feature analysis platform 102. As shown by reference numeral 122, the feature analysis platform 102 may receive input data identifying a feature submission set for preprocessing using the preprocessing module 104. For example, the feature analysis platform 102 may receive information identifying one or more candidate features that have been submitted to the feature management platform. In this case, the one or more candidate features may include one or more software features, one or more hardware features, one or more method features, etc. In some implementations, the feature analysis platform 102 may establish a model pipeline for obtaining input data. For example, the feature analysis platform 102 may identify a directory storing information about feature submission sets, and may obtain data from the directory for preprocessing.
[0018] In some implementations, the feature analysis platform 102 can receive feature submissions that identify features. For example, when generating a feature corpus of features to be deduplicated, as described in more detail herein, the feature analysis platform 102 can receive information identifying one or more previous feature submissions that were submitted to the feature management platform at a previous time. In this case, the feature analysis platform 102 can perform deduplication on the one or more previous feature submissions, as described in more detail herein, and can modify one or more existing task assignments to merge duplicate task assignments associated with the duplicate previous feature submissions.
[0019] Additionally, or alternatively, the feature analysis platform 102 may receive feature submissions that identify problem statements. For example, the feature analysis platform 102 may receive a natural language description of a problem with a software application. In this case, the feature submission may be a trouble ticket, a forum submission, a chat message, a record of an interaction with an information technology (IT) employee, or the like. In some implementations, the feature analysis platform 102 may receive a description of an innovation theme. For example, the feature analysis platform 102 may receive information identifying a description of an innovation contest, an innovation challenge, or the like associated with an organization. In this case, when feature deduplication is performed, the feature analysis platform 102 may classify the new feature submission as being related to the innovation theme, and may cause the new feature submission to be automatically included in the innovation contest, innovation challenge, or the like for selection for development.
[0020] As in Figure 1A 124, the feature analysis platform 102 may receive input data identifying a set of tool descriptions. For example, the feature analysis platform 102 may receive information identifying one or more software applications, one or more tools, etc. for feature submissions. In this case, the one or more software applications, one or more tools, etc. may be software applications and / or tools used by a specific organization for which the feature analysis platform 102 is deployed. In some implementations, the set of tool descriptions may include program code documentation, marketing information, etc. In some implementations, when the feature analysis platform 102 is deployed for use with a specific software application, the feature analysis platform 102 may receive input data identifying a description of the specific software application for use in identifying feature submissions from users of the specific software application, who may or may not be associated with a common organization.
[0021] As in Figure 1AAs further illustrated in the figures 152 to 160, using the preprocessing module 104, the feature analysis platform 102 can perform a set of preprocessing processes on the input data to generate model data for determining feature submission similarity. For example, the feature analysis platform 102 can perform a case standardization process. In this case, the feature analysis platform 102 can preprocess the input data to remove case differences (e.g., to convert the feature submission description to all lowercase letters). Additionally, or alternatively, the feature analysis platform 102 can perform a tokenization process. For example, the feature analysis platform 102 can divide the natural language description of the feature submission into sequences (e.g., tokens) corresponding to individual words, sentences, paragraphs, etc. Additionally, or alternatively, the feature analysis platform 102 can perform a stop word removal process. For example, the feature analysis platform 102 may filter out one or more words that lack semantic meaning, such as articles (e.g., "one", "the", etc.), pronouns (e.g., "I", "me", etc.), etc., thereby reducing processing utilization and / or memory utilization associated with natural language processing. Additionally or alternatively, the feature analysis platform 102 may perform a character stripping process. For example, the feature analysis platform 102 may remove one or more characters (such as numbers, special characters, etc.) that may lack semantic meaning, thereby reducing processing utilization and / or memory utilization associated with natural language processing. Additionally or alternatively, the feature analysis platform 102 may perform a morphological restoration process. For example, the feature analysis platform 102 may group the inflected forms of a word together based on the word's lemma so as to be analyzed as a single item. In this manner, the feature analysis platform 102 may pre-process data associated with feature submissions for use in determining the similarity of new feature submissions with past feature submissions.
[0022] As in Figure 1B 162, the feature analysis platform 102 may use a bag of words (BOW) model generator 106 to process the model data 126 and generate a bag of words type model. For example, the feature analysis platform 102 may generate a dictionary object that maps words to identifiers, and may transform the dictionary object into a bag of words model. In this case, the bag of words model may represent a count of the number of occurrences of each semantically distinct word (e.g., each term) in the description of the candidate feature in the past feature submission, each semantically distinct word corresponding to each integer word identifier and represented as a sparse vector.
[0023] As in Figure 1C164, the feature analysis platform 102 can further process the model data 126 using a latent semantic indexing (LSI) transformer 108. For example, the feature analysis platform 102 can perform matrix decomposition (e.g., a singular value decomposition (SVD) process) on the bag of words model to generate a set of sparse vectors. In this case, the feature analysis platform 102 can use an LSI process to determine a singular value decomposition with respect to a term frequency matrix, and can generate LSI vectors and aggregate the LSI vectors into an LSI corpus.
[0024] As in Figure 1D 166, the feature analysis platform 102 may use the indexer 110 to further process the model data 126 to generate a feature corpus 128 for use in performing feature deduplication. For example, the feature analysis platform 102 may generate an index corresponding to the number of dimensions of the feature corpus. In this case, when a new feature submission is received, the new feature submission may be processed using the preprocessing module 104 as described herein and may be represented as an LSI vector, which may enable the feature analysis platform 102 to use the index to determine a similarity score based on the similarity of the LSI vector to other LSI vectors in the feature corpus. In some implementations, the feature analysis platform 102 may perform a dimensionality reduction process to reduce the number of dimensions of the feature corpus.
[0025] In some implementations, the feature analysis platform 102 may use the feature corpus 128 to perform a text summarization process. For example, the feature analysis platform 102 may shorten the text segment to generate a summary of the text. In this case, the summary of the text may represent a coherent and fluent version of the text that identifies the following sub-segments (e.g., representing the main points of the text): these sub-segments have the highest determined semantic meaning level relative to other sub-segments. In this case, the feature analysis platform 102 may use the summarized text as a label in the index, and may provide the summarized text as a response to the search index, etc. In some implementations, the feature analysis platform 102 may perform part-of-speech tagging, word sequence analysis, language pattern recognition, etc. to identify key phrases that can be classified as sub-segments with the highest semantic meaning. In some implementations, the feature analysis platform 102 may train a binary machine learning classifier and use the binary machine learning classifier to generate the summarized text and / or identify the key phrases therein. In contrast, the feature analysis platform 102 may negatively annotate non-key phrases with the lowest semantic meaning so as to be omitted from the summary. In some implementations, the feature analysis platform 102 can use machine learning techniques (such as binary machine learning classifier techniques) to perform text summarization based on a set of characteristics that can be referred to as features (e.g., the length of a key phrase, the frequency of a key phrase, the most frequently occurring word in a key phrase, the number of characters in a key phrase, etc.).
[0026] As in Figure 1E 168, after generating the feature corpus 128, the feature analysis platform 102 can receive new feature submissions from the client device 112. For example, the feature analysis platform 102 can receive natural language descriptions of new features, questions about software applications, topics for feature innovation, etc. In some implementations, the feature analysis platform 102 can receive other information in the new feature submission. For example, the feature analysis platform 102 can receive program code in which errors are detected, a collection of classifications or tags for the feature submission, etc., and can use other information for feature deduplication.
[0027] In some implementations, the feature analysis platform 102 can provide a user interface with which to receive new feature submissions. For example, the feature analysis platform 102 can generate a user interface and provide the user interface via the client device 112. In this case, the client device 112 can detect user interactions associated with identifying new features, such as receiving a natural language description of the new feature, and can provide the new feature submission to the feature analysis platform 102 for processing.
[0028] In some implementations, the feature analysis platform 102 may provide a feed to the client device 112, and may receive new feature submissions as a response to providing the feed. For example, based on a configured profile, the feature analysis platform 102 may identify feature submissions of interest to a user associated with the configured profile (e.g., based on user interests, user roles, user education, etc.). In this case, the feature analysis platform 102 may provide the identified feature submissions of interest to the client device 112 for display to implement the user's conception, and may receive new feature submissions based on the feature submissions of interest. In some implementations, the feature analysis platform 102 may receive and / or provide a feed as one or more Simple Syndication (RSS) feeds. For example, the feature analysis platform 102 may identify a data feed associated with updates to a specific industry to which the relevant software application belongs, may subscribe to the data feed, may periodically add new features identified from the data feed to a feature corpus, may periodically provide updates to the user regarding the new features, and may use the feature corpus to perform feature deduplication. Additionally, or alternatively, the feature analysis platform 102 can generate a data feed and can provide the data feed to the client device 112 to update the user about the new feature.
[0029] In some implementations, the feature analysis platform 102 may provide notifications associated with a contest or challenge to facilitate receiving new feature submissions. For example, the feature analysis platform 102 may receive an indication of an innovation theme (e.g., from a client device 112), may identify a set of submitters of previous feature submissions related to the innovation theme, and may transmit notifications of the innovation theme to the client devices used by the set of submitters. In this manner, the feature analysis platform 102 may facilitate an innovation contest or competition. In some implementations, the feature analysis platform 102 may target an innovation contest for a specific client, a specific subset of developers, a public group, and the like. For example, the feature analysis platform 102 may publish a website identifying an innovation contest, and may receive feature submissions via the website.
[0030] In some implementations, the feature analysis platform 102 may provide chatbot functionality to guide the user in providing information associated with a new feature submission. For example, the feature analysis platform 102 may use natural language processing (NLP) functionality to analyze human language and communicate with the user to provide answers, obtain information, etc. using text communication, audio communication (e.g., using a text-to-speech generator and / or a speech-to-text generator), video communication, etc. In this case, the feature analysis platform 102 may process the user's natural language questions to determine intent, semantic meaning, etc., and to detect corresponding responses in a data structure storing responses corresponding to a set of possible questions. In this manner, the feature analysis platform 102 may provide natural language responses, thereby reducing technical difficulty when using the feature analysis platform 102 to submit ideas for features for software applications, and reducing the need to provide large help files, which may waste memory resources for storage and / or network resources for transmission.
[0031] In some implementations, the feature analysis platform 102 can receive multiple new feature submissions from multiple client devices 112. For example, when operating in a globally distributed organization, the feature analysis platform 102 can use a cloud computing environment as described in more detail herein to support the use of hundreds, thousands, or even hundreds of thousands of concurrent users and / or submissions. In this manner, the feature analysis platform 102 enables similarity analysis to be performed on a large number of duplicate feature submissions, the performance of which may be impractical if assigned to individual developers for development. In addition, by performing feature deduplication and / or merging duplicate feature submissions, the feature analysis platform 102 can use available computing resources to reduce the number of features used for development to a developable number, thereby addressing the technical problem of limited computing resources for feature development.
[0032] In some implementations, the feature analysis platform 102 may define a set of roles, and may enable some roles in the set of roles to submit new features. For example, the feature analysis platform 102 may be deployed for an organization, and may have roles defined for organizational customers, thereby allowing members in the customer organization to submit feature submissions for development by the organization. In this case, the feature analysis platform 102 may utilize the associated organization to annotate new feature submissions to implement a security policy that prevents inter-organizational feature visibility in a multi-organization deployment. In some implementations, the feature analysis platform 102 may define user-level visibility for feature submissions based on the set of roles. For example, the feature analysis platform 102 may enable users with a first role to view a feature submission set (e.g., a manager can view all feature submissions), and may enable users with a second role to view a subset of a feature submission set (e.g., a developer associated with a specific geographic location can only view feature submissions annotated to a specific geographic location, thereby facilitating a geographic-based knowledge sharing restriction policy).
[0033] As in Figure 1E 170, the feature analysis platform 102 can use the similarity processing module 114 to determine a similarity score for a new feature based on the feature corpus 128. For example, the feature analysis platform 102 can use natural language processing techniques to process the new feature submission, and can use machine learning techniques to determine whether the new feature submission is a duplicate of a previous feature submission in the feature corpus 128.
[0034] In some implementations, the feature analysis platform 102 can perform a guided machine learning process to facilitate similarity score generation. For example, the feature analysis platform 102 can submit new feature submissions to subject matter experts (e.g., managers, developers, etc.) for classification, and the classification can be used to generate similarity scores and train subsequent automatic classification. In this way, the feature analysis platform 102 enables automatic classification and generation of similarity score generation models with reduced use of processing resources and / or in a reduced time period relative to machine learning without the guidance of subject matter experts.
[0035] In some implementations, the feature analysis platform 102 may use text ranking analysis to search within the index for feature submissions that match the new feature submission. In this case, the feature analysis platform 102 may connect the text of the corpus (e.g., all the text in the feature submission), divide the text into a set of segments (e.g., sentences), determine the word embeddings (e.g., vector representations) of the set of segments, and determine the similarities between the sentences to calculate a similarity matrix. In this case, as described herein, the similarity matrix may be a graph with segments (e.g., sentences) as vertices and similarity scores as edges, so that sentence ranking calculations can be performed and the highest ranked sentences can be determined based on semantic similarity. In this manner, by using an index, the feature analysis platform 102 may reduce the utilization of processing resources relative to determining the similarity score of a new feature submission relative to each previous feature submission in the feature corpus 128 without using an index to identify a subset of similar previous feature submissions of the feature corpus 128. In this case, the feature analysis platform 102 can determine a similarity score based on the semantic similarity of the text of the new feature submission to the highest ranked sentence or sentences indexed by other feature submissions in the feature corpus 128 .
[0036] In some implementations, the feature analysis platform 102 can use a queue-based architecture to determine the similarity score. For example, the feature analysis platform 102 can receive hundreds, thousands, or even millions of report requests (e.g., new feature submission requests, feature development status inquiries, etc.), and can queue each report request in a queue-based architecture for background processing. In this manner, the feature analysis platform 102 can enable the feature analysis platform 102 to be used while the report requests are being processed in the background (e.g., to submit new feature submissions and / or instantiate new report requests).
[0037] In some implementations, the feature analysis platform 102 can generate multiple similarity scores. For example, the feature analysis platform 102 can generate a similarity score that represents the similarity between the new feature submission and each feature submission indexed in the feature corpus 128. In this case, the feature analysis platform 102 can compare the highest similarity score, the set of highest similarity scores, etc. using a threshold to determine whether the new feature submission matches a past feature submission.
[0038] As in Figure 1E172, the feature analysis platform 102 may selectively instantiate new features in new feature submissions in a blockchain-based feature management system. For example, the feature analysis platform 102 may determine whether a new feature submission matches a previous feature submission based on whether a similarity score satisfies a threshold, and may determine whether to instantiate the new feature based on whether the new feature submission matches the previous feature submission. In this case, the feature analysis platform 102 may automatically generate a blockchain transaction to store a record of the new feature, and enable management of the status of the new feature, sponsorship of the new feature, etc. In this manner, the feature analysis platform 102 reduces the likelihood of instantiating new features for development that are duplicates of other features already in development.
[0039] In some implementations, the feature analysis platform 102 may determine a meta-score for the new feature submission based on the similarity score, and may determine whether to instantiate the new feature based on the meta-score. For example, the feature analysis platform 102 may perform a benefit quantification process on the new feature submission to determine whether to accept the new feature submission. In this case, the feature analysis platform 102 may analyze the feature submission to quantify computing resource savings, memory resource savings, functional improvements, user experience improvements, etc. associated with the feature submission. Additionally, or alternatively, the feature analysis platform 102 may determine the meta-score based on the novelty of the idea (e.g., a similarity score), whether the idea is related to a trending topic (e.g., a topic with a threshold number of submissions, a topic of an idea generation contest, etc.), etc.
[0040] In some implementations, the feature analysis platform 102 may determine not to instantiate the new feature. For example, the feature analysis platform 102 may determine that the similarity score meets a threshold indicating a match with a previous feature submission, and may provide a warning to the client device 112 indicating that the new feature submission matches the previous feature submission. In this case, the feature analysis platform 102 may provide information identifying the previous feature submission, thereby enabling the user to modify the new feature submission to distinguish it from the previous feature submission. In some implementations, the feature analysis platform 102 may provide information identifying multiple previous feature submissions whose similarity scores meet the threshold, and the user may interact with the user interface of the client device 112 to select one or more of the multiple previous feature submissions into which the new feature submission is merged. In this case, the feature analysis platform 102 may assign the user as a collaborator of a developer assigned to one or more of the multiple previous feature submissions, and may provide a notification to the developer about merging the new feature submission. Additionally, or alternatively, the feature analysis platform 102 may automatically merge the new feature submission with similar past feature submissions, and provide information about the merged feature submission to the developer developing the feature based on the similar past feature submissions.
[0041] In some implementations, the feature analysis platform 102 may add the new feature to the report. For example, based on instantiating the new feature in the blockchain-based feature management system, the feature analysis platform 102 may add the new feature to the report of valid features, and may provide a notification to the set of client devices (e.g., client device 112) indicating that the report of valid features has been updated. In some implementations, the feature analysis platform 102 may perform analysis on the valid features based on adding the new feature to the report of valid features.
[0042] In some implementations, the feature analysis platform 102 may apply a voting process to a new feature submission before instantiating the new feature in the new feature submission. For example, the feature analysis platform 102 may determine that the similarity score satisfies another threshold indicating that the new feature is not a duplicate, and may post the new feature submission to a voting system to obtain votes on whether to develop the new feature. In this case, the feature analysis platform 102 may assign the new feature submission to a moderator, may assign the new feature submission to a set of reviewers, may collect voting scores and / or feedback from the set of reviewers and / or the moderator, and may determine whether to instantiate the new feature. In this case, based on instantiating the new feature, the feature analysis platform 102 may automatically assign the new feature to a developer for development, allocate resources for developing the new feature, allocate resources for executing the new feature, generate a notification announcing the new feature, etc.
[0043] In some implementations, the feature analysis platform 102 can apply gamification techniques to manage new features based on instantiating new features. For example, the feature analysis platform 102 can issue tokenized virtual currency to sponsors (e.g., of feature submissions), and the sponsors can use the tokenized virtual currency to sponsor non-repetitive features for development (e.g., new features). In this case, the feature analysis platform 102 can track the development of sponsored features (e.g., new features in new feature submissions), and can issue rating points based on tracking development (e.g., approval of development, successful development, rating of developed features), based on social collaboration, etc.
[0044] In some implementations, the feature analysis platform 102 can use the blockchain-based Hyperledger to track tokenized virtual currency to determine development banners (e.g., top developers of feature submissions, top submitters of features, top sponsors of features, etc.). For example, the feature analysis platform 102 can allocate tokenized virtual currency, receive votes on which new features to develop, consume tokenized virtual currency allocated to new features selected for development, allocate additional tokenized virtual currency to sponsors of new features based on the status of development, and use the blockchain-based Hyperledger network to track the allocation and consumption of tokenized virtual currency.
[0045] In some implementations, the feature analysis platform 102 can allocate new features for development within concurrent development cycles. For example, the feature analysis platform 102 can divide a set of software developers into a set of teams, and can assign different development tasks to each team to achieve concurrent feature development. In this way, the feature analysis platform 102 enables multiple versions of a software application to be deployed within a relatively short time span. In addition, the feature analysis platform 102 can assign a single development task to multiple developer teams to achieve a competitive, independent development process, thereby leveraging competition to ensure optimal development of new features. Based on the use of feature deduplication, the feature analysis platform 102 can ensure that the competitive, independent development process is monitorable to determine which of the multiple versions of a feature is to be deployed, thereby providing improvements in the development process relative to multiple versions of a feature to select a single version to be deployed, which feature was developed unintentionally and is therefore not monitored and compared during development.
[0046] In some implementations, the feature analysis platform 102 can automatically assign mentors to assist in developing new features associated with a feature submission. For example, the feature analysis platform 102 can identify one or more software developers and / or one or more managers associated with working on past feature submissions that have a threshold similarity to the new feature submission, and the feature analysis platform 102 can assign the one or more software developers to develop new features in the new feature submission and the one or more managers to manage the development of the new features. In this manner, the feature analysis platform 102 ensures that employees with expertise developed in feature development are correctly assigned to tasks that are similar to previous tasks on which the employees have worked.
[0047] In some implementations, the feature analysis platform 102 may assign development of a new feature in a new feature submission to a user who submitted the new feature submission. For example, when a developer submits a new feature submission, the feature analysis platform 102 may approve the new feature submission based on the new feature submission not satisfying a threshold similarity score, and may assign the developer to develop the new feature. In this case, the developer may provide information identifying other developers via the client device 112, and the feature analysis platform 102 may automatically assign tasks associated with the development of the new feature to the other developers.
[0048] In this manner, the feature analysis platform 102 implements feature submission deduplication, thereby reducing the utilization of computing resources associated with developing duplicate, concurrent, and / or conflicting solutions.
[0049] As indicated above, these are provided only as one or more examples. Figures 1A to 1E Other examples can be found with Figures 1A to 1E The content described is different.
[0050] Figure 2 2 is a schematic diagram of an example environment 200 in which the systems and / or methods described herein may be implemented. Figure 2 As shown in FIG. 2 , environment 200 may include client device 210, feature analysis platform 220, computing resources 225, cloud computing environment 230, and network 240. Devices in environment 200 may be interconnected via wired connections, wireless connections, or a combination of wired and wireless connections.
[0051] The client device 210 includes one or more devices capable of receiving, generating, storing, processing, and / or providing information associated with feature submission deduplication and blockchain-based feature management. For example, the client device 210 may include a communication device and / or a computing device (such as a mobile phone (e.g., a smart phone, a wireless phone, etc.), a laptop computer, a tablet computer, a handheld computer, a desktop computer, a gaming device, a wearable communication device (e.g., a smart watch, a pair of smart glasses, etc.), or a similar type of device.
[0052] The feature analysis platform 220 includes one or more computing resources allocated to perform feature submission deduplication and blockchain-based feature management. For example, the feature analysis platform 220 can be a platform implemented by a cloud computing environment 230, which can perform feature submission deduplication and blockchain-based feature management. In some implementations, the feature analysis platform 220 is implemented by a computing resource 225 of the cloud computing environment 230.
[0053] The feature analysis platform 220 may include a server device or a group of server devices. In some implementations, the feature analysis platform 220 may be hosted in a cloud computing environment 230. It is worth noting that although the implementation described herein describes the feature analysis platform 220 as being hosted in a cloud computing environment 230, in some implementations, the feature analysis platform 220 may be non-cloud-based or may be partially cloud-based.
[0054] The cloud computing environment 230 includes an environment for delivering computing as a service, whereby shared resources, shared services, etc. can be provided to perform feature submission deduplication and blockchain-based feature management. The cloud computing environment 230 can provide computing, software, data access, storage, and / or other services that do not require end users to understand the physical location and configuration of the systems and / or devices that deliver the services. As shown, the cloud computing environment 230 can include a feature analysis platform 220 and computing resources 225.
[0055] The computing resources 225 include one or more personal computers, workstation computers, server devices, or another type of computing devices and / or communication devices. In some implementations, the computing resources 225 can host the feature analysis platform 220. Cloud resources can include computing instances executed in the computing resources 225, storage devices set in the computing resources 225, data transmission devices provided by the computing resources 225, etc. In some implementations, the computing resources 225 can communicate with other computing resources 225 via wired connections, wireless connections, or a combination of wired connections and wireless connections.
[0056] As in Figure 2As further shown in the figure, the computing resources 225 may include a set of cloud resources, such as, one or more applications ("APP") 225-1, one or more virtual machines ("VM") 225-2, a virtualized storage device ("VS") 225-3, one or more hypervisors ("HYP") 225-4, etc.
[0057] The application 225-1 includes one or more software applications that can be provided to or accessed by the client device 210. The application 225-1 can eliminate the need to install and execute software applications on the client device 210. For example, the application 225-1 can include software associated with the feature analysis platform 220 and / or any other software that can be provided via the cloud computing environment 230. In some implementations, one application 225-1 can send / receive information to / from one or more other applications 225-1 via the virtual machine 225-2.
[0058] Virtual machine 225-2 includes a software implementation of a machine (e.g., a computer) that executes programs like a physical machine. Virtual machine 225-2 can be a system virtual machine or a process virtual machine, depending on the use of virtual machine 225-2 for any real machine and the degree of correspondence of virtual machine 225-2 to any real machine. System virtual machines can provide a complete system platform that supports the execution of a complete operating system ("OS"). Process virtual machines can execute a single program and can support a single process. In some implementations, virtual machine 225-2 can execute on behalf of a user (e.g., client device 210) and can manage the infrastructure of cloud computing environment 230, such as data management, synchronization, or long-duration data transfer.
[0059] The virtualized storage device 225-3 includes one or more storage systems and / or one or more devices using virtualization technology within the storage system or device of the computing resource 225. In some implementations, in the context of the storage system, the type of virtualization may include block virtualization and file virtualization. Block virtualization may refer to the abstraction (or separation) of a logical storage device from a physical storage device, so that the storage system may be accessed without considering the physical storage device or heterogeneous structure. This separation may allow the administrator of the storage system to have flexibility in the way the administrator manages the storage for the end user. File virtualization may eliminate the dependency between the data accessed at the file level and the location where the file is physically stored. This may enable optimized storage usage, server consolidation, and / or the execution of non-destructive file migration.
[0060] Hypervisor 225-4 provides hardware virtualization technology that allows multiple operating systems (e.g., "guest operating systems") to execute simultaneously on a host computer (such as computing resource 225). Hypervisor 225-4 can present a virtual operating platform to the guest operating system and can manage the execution of the guest operating system. Multiple instances of various operating systems can share virtualized hardware resources.
[0061] The network 240 includes one or more wired networks and / or wireless networks. For example, the network 240 may include: a cellular network (e.g., a long term evolution (LTE) network, a code division multiple access (CDMA) network, a 3G network, a 4G network, a 5G network, another type of next generation network, etc.), a public land mobile network (PLMN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), a telephone network (e.g., a public switched telephone network (PSTN)), a private network, an ad hoc network, an intranet, the Internet, a fiber-optic-based network, a cloud computing network, etc. and / or a combination of these or other types of networks.
[0062] exist Figure 2 The number and arrangement of devices and networks shown in are provided as one or more examples. Figure 2 There may be additional devices and / or networks, fewer devices and / or networks, different devices and / or networks, or differently arranged devices and / or networks than those shown in FIG. Figure 2 Two or more devices shown in FIG. 1 may be implemented in a single device, or in Figure 2 The single device shown in the environment 200 may be implemented as multiple distributed devices. Additionally, or alternatively, a collection of devices (eg, one or more devices) in the environment 200 may perform one or more functions described as being performed by another collection of devices in the environment 200.
[0063] Figure 3 300. Device 300 may correspond to client device 210, feature analysis platform 220, and / or computing resource 225. In some implementations, client device 210, feature analysis platform 220, and / or computing resource 225 may include one or more devices 300 and / or one or more components of device 300. Figure 3 As shown in FIG. 3 , device 300 may include a bus 310 , a processor 320 , a memory 330 , a storage component 340 , an input component 350 , an output component 360 , and / or a communication interface 370 .
[0064] The bus 310 includes components that allow communication between multiple components of the device 300. The processor 320 is implemented in hardware, firmware, or a combination of hardware and software. The processor 320 takes the form of a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), a microprocessor, a microcontroller, a digital signal processor (DSP), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), or another type of processing component. In some implementations, the processor 320 includes one or more processors that can be programmed to perform functions. The memory 330 includes a random access memory (RAM), a read-only memory (ROM), and / or another type of dynamic or static storage device (e.g., flash memory, magnetic memory, and / or optical memory) that stores information and / or instructions for use by the processor 320.
[0065] Storage component 340 stores information and / or software related to the operation and use of device 300. For example, storage component 340 may include: a hard disk (e.g., a magnetic disk, an optical disk, and / or a magneto-optical disk), a solid-state drive (SSD), a compact disk (CD), a digital versatile disk (DVD), a floppy disk, a cassette, a magnetic tape, and / or another type of non-transitory computer-readable medium and a corresponding drive.
[0066] Input components 350 include components that allow device 300 to receive information, such as via user input (e.g., a touch screen display, a keyboard, a keypad, a mouse, buttons, switches, and / or a microphone). Additionally, or alternatively, input components 350 may include components for determining location (e.g., a global positioning system (GPS) component) and / or sensors (e.g., an accelerometer, a gyroscope, an actuator, another type of position sensor or an environmental sensor, etc.). Output components 360 include components that provide output information from device 300 (e.g., via a display, a speaker, a tactile feedback component, an audio or visual indicator, etc.).
[0067] The communication interface 370 includes transceiver-like components (e.g., a transceiver, a separate receiver, a separate transmitter, etc.) that enable the device 300 to communicate with other devices (e.g., via a wired connection, a wireless connection, or a combination of a wired connection and a wireless connection). The communication interface 370 can allow the device 300 to receive information from another device and / or provide information to another device. For example, the communication interface 370 may include an Ethernet interface, an optical interface, a coaxial interface, an infrared interface, a radio frequency (RF) interface, a universal serial bus (USB) interface, a Wi-Fi interface, a cellular network interface, etc.
[0068] Device 300 can perform one or more processes described herein. Device 300 can perform these processes based on processor 320 executing software instructions stored by non-transient computer-readable media (such as, memory 330 and / or storage component 340). As used herein, the term "computer-readable medium" refers to a non-transient memory device. The memory device includes a memory space within a single physical storage device or a memory space extended between multiple physical storage devices.
[0069] The software instructions may be read into the memory 330 and / or storage component 340 from another computer-readable medium or from another device via the communication interface 370. The software instructions stored in the memory 330 and / or storage component 340, when executed, may cause the processor 320 to perform one or more processes described herein. Additionally, or alternatively, hardware circuitry may be used instead of or in conjunction with software instructions for performing one or more processes described herein. Therefore, the implementations described herein are not limited to any specific combination of hardware circuitry and software.
[0070] exist Figure 3 The number and arrangement of components shown in are provided as examples. Figure 3 Device 300 may include additional components, fewer components, different components, or differently arranged components compared to those components shown in . Additionally, or alternatively, a set of components (e.g., one or more components) of device 300 may perform one or more functions described as being performed by another set of components of device 300.
[0071] Figure 4 is a flow chart of an example process 400 for feature submission deduplication and blockchain-based feature management. In some implementations, Figure 4 One or more process blocks in can be performed by a feature analysis platform (e.g., feature analysis platform 220). In some implementations, Figure 4 One or more process blocks in may be performed by another device or group of devices that is separate from or includes the feature analysis platform, such as a client device (eg, client device 210 ), etc.
[0072] As in Figure 4 As shown in FIG. 4 , process 400 may include receiving a feature submission that identifies a candidate feature for a software application (block 410). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may receive a feature submission that identifies a candidate feature for a software application.
[0073] As in Figure 4 As further shown in FIG. 4 , process 400 may include preprocessing the feature submission to reformat data associated with the candidate feature to match the data format associated with the stored information about the past feature submission (block 420). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may preprocess the feature submission to reformat data associated with the candidate feature to match the data format associated with the stored information about the past feature submission.
[0074] As in Figure 4 As further shown in FIG. 4 , process 400 may include: performing natural language processing on data associated with the candidate features to determine the semantic meaning of the candidate features (block 430). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may perform natural language processing on data associated with the candidate features to determine the semantic meaning of the candidate features.
[0075] As in Figure 4 As further shown in , process 400 may include comparing the semantic meaning of the candidate feature with the index of past feature submissions to determine whether the candidate feature matches any of the past feature submissions (block 440). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may compare the semantic meaning of the candidate feature with the index of past feature submissions to determine whether the candidate feature matches any of the past feature submissions.
[0076] As in Figure 4 As further shown in , process 400 may include providing a response indicating whether the candidate feature matches any of the past feature submissions, wherein the response includes an indication that the candidate feature does not match any of the past feature submissions or identifies information associated with one or more past feature submissions of a threshold semantic similarity to the candidate feature (box 450). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may provide a response indicating whether the candidate feature matches any of the past feature submissions. In some aspects, the response includes an indication that the candidate feature does not match any of the past feature submissions or identifies information associated with one or more past feature submissions of a threshold semantic similarity to the candidate feature.
[0077] Process 400 may include additional implementations, such as any single implementation or any combination of implementations described below and / or in conjunction with one or more other processes described elsewhere herein.
[0078] In some implementations, performing natural language processing includes: determining the number of occurrences of each semantically different word in the description of the candidate feature; converting each semantically different word in the description of the candidate feature into a corresponding integer word identifier based on the number of occurrences; and generating a sparse vector of the corresponding integer word identifiers. In some implementations, comparing semantic meanings includes: using the sparse vector to compare semantic meanings. In some implementations, performing natural language processing includes: performing a latent semantic indexing process on information related to the description of the candidate feature; and performing a dimensionality reduction process to reduce the dimension of the result of the latent semantic indexing process to within a configured dimensional range. In some implementations, comparing semantic meanings includes: using the result of the dimensionality reduction process to compare semantic meanings. In some implementations, process 400 includes: identifying a data feed associated with a specific industry to which the software application belongs; subscribing to the data feed; adding a feature set to a past feature submission through the data feed; and comparing semantic meanings after the feature set is added. In some implementations, process 400 includes: generating an index of past feature submissions, and comparing semantic meanings after the index is generated.
[0079] In some implementations, generating an index includes: training a binary machine learning classifier to summarize descriptions of past feature submissions based on one or more features of the descriptions, and using the binary machine learning classifier to perform a text summarization process to identify a set of key phrases. In some implementations, the one or more features include at least one of the following: the length of the key phrase, the frequency of the key phrase, the number of repeated words in the key phrase, or the number of characters in the key phrase. In some implementations, generating an index further includes: connecting descriptions of past feature submissions to generate a corpus; dividing the corpus into a set of segments; generating a vector representation of the set of segments; determining similarities between the vector representations; generating a similarity matrix based on the similarities; and converting the similarity matrix into a graph.
[0080] Although Figure 4 Example blocks of process 400 are shown, but in some implementations, Figure 4 Process 400 may include additional blocks, fewer blocks, different blocks, or differently arranged blocks compared to those blocks depicted in . Additionally, or alternatively, two or more blocks of process 400 may be performed in parallel.
[0081] Figure 5is a flow chart of an example process 500 for feature submission deduplication and blockchain-based feature management. In some implementations, Figure 5 One or more process blocks in can be performed by a feature analysis platform (e.g., feature analysis platform 220). In some implementations, Figure 5 One or more process blocks in may be performed by another device or group of devices that is separate from or includes the feature analysis platform, such as a client device (eg, client device 210 ), etc.
[0082] As in Figure 5 As shown in FIG. 5 , process 500 may include training a binary machine learning classifier to summarize descriptions of past feature submissions based on one or more characteristics of the description (block 510). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may train a binary machine learning classifier to summarize descriptions of past feature submissions based on one or more characteristics of the description.
[0083] As in Figure 5 As further shown in FIG. 5 , process 500 may include: using a binary machine learning classifier to perform a text summarization process to identify a set of key phrases (block 520). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may use a binary machine learning classifier to perform a text summarization process to identify a set of key phrases.
[0084] As in Figure 5 As further shown in FIG. 5 , process 500 may include receiving a feature submission that identifies a candidate feature for an application (block 530). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may receive a feature submission that identifies a candidate feature for an application.
[0085] As in Figure 5As further shown in FIG. 5 , process 500 may include preprocessing the feature submission to reformat data associated with the candidate feature to match the data format associated with the stored information about the past feature submission (block 540). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may preprocess the feature submission to reformat data associated with the candidate feature to match the data format associated with the stored information about the past feature submission.
[0086] As in Figure 5 As further shown in FIG. 5 , process 500 may include: performing natural language processing on data associated with the candidate features to determine the semantic meaning of the candidate features (block 550). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may perform natural language processing on data associated with the candidate features to determine the semantic meaning of the candidate features.
[0087] As in Figure 5 As further shown in , process 500 may include comparing the semantic meaning of the candidate feature with the index of past feature submissions and associating with the set of key phrases to determine whether the candidate feature matches any of the past feature submissions (block 560). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may compare the semantic meaning of the candidate feature with the index of past feature submissions and associating with the set of key phrases to determine whether the candidate feature matches any of the past feature submissions.
[0088] As in Figure 5As further shown in , process 500 may include providing a response indicating whether the candidate feature matches any of the past feature submissions, wherein the response includes an indication that the candidate feature does not match any of the past feature submissions or identifies information associated with one or more past feature submissions of a threshold semantic similarity to the candidate feature (box 570). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may provide a response indicating whether the candidate feature matches any of the past feature submissions. In some aspects, the response includes an indication that the candidate feature does not match any of the past feature submissions or identifies information associated with one or more past feature submissions of a threshold semantic similarity to the candidate feature.
[0089] Process 500 may include additional implementations, such as any single implementation or any combination of implementations described below and / or in conjunction with one or more other processes described elsewhere herein.
[0090] In some implementations, process 500 may include: based on determining that the candidate feature matches a past feature submission, merging the feature submission of the candidate feature with a description of the past feature submission; and providing information identifying the merged feature submission based on merging the feature submission with the description of the past feature submission. In some implementations, process 500 may include: determining a trending feature topic based on the index; and providing an output identifying the trending feature topic. In some implementations, process 500 may include: based on determining that the candidate feature does not match any past feature submission, storing the candidate feature in a blockchain hyperledger network.
[0091] In some implementations, process 500 may include: receiving a sponsorship indication for an entry in a blockchain hyperledger network corresponding to a candidate feature; registering the candidate feature for development based on receiving the sponsorship indication; tracking development of the candidate feature based on registering the candidate feature for development; and assigning one or more tags to a sponsor associated with the sponsorship indication based on the results of tracking the development. In some implementations, the sponsorship indication includes a payment for a set of tags and initiating a contract for one or more tags. In some implementations, process 500 may include: determining that a sponsorship threshold is met based on receiving the sponsorship indication; and registering the candidate feature for development based on determining that the sponsorship threshold is met.
[0092] In some implementations, the Hyperledger blockchain network is accessible to users associated with a plurality of different roles; and the plurality of different roles include at least one of: an innovator role, a co-innovator role, an implementer role, a mentor role, or a reviewer role. In some implementations, process 500 may include: determining a role for the user among the plurality of different roles; and providing access to one or more features in the Hyperledger blockchain network based on the role for the user.
[0093] Although Figure 5 Example blocks of process 500 are shown, but in some implementations, Figure 5 Process 500 may include additional blocks, fewer blocks, different blocks, or differently arranged blocks compared to those blocks depicted in . Additionally, or alternatively, two or more blocks of process 500 may be performed in parallel.
[0094] Figure 6 is a flow chart of an example process 600 for feature submission deduplication and blockchain-based feature management. In some implementations, Figure 6 One or more process blocks in can be performed by a feature analysis platform (e.g., feature analysis platform 220). In some implementations, Figure 6 One or more process blocks in may be performed by another device or group of devices that is separate from or includes the feature analysis platform, such as a client device (eg, client device 210 ), etc.
[0095] As in Figure 6 As shown in FIG. 6 , process 600 may include receiving a feature submission that identifies a candidate feature for an application (block 610). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may receive a feature submission that identifies a candidate feature for an application.
[0096] As in Figure 6 As further shown in FIG. 6 , process 600 may include: performing natural language processing on data associated with the candidate features to determine the semantic meaning of the candidate features (block 620). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may perform natural language processing on data associated with the candidate features to determine the semantic meaning of the candidate features.
[0097] As in Figure 6As further shown in , process 600 may include comparing the semantic meaning of the candidate feature with the index of past feature submissions to determine whether the candidate feature matches any of the past feature submissions (block 630). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may compare the semantic meaning of the candidate feature with the index of past feature submissions to determine whether the candidate feature matches any of the past feature submissions.
[0098] As in Figure 6 As further shown in , process 600 may include providing a response indicating whether the candidate feature matches any of the past feature submissions, wherein the response includes an indication that the candidate feature does not match any of the past feature submissions or identifies information associated with one or more past feature submissions of a threshold semantic similarity to the candidate feature (box 640). For example, as described above, the feature analysis platform (e.g., using processor 320, memory 330, storage component 340, input component 350, output component 360, communication interface 370, etc.) may provide a response indicating whether the candidate feature matches any of the past feature submissions. In some aspects, the response includes an indication that the candidate feature does not match any of the past feature submissions or identifies information associated with one or more past feature submissions of a threshold semantic similarity to the candidate feature.
[0099] Process 600 may include additional implementations, such as any single implementation or any combination of implementations described below and / or in conjunction with one or more other processes described elsewhere herein.
[0100] In some implementations, process 600 includes: performing natural language processing; determining a number of occurrences of each semantically distinct word in a description of a candidate feature; converting each semantically distinct word in a description of a candidate feature into a corresponding integer word identifier based on the number of occurrences; generating a sparse vector of the corresponding integer word identifiers; and using the sparse vector to compare semantic meanings. In some implementations, process 600 includes: performing a latent semantic indexing process on information related to the description of the candidate feature; performing a dimensionality reduction process to reduce the dimensionality of the result of the latent semantic indexing process to within a configured dimensionality range; and using the result of the dimensionality reduction process to compare semantic meanings.
[0101] Although Figure 6 Example blocks of process 600 are shown, but in some implementations, Figure 6Process 600 may include additional blocks, fewer blocks, different blocks, or differently arranged blocks compared to those blocks depicted in . Additionally, or alternatively, two or more blocks of process 600 may be performed in parallel.
[0102] The foregoing disclosure provides illustration and description, but is not intended to be exhaustive or to limit the implementations to the precise forms disclosed. Modifications and variations may be made in light of the above disclosure or may be acquired from practice of the implementations.
[0103] As used herein, the term "component" is intended to be broadly interpreted as hardware, firmware, and / or a combination of hardware and software.
[0104] Some implementations are described herein in conjunction with thresholds. As used herein, depending on the context, satisfying a threshold may refer to a value being greater than a threshold, more than a threshold, above a threshold, greater than or equal to a threshold, less than a threshold, less than a threshold, below a threshold, less than or equal to a threshold, equal to a threshold, etc.
[0105] Certain user interfaces have been described herein and / or shown in the accompanying drawings. A user interface may include a graphical user interface, a non-graphical user interface, a text-based user interface, etc. A user interface may provide information to be displayed. In some implementations, a user may interact with the information, such as by providing input via an input component of a device that provides a user interface for display. In some implementations, the user interface may be configured by the device and / or the user (e.g., the user may change the size of the user interface, the information provided via the user interface, the location of the information provided via the user interface, etc.). Additionally, or alternatively, the user interface may be preconfigured as a standard configuration, a specific configuration based on the type of device that displays the user interface, and / or a set of configurations based on capabilities and / or specifications associated with the device that displays the user interface.
[0106] It will be apparent that the systems and / or methods described herein may be implemented in various forms of hardware, firmware, or a combination of hardware and software. The actual dedicated control hardware or software code used to implement these systems and / or methods is not a limitation of the implementation. Thus, the operation and behavior of the systems and / or methods are described herein without reference to specific software code—it should be understood that software and hardware may be designed to implement the systems and / or methods based on the description herein.
[0107] Although particular combinations of features are recited in the claims and / or disclosed in this specification, these combinations are not intended to limit the disclosure of the various implementations. In fact, many of these features may be combined in ways not specifically recited in the claims and / or disclosed in this specification. Although each dependent claim listed below may only directly depend on one claim, the disclosure of the various implementations includes each dependent claim and every other claim in the claim set.
[0108] Elements, actions or instructions used herein should not be interpreted as being critical or necessary unless clearly described as such. Likewise, as used herein, the articles "one" and "an" are intended to include one or more items, and can be used interchangeably with "one or more". In addition, as used herein, the term "set" is intended to include one or more items (e.g., related items, unrelated items, combinations of related items and unrelated items, etc.), and can be used interchangeably with "one or more". In the case of only one item, phrases "only one" or similar language are used. Likewise, as used herein, the terms "has", "have", "having" etc. are intended to be open terms. Further, phrase "based on" is intended to represent "based at least in part on", unless otherwise expressly stated.
Claims
1. A method comprising: receiving, from a device, a feature submission identifying a candidate feature for a software application; preprocessing, by the device, the feature submission to reformat data associated with the candidate feature to match a data format associated with stored information regarding past feature submissions; performing, by the device, natural language processing on the data associated with the candidate feature to determine a semantic meaning of the candidate feature; generating, by the device, an index of the past feature submissions, Generating the index includes: Concatenating descriptions of the past feature submissions to generate a corpus; dividing the corpus into a set of segments; generating a vector representation of the set of segments; determining similarities between the vector representations; generating a similarity matrix based on the similarities; converting the similarity matrix into a graph, and wherein the sets of segments represent vertices of the graph and the similarities represent edges of the graph; Comparing, by the device after generating the index, the semantic meaning of the candidate feature with the index to determine whether the candidate feature matches any of the past feature submissions; and providing, by the device, a response indicating whether the candidate feature matches the past feature submission, The response includes an indication that the candidate feature does not match any past feature submissions, or information identifying one or more past feature submissions associated with a threshold semantic similarity to the candidate feature.
2. The method of claim 1, wherein performing the natural language processing comprises: determining a number of occurrences of each semantically distinct word in the description of the candidate feature; converting each semantically distinct word in the description of the candidate feature to a corresponding integer word identifier based on the number of occurrences; Generating a sparse vector of the corresponding integer word identifier; and Wherein comparing the semantic meaning comprises: The semantic meanings are compared using the sparse vectors.
3. The method of claim 1 , wherein performing the natural language processing comprises: performing a latent semantic indexing process on information associated with the description of the candidate feature; performing a dimensionality reduction process to reduce the dimensionality of the result of the latent semantic indexing process to within a configured dimensionality range; and Wherein comparing the semantic meaning comprises: The results of the dimensionality reduction process are used to compare the semantic meanings.
4. The method according to claim 1, further comprising: identifying data feeds associated with a particular industry to which the software application belongs; subscribing to said data feed; adding a feature set from the data feed to the past feature submission; and Wherein comparing the semantic meaning comprises: After adding the feature sets, the semantic meanings are compared.
5. The method according to claim 1, wherein generating the index further comprises: training a binary machine learning classifier to summarize the descriptions of the past feature submissions based on one or more features of the descriptions; as well as A text summarization process is performed using the binary machine learning classifier to identify a set of key phrases.
6. The method of claim 5, wherein the one or more features include at least one of the following: The length of the key phrase, The frequency of key phrases, the number of repeated words in the key phrase, or The number of characters in the key phrase.
7. The method according to claim 1, further comprising: determining a trending feature topic based on the index; as well as An output is provided identifying the trending feature topic.
8. The method of claim 1 , wherein receiving the feature submission identifying the candidate feature for the software application comprises: The feature submission identifying the candidate features for the software application is received via a user interface.
9. A device comprising: one or more memories; as well as One or more processors are communicatively coupled to the one or more memories, the one or more processors being configured to: training a binary machine learning classifier to summarize descriptions based on one or more characteristics of descriptions submitted to past features; performing a text summarization process using the binary machine learning classifier to identify a set of key phrases; receiving a feature submission identifying a candidate feature for an application; preprocessing the feature submission to reformat data associated with the candidate feature to match a data format associated with stored information regarding the past feature submission; performing natural language processing on the data associated with the candidate features to determine semantic meanings of the candidate features; comparing the semantic meaning of the candidate feature with an index of the past feature submissions and associating with the set of key phrases to determine whether the candidate feature matches any of the past feature submissions; as well as providing a response indicating whether the candidate feature matches the past feature submission, wherein the response includes an indication that the candidate feature does not match any past feature submissions, or information identifying one or more past feature submissions associated with a threshold semantic similarity to the candidate feature; Based on determining that the candidate feature does not match any past feature submissions, storing the candidate feature in a blockchain hyperledger network; receiving a sponsorship indication for an entry corresponding to the candidate feature in the blockchain hyperledger network; registering the candidate features for development based on receiving the sponsorship indication; tracking development of the candidate features based on registering the candidate features for development; as well as One or more indicia are assigned to a sponsor associated with the sponsorship indication based on the results of tracking the development.
10. The apparatus of claim 9, wherein the one or more processors are further configured to: Based on determining that the candidate feature matches a past feature submission, merging the feature submission of the candidate feature with a description of the past feature submission; and Information identifying the merged feature submission is provided based on merging the feature submission with the description of the past feature submission.
11. The apparatus of claim 9, wherein the one or more processors are further configured to: determining a trending feature topic based on the index; and An output is provided identifying the trending feature topic.
12. The apparatus of claim 9, wherein the sponsorship indication comprises payment for a set of indicia and initiates a contract for the one or more indicia.
13. The apparatus of claim 9, wherein the one or more processors are further configured to: determining that a sponsorship threshold is satisfied based on receiving the sponsorship indication; and wherein when registering the candidate features for development, the one or more processors are configured to: The candidate feature is registered for development based on determining that the sponsorship threshold is met.
14. The apparatus of claim 9, wherein the blockchain hyperledger network is accessible by users associated with a plurality of different roles, and The multiple different roles include at least one of the following: The role of innovator, Co-innovator role, The implementer role, mentor role, or Commentator role.
15. The apparatus of claim 14, wherein the one or more processors are further configured to: determining a role for the user among the plurality of different roles; and Providing access to one or more features of the blockchain hyperledger network based on the role for the user.
16. The apparatus of claim 9, wherein the one or more characteristics include at least one of: The length of the key phrase, The frequency of key phrases, the number of repeated words in the key phrase, or The number of characters in the key phrase.
17. The device of claim 9, wherein the one or more processors, upon receiving the feature submission identifying the candidate feature for the application, are configured to: The feature submission identifying the candidate features for the application is received via a user interface.
18. A non-transitory computer-readable medium storing instructions, the instructions comprising: One or more instructions that, when executed by one or more processors, cause the one or more processors to: receiving a feature submission identifying a candidate feature for an application; performing natural language processing on data associated with the candidate features to determine semantic meanings of the candidate features; Generate an index of past feature submissions, wherein the one or more instructions that cause the one or more processors to generate the index cause the one or more processors to: Concatenating descriptions of the past feature submissions to generate a corpus; dividing the corpus into a set of segments; generating a vector representation of the set of segments; determining similarities between the vector representations; generating a similarity matrix based on the similarities; as well as Convert the similarity matrix into a graph, wherein the sets of segments represent vertices of the graph and the similarities represent edges of the graph; comparing the semantic meaning of the candidate feature with the index to determine whether the candidate feature matches any of the past feature submissions; as well as A response is provided indicating whether the candidate feature matches the past feature submission, the candidate feature does not match any past feature submission, or information identifying one or more past feature submissions associated with a threshold semantic similarity to the candidate feature.
19. The non-transitory computer readable medium of claim 18, wherein the one or more instructions causing the one or more processors to perform the natural language processing cause the one or more processors to: determining a number of occurrences of each semantically distinct word in the description of the candidate feature; converting each semantically distinct word in the description of the candidate feature to a corresponding integer word identifier based on the number of occurrences; generating a sparse vector of the corresponding integer word identifiers; and wherein the one or more instructions causing the one or more processors to compare the semantic meanings cause the one or more processors to: The semantic meanings are compared using the sparse vectors.
20. The non-transitory computer-readable medium of claim 18, wherein the one or more instructions causing the one or more processors to perform the natural language processing cause the one or more processors to: performing a latent semantic indexing process on information associated with the description of the candidate feature; performing a dimensionality reduction process to reduce the dimensionality of the result of the latent semantic indexing process to within a configured dimensional range; and wherein the one or more instructions causing the one or more processors to compare the semantic meanings cause the one or more processors to: The results of the dimensionality reduction process are used to compare the semantic meanings.
Citation Information
Patent Citations
Learning Element Weighting for Similarity Measures
US20110219012A1
System and method for fuzzy ontology matching and search across ontologies
US20150286713A1