Patent Publication Number: US-2022230253-A1

Title: Automated news ranking and recommendation system

Description:
This application is a continuation of U.S. patent application Ser. No. 16/779,434, filed Jan. 31, 2020, which claims the benefit of U.S. Provisional Patent Application No. 62/913,885, filed Oct. 11, 2019, entitled “Automated News Discovery System”, the entirety of which are incorporated herein by reference. 
    
    
     BACKGROUND INFORMATION 
     1. Field 
     The present disclosure relates generally to an improved computer system and, in particular, to a news recommendation system for financial analysis. 
     2. Background 
     Analysts in the financial services industry ingest news from dozens of sources every day. It is critical for them to stay up-to-date on the latest events as at any moment, key material events could occur that impact their analysis on a given company. For example, a company could announce an acquisition or a disruption to their supply chain that would materially impact its business operations. By staying informed on these events in a timely manner, analysts can promptly respond to these changing circumstances and potentially minimize any impact of the company&#39;s action on their investment holdings or analysis. 
     Currently, for each company they analyze, the analysts manually set up news alert subscriptions from a fixed set of sources based on keywords of the company&#39;s name. Thus, the news alerts analysts receive contain much noise. Also, a company with a name like “Fruit” could result in news alerts about fruit orchards or fruit juice. Or alternatively, if there are critical articles discussing changes in regulations of the smartphone industry but there are no explicit mentions of company names, this may not be picked up through the keyword-generated manual news alert. The lack of comprehensive coverage means the attention to certain critical news events can be delayed or missed altogether. Additionally, when a breaking news event occurs, dozens of media outlets report on the same occurrence which result in multiple alerts on the same event. Manual review of relevant and important news events is time-consuming and error-prone. 
     Currently, analysts receive news alerts through manually created news alert subscriptions that are often noisy and difficult to manage. The manual review process is time-consuming and error-prone. Therefore, many analysts rely on a news recommendation system for financial analysis, which can suggest important news articles that are relevant to financial analysts&#39; tasks. 
     Early news recommendation systems used external ontologies to find interesting news articles. However, related knowledge bases do not always exist and are highly expensive to build. In the recent years, many news recommendation systems used collaborative filtering (CF) based methods, which performed effectively in movie and product recommendations, and CF-based news recommendation systems. 
     CF-based news recommendation systems capture user preference by user behavior, such as click, like, and repost. However, CF-based methods are not feasible in task-oriented news recommendation systems, especially in the finance industry. Recommending news similar to the ones in analysts&#39; history may bias the system towards frequent events. However, financially interesting business events may be rare, such as bankruptcy and acquisition. In this case, once occurred, rare events have minimal chances to be surfaced. 
     Furthermore, in financial firms, one analyst is assigned to monitor a given company or several analysts may analyze different aspects of a company. In this case, diverse “user interests” generate highly sparse user-news interaction, which discounts the performance of the CF-based system. 
     Content-based recommendation is another commonly used technique. In the application of a news recommendation, most content-based methods build user profiles based on past reading history and calculate the similarity between an incoming news and each user profile. Similar to the CF-based methods, in task-oriented news recommendation systems, determining news relevancy based on the history of individual users may favor frequent business events than important but rare events. 
     Popularity-based recommendation system systems monitor news popularity from social media such as Twitter. However, a task-oriented news system should not be impacted by the popularity on social media, since there is little correlation between these trending news stories and task-relevant business events. 
     Therefore, it would be desirable to have a method and apparatus that take into account at least some of the issues discussed above, as well as other possible issues. For example, it is desirable to build a news recommendation system for financial analysis, which can suggest important news articles that are relevant to financial analysts&#39; tasks. To be applied in large financial companies, a desirable news recommendation system should be 1) effective so that analysts will not miss any important information, 2) efficient so that news can be timely updated, 3) scalable so that it can be used in large business environments, and 4) extendable so that changing business requirements can easily be met. 
     SUMMARY 
     The illustrative embodiments described herein provide a framework for an automated news recommendation system for financial analysis. The system includes the automated ingestion, relevancy, clustering, and ranking of news events for financial analysts in the capital markets. The framework is adaptable to any form of input news data and can seamlessly integrate with other data used for analysis like financial data. 
     The illustrative embodiments described herein provide a methodology that uses a combination of entity-based news tracking, clustering, relevancy, and ranking models to detect news events, filter out noise, cluster the same event into each of the respective clusters, assign relevance of news event to main entity, and rank each news event cluster based on the importance of the event to the overall company. The ranked list of events are presented to the user in this curated manner which allows analysts to focus on key news relevant to their analysis and thus spend less time filtering through noise and reviewing redundant events. New business requirements can be easily added by defining new subscriptions with any customized entities. Processes within subscriptions can be fully paralleled. 
     The illustrative embodiments described herein provide (1) a full-stack systematic methodology of information retrieval and relevancy to automatically distinguish financially material news events, and (2) a generic, scalable, and extendable news recommendation framework that can be easily adopted by most financial companies. The news recommendation system of the illustrative embodiments is able to detect emerging risks to company&#39;s operations faster and more efficiently than current analyst methods. 
     The illustrative embodiments described herein provide a news recommendation system that offers several advantages over prior art systems that allow financial analysts to work more effectively and efficiently. The news recommendation system described herein presents a full stack financial news recommendation system from data storage to user interface that can be easily deployed at any financial company. With a subscription-based pipeline, the system can be conveniently parallelized and extended for new business monitoring requirements. By using a series of clustering and relevancy models, the system is able to recommend news events that have a direct relevancy to the final outcome of analysis, e.g., credit rating, at a financial firm. 
     The features and functions can be achieved independently in various embodiments of the present disclosure or may be combined in yet other embodiments in which further details can be seen with reference to the following description and drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The novel features believed characteristic of the illustrative embodiments are set forth in the appended claims. The illustrative embodiments, however, as well as a preferred mode of use, further objectives and features thereof, will best be understood by reference to the following detailed description of an illustrative embodiment of the present disclosure when read in conjunction with the accompanying drawings, wherein: 
         FIG. 1  is a pictorial representation of a network of data processing systems in which illustrative embodiments may be implemented; 
         FIG. 2  is a block diagram of a news recommendation environment in accordance with an illustrative embodiment; 
         FIG. 3  is an architecture of a news recommendation system in accordance with an illustrative embodiment; 
         FIG. 4  is an illustration of a structure of a neural network model for computing a lower dimensional representation of data news article in accordance with an illustrative embodiment; 
         FIG. 5  is a graphical user interface of a news recommendation system in accordance with an illustrative embodiment; 
         FIG. 6  is a flowchart illustrating a process for identifying and recommending relevant news articles in accordance with an illustrative embodiment; 
         FIG. 7  is a flowchart illustrating a process for ranking news articles in a subscription-based news system in accordance with an illustrative embodiment; 
         FIG. 8  is a flowchart illustrating a process for ranking news articles within each cluster based on trustworthiness and linking volume for each news source of the news articles in accordance with an illustrative embodiment; 
         FIG. 9  is a flowchart illustrating a process for determining an entity relevance score for each news article in accordance with an illustrative embodiment; 
         FIG. 10  is a flowchart illustrating a process for determining an entity relevance score for each news article in accordance with an illustrative embodiment; 
         FIG. 11  is a flowchart illustrating a process for ranking clusters within a set of ranked clusters based on cluster size in accordance with an illustrative embodiment; 
       and 
         FIG. 12  is an illustration of a block diagram of a data processing system in accordance with an illustrative embodiment. 
     
    
    
     DETAILED DESCRIPTION 
     The illustrative embodiments recognize and take into account one or more different considerations. For example, the illustrative embodiments recognize and take into account that it is desirable to build a news recommendation system for financial analysis, which can suggest important news articles that are relevant to financial analysts&#39; tasks. 
     The illustrative embodiments recognize and take into account that identifying the relevance of the news event to the analytical assessment of a company is a complex process that is often noisy and difficult to manage. For example, certain topics like a management turnover could be breaking news but may not be impactful to the company&#39;s rating and thus not highly relevant for analysts. Additionally, for example, if company A engages in an activity in partnership with company B, if the activity were to primarily impact company A and only tangentially impact company B, the news event would not be as relevant for analysts covering company B. 
     The illustrative embodiments recognize and take into account that material news events should impact the future performance of the company in a sustained and meaningful way. For example, the credit rating of a company is a one to two year forward-looking assessment of the company&#39;s performance. This nuanced definition of a credit rating impacts the approach required to assess the relevance of the news events to the end user. 
     The illustrative embodiments further recognize and take into account that a news recommendation system should be 1) effective so that analysts will not miss any important information, 2) efficient so that news can be timely updated, 3) scalable so that it can be used in large business environments, and 4) extendable so that changing business requirements can easily be met. 
     The illustrative embodiments described herein provide a framework for an automated news recommendation system for financial analysis. The system includes the automated ingestion, relevancy, clustering, and ranking of news events for financial analysts in the capital markets. The framework is adaptable to any form of input news data and can seamlessly integrate with other data used for analysis like financial data. 
     The illustrative embodiments provide a methodology that uses a combination of entity-based news tracking, clustering, relevancy, and ranking models to detect news events, filter out noise, cluster the same event into each of the respective clusters, assign relevance of news events to a main entity, and rank each news event cluster based on the importance of the event to the overall company. The ranked list of events are presented to the user in this curated manner which allows analysts to focus on key news relevant to their analysis and thus spend less time filtering through noise and reviewing redundant events. New business requirements can be easily added by defining new subscriptions with any customized entities. Processes within subscriptions can be fully paralleled. 
     The illustrative embodiments provide (1) a full-stack systematic methodology of information retrieval and relevancy to automatically distinguish financially material news events, and (2) a generic, scalable, and extendable news recommendation framework that can be easily adopted by most financial companies. The news recommendation system of the illustrative embodiments is able to detect emerging risks to a company&#39;s operations faster and more efficiently than current analyst methods. 
     With reference now to the figures and, in particular, with reference to  FIG. 1 , a pictorial representation of a network of data processing systems is depicted in which illustrative embodiments may be implemented. Network data processing system  100  is a network of computers in which the illustrative embodiments may be implemented. Network data processing system  100  contains network  102 , which is the medium used to provide communications links between various devices and computers connected together within network data processing system  100 . Network  102  may include connections, such as wire, wireless communication links, or fiber optic cables. 
     In the depicted example, server computer  104  and server computer  106  connect to network  102  along with storage unit  108 . In addition, client devices  110  connect to network  102 . As depicted, client devices  110  include client computer  112 , client computer  114 , and client computer  116 . Client devices  110  can be, for example, computers, workstations, or network computers. In the depicted example, server computer  104  provides information, such as boot files, operating system images, and applications to client devices  110 . Further, client devices  110  can also include other types of client devices such as a mobile phone, a tablet computer, and smart glasses. In this illustrative example, server computer  104 , server computer  106 , storage unit  108 , and client devices  110  are network devices that connect to network  102  in which network  102  is the communications media for these network devices. Some or all of client devices  110  may form an Internet-of-things (IoT) in which these physical devices can connect to network  102  and exchange information with each other over network  102 . 
     Client devices  110  are clients to server computer  104  in this example. Network data processing system  100  may include additional server computers, client computers, and other devices not shown. Client devices  110  connect to network  102  utilizing at least one of wired, optical fiber, or wireless connections. 
     Program code located in network data processing system  100  can be stored on a computer-recordable storage medium and downloaded to a data processing system or other device for use. For example, program code can be stored on a computer-recordable storage medium on server computer  104  and downloaded to client devices  110  over network  102  for use on client devices  110 . 
     In the depicted example, network data processing system  100  is the Internet with network  102  representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers consisting of thousands of commercial, governmental, educational, and other computer systems that route data and messages. Of course, network data processing system  100  also may be implemented using a number of different types of networks. For example, network  102  can be comprised of at least one of the Internet, an intranet, a local area network (LAN), a metropolitan area network (MAN), or a wide area network (WAN).  FIG. 1  is intended as an example, and not as an architectural limitation for the different illustrative embodiments. 
     As used herein, “a number of,” when used with reference to items, means one or more items. For example, “a number of different types of networks” is one or more different types of networks. 
     Further, the phrase “at least one of,” when used with a list of items, means different combinations of one or more of the listed items can be used, and only one of each item in the list may be needed. In other words, “at least one of” means any combination of items and number of items may be used from the list, but not all of the items in the list are required. The item can be a particular object, a thing, or a category. 
     For example, without limitation, “at least one of item A, item B, or item C” may include item A, item A and item B, or item B. This example also may include item A, item B, and item C or item B and item C. Of course, any combinations of these items can be present. In some illustrative examples, “at least one of” can be, for example, without limitation, two of item A; one of item B; and ten of item C; four of item B and seven of item C; or other suitable combinations. 
     With reference now to  FIG. 2 , news processing environment  200  includes components that can be implemented in hardware such as the hardware shown in network data processing system  100  in  FIG. 1 . 
     In this illustrative example, news recommendation system  202  operates to process and recommend news articles  204  from a plurality of new sources  205  based on subscriptions  206  of user  208  to different entities  210 . Entities  210  are categorical descriptors with which news articles  204  may be associated. For example, entities  210  can be a company name, a geolocation, and a topic, as well as other relevant categorical descriptors with which news articles  204  may be associated. 
     In this illustrative example, news recommendation system  202  is located in computer system  212 . Computer system  212  is a physical hardware system and includes one or more data processing systems. When more than one data processing system is present in computer system  212 , those data processing systems are in communication with each other using a communications medium. The communications medium may be a network. The data processing systems may be selected from at least one of a computer, a server computer, a tablet, or some other suitable data processing system. 
     News recommendation system  202  can be implemented in software, hardware, firmware, or a combination thereof. When software is used, the operations performed by news recommendation system  202  can be implemented in program code configured to run on hardware, such as a processor unit. When firmware is used, the operations can be implemented in program code and data and stored in persistent memory to run on a processor unit. When hardware is employed, the hardware may include circuits that operate to perform the operations in news recommendation system  202 . 
     In the illustrative examples, the hardware may take a form selected from at least one of a circuit system, an integrated circuit, an application-specific integrated circuit (ASIC), a programmable logic device, or some other suitable type of hardware configured to perform a number of operations. With a programmable logic device, the device can be configured to perform the number of operations. The device can be reconfigured at a later time or can be permanently configured to perform the number of operations. Programmable logic devices include, for example, a programmable logic array, a programmable array logic, a field programmable logic array, a field programmable gate array, and other suitable hardware devices. Additionally, the processes can be implemented in organic components integrated with inorganic components and can be comprised entirely of organic components excluding a human being. For example, the processes can be implemented as circuits in organic semiconductors. 
     News recommendation system  202  includes a subscription-based pipeline  214  that recommends relevant ones of news articles  204  based on subscriptions  206  designated by user  208 . Pipeline  214  can include a number of different components. As depicted, pipeline  214  includes ingestion  216 , subscription  206 , relevancy  219 , and clustering and ranking  221 . 
     During ingestion  216  of data, news recommendation system  202  integrates heterogeneous data streams  218  from a number of different news sources. Ingestion  216  provides an extract, transform, load (ETL) engine  220  that provides centralized data collection, processing and enrichment of data from one or more of data streams  218 . Data collected from the above sources is stored into database  223 . In this illustrative example, database  223  can be a NoSQL database that uses a cluster of nodes  222  for storage. 
     In one illustrative example, Ingestion  216  parses and indexes data streams  218 , as the dataset can be large, dynamic, and requires fast retrieval. In one illustrative example, ingestion  216  is implemented as an integrated service, such as Elastic Stack, which automatically detects and adds new fields when required. 
     News recommendation system  202  distributes news articles  204  into different ones of subscriptions  206 . In one illustrative example, news articles  204  are distributed into different ones of subscriptions  206 , providing a query context for the different entities  210 . 
     Each one of entities  210  corresponds to a separate one of subscriptions  206  to which a user may subscribe. All of news articles  204  talking about a particular entity, e.g. Fruit Co., Inc., are assigned into the corresponding one of subscriptions  206 . News articles  204  may be relevant to one or more of entities  210 . Thus, news articles  204  may be distributed to multiple ones of subscriptions  206 . New business requirements can be met by creating new types of subscriptions and/or adding more subscriptions. 
     In this illustrative example, artificial intelligence system  224  can be used to recommend more news articles  204  as compared to known news recommendation systems. 
     An artificial intelligence system is a system that has intelligent behavior and can be based on the function of a human brain. An artificial intelligence system comprises at least one of an artificial neural network, an artificial neural network with natural language processing, a cognitive system, a Bayesian network, a fuzzy logic, an expert system, a natural language system, a cognitive system, or some other suitable system. 
     Machine learning is used to train the artificial intelligence system. Machine learning involves inputting data to the process and allowing the process to adjust and improve the function of the artificial intelligence system. In this illustrative example, training of artificial intelligence system  224  can be performed using a set of machine learning algorithms. The set of machine learning algorithms can be machine learning algorithms that are selected from at least one of supervised learning, unsupervised learning, reinforcement learning, or other suitable types of machine learning algorithms. 
     In this illustrative example, supervised learning comprises providing the artificial intelligence machine model with training data and the correct output value of the data. During supervised learning, the values for the output are provided along with the training data (labeled dataset) for the model building process. The algorithm, through trial and error, deciphers the patterns that exist between the input training data and the known output values to create an artificial intelligence model that can reproduce the same underlying rules with new data. 
     Examples of supervised learning algorithms include regression analysis, decision trees, k-nearest neighbors, neural networks, and support vector machines. Another example of a supervised learning algorithm that can be used to train artificial intelligence models is Named Entity Recognition (NER), Deep Neural Network Classification. 
     If unsupervised learning is used, not all of the variables and data patterns are labeled, forcing the artificial intelligence machine model to discover hidden patterns and create labels on its own through the use of unsupervised learning algorithms. Unsupervised learning has the advantage of discovering patterns in the data with no need for labeled datasets. Examples of algorithms used in unsupervised machine learning include k-means clustering, association analysis, and descending clustering. 
     Whereas supervised learning and unsupervised learning learn from a dataset, reinforcement learning learns from interactions with an environment. Algorithms such as Q-learning are used to train the predictive model through interacting with the environment using measurable performance criteria. 
     News recommendation system  202  uses artificial intelligence system  224  to determine relevancy  219 . Relevancy  219  can include a de-duplication to remove duplicate news articles  204  in each subscription. Identifying duplicate news helps to remove noise, improve the cluster importance estimation, and speed up the whole pipeline. For example, some news sources copy and re-post news from an original source with little changes. Furthermore, a news source may produce updated versions of news with minor changes. De-duplication can reduce these duplicate news articles by detecting and only keeping the latest one. 
     It is common that, although an entity (e.g., a company or a city) is mentioned in a news article, it is not the focus of the article. Relevancy  219  can apply a news entity model to identify the relevance of an article to an associated entity and remove irrelevant news. 
     News published by larger news sources (i.e., publishers) tend to be more credible and accurate. Larger news sources are more influential to the financial market and investors. Relevancy  219  can filter news by news sources in order to further refine the news candidate sets. 
     Often times, news events that can potentially impact credit rating activities are implicit and mostly determined by analysts&#39; knowledge and interpretation of the events. Hence, relevancy  219  can apply a set of models to identify or score a news topic relevance for news articles  204  that could impact their analysis. 
     news recommendation system  202  uses artificial intelligence system  224  to determine clustering and ranking  221 . As big news events may be reported by many news sources, the size of a news cluster can indicate the event noteworthiness, signaling the event importance. Furthermore, grouping news on the same events improves user browsing experience as analysts do not have to manually skip over similar news in the application. 
     In one illustrative example, clustering and ranking  221  rank both clusters and news in each cluster. Important clusters rank higher (i.e., cluster-level ranking), with each cluster showing the most representative news for each cluster (i.e., news-level ranking). 
     News recommendation system  202  stores output  226  of clustering and ranking  221  in database  223 . In this illustrative example, database  223  can be a relational database, enabling news recommendation system  202  to maintain the atomicity of operations on the database  202  and to comply with integrity requirements both in data type and compatibility for the services layer. The relational database stores the relationship between clusters, news stories, and user subscriptions to create data objects  228  for graphical user interface  230 . 
     In one illustrative example, each cluster of news articles is represented as a different data object  232  displayed in graphical user interface  230 . Graphical user interface  230  displays data objects  228  according to the output of clustering and ranking  221 , ensuring that important news events do not get buried in the interface. Important ranking clusters are displayed higher in graphical user interface  230  relative to lower ranking clusters (i.e., cluster-level ranking). 
     By default, each one of data objects  228  displays the representative news for the corresponding cluster. The representative news of a cluster is the top-ranked news in the cluster. Each one of data objects  228  is therefore displayed within graphical user interface  230  showing the most representative news for each cluster (i.e., news-level ranking) can be presented with graphical user interface  230  with titles, entity names, descriptions, and publication dates. 
     In one illustrative example, each one of data objects  228  is a control element within graphical user interface  230 . As used herein, a control is a graphical and/or functional element that can be reused across graphical user interface (GUI) applications and which the user can select and activate to get additional information. A control, in a graphical user interface, is an object on the screen that can be manipulated by the user to perform some action. In this illustrative example, user  208  can interact with data objects  228  to unfold additional news articles in that cluster for displayed in graphical user interface  230 . 
     User  208  interacts with news recommendation system  202  through user input to graphical user interface  228  using one or more user input devices, such as a keyboard, a mouse, a graphical user interface (a physical display), a touch screen, a voice interaction, and any other suitable interface for interacting with the computer. 
     In one illustrative example, a client device, such as one of client devices  110  of  FIG. 1 , displays graphical user interface  230  on display system  232 . In this illustrative example, display system  232  can be a group of display devices. A display device in display system  232  may be selected from one of a liquid crystal display (LCD), a light emitting diode (LED) display, an organic light emitting diode (OLED) display, and other suitable types of display devices. 
     In one illustrative example, subscriptions  206  of user  208  are stored as portfolio  234  in conjunction with user profile  236 . By default, user  208  receives news of subscriptions  206  in portfolio  234 . When user  208  logs on, graphical user interface  230  will bring up and rank all news articles corresponding to subscriptions  206  in portfolio  234 . News recommendation system  202  allows user  208  to create and follow additional subscriptions, enabling user  208  to have a variety of entities  210  indicated in portfolio  234 , and thereby to follow different topics and companies based on subscriptions  206 . 
     In one illustrative example, one or more technical solutions are present that overcome a technical problem with currently available news recommendation systems. As a result, one or more technical solutions may provide a technical effect of enabling an artificial intelligence system to recommend relevant news articles with greater accuracy as compared to current news recommendation systems. 
     Computer system  212  can be configured to perform at least one of the steps, operations, or actions described in the different illustrative examples using software, hardware, firmware, or a combination thereof. As a result, computer system  212  operates as a special purpose computer system in which pipeline  214  in computer system  212  enables artificial intelligence system  224  to process news articles  204 . In particular, pipeline  214  transforms computer system  212  into a special purpose computer system as compared to currently available general computer systems that do not have pipeline  214 . 
     In the illustrative example, the use of news pipeline  214  in computer system  212  integrates processes into a practical application for a method of recommending news articles  204  that increases the performance of computer system  212 . In other words, news pipeline  214  in computer system  210  is directed towards a practical application of processes integrated into pipeline  214  in computer system  212  that identifies relevant news articles based on users subscriptions to different entities. 
     In this illustrative example, pipeline  214  in computer system  212  utilizes one or more machine learning algorithms in a manner that results in an artificial intelligence system that is capable of processing news articles, and generating recommendations with a desired level of accuracy. In this manner, pipeline  214  in computer system  212  provides a practical application of a method to process news articles and generate recommendations such that the functioning of computer system  210  is improved. 
       FIG. 3  is an illustration of an architecture of a news recommendation system in which illustrative embodiments can be implemented. Architecture  300  is an exemplary architecture of news recommendation system  200 , shown in  FIG. 2 . 
     The pipeline of architecture  300  can be provided as an offline process that is scheduled to run at designated intervals, such as daily, hourly, etc., from ingestion to news result generation. Due in part to parallel processing described herein, the system scales horizontally, taking about 15 minutes to process 1,500 subscriptions, and less than 45 minutes for nearly 5,000 subscriptions, wherein running on an Amazon AWS web server, news can be more timely updated as the pipeline is kicked off more frequently. 
     Architecture  300  includes ingestion layer  302 , subscription layer  304 , relevance layer  306 , and clustering and ranking layer  308 . 
     Ingestion layer  302  integrates heterogeneous data streams from multiple different news providers. Without loss of generality, the presented framework can integrate data from any data provider. 
     In one illustrative example, the different news providers can include news provider  310 . In this illustrative example, news provider  310  is a third party company that provides a news management and delivery solution for publishing and financial services. Data from news provider  310  may be published in XML format, wherein each XML contains information on a news article, such as title, content, and source. In this illustrative example, news provider  310  may be Acquire Media Co., delivering about 60,000 daily news articles published by more than 10,000 global sources. 
     In one illustrative example, the different news providers can include news provider  312 . In this illustrative example, news provider  312  is a publicly available news aggregator that uses its own algorithms to collect news related to different keywords. Each entity of interest is set up as keywords in news provider  312  as a feed. Ingestion layer  302  may include a crawler that is scheduled to download news from all feeds. In this illustrative example, news provider  310  may be Google News, developed by Alphabet Inc. 
     In one illustrative example, the different news providers can include news provider  314 . In this illustrative example, news provider  314  is a third-party news provider that delivers curated news with an emphasis on analysis rather than reported news. The news distributed through news provider  314  focuses on offering insights to end users. In this illustrative example, news provider  314  may be S&amp;P Market Intelligence (MI) News. 
     Data collected from the above sources is stored into NoSQL database  315  as a cluster of nodes for storage. The parsed data is directly inserted to Elasticsearch which automatically detects and adds new fields when required. Architecture  300  uses different compound queries to prepare the data, distributing the news articles into subscriptions. 
     Processes in each subscription are independent of each other. After news articles are distributed into subscriptions, all subsequent processes are conducted within each subscription. 
     In one illustrative example, the pipeline adopts multi-processing to process subscriptions simultaneously. Subscriptions are assigned and processed on different CPUs. Since subscriptions may have different numbers of news articles, load-balancing can be employed to guarantee that the CPUs get a balanced workload. The same parallelization design can be applied on Hadoop clusters due to the independence among subscriptions. 
     In one illustrative example, load-balancing is performed using a greedy algorithm. Algorithm 1 provides pseudocode for an illustrative subscription allocation algorithm that in a minimum heap that contains subscriptions allocated to each CPU: 
     
       
         
           
               
             
               
                   
               
               
                 Algorithm 1 
               
               
                 Subscription Allocation Algorithm 
               
               
                   
               
             
            
               
                   
               
            
           
           
               
               
            
               
                   
                 minimum Heap H ← Ø; 
               
               
                   
                 j ← 0; 
               
               
                   
                 while j &lt; #CPUs do 
               
               
                   
                  S′ j  ← Ø // store allocated subscriptions; 
               
               
                   
                  push (H, S′ j , [0, j]) // 0 is #news m in jth CPU; 
               
               
                   
                  j ← j + 1; 
               
               
                   
                 end 
               
               
                   
                 i ← 0; 
               
               
                   
                 while i &lt; n do 
               
               
                   
                  m, S′ j , j ← pop (H) // jth CPU with the least 
               
               
                   
                 #news; 
               
               
                   
                  push (H; [m + |s i |, S′ j ∪{s i }, j] 
               
               
                   
                  i ← i + 1; 
               
               
                   
                 end 
               
               
                   
                   
               
            
           
         
       
     
     Wherein: 
     
         
         
           
             Subscriptions S={s 1 , s 2 , . . . , s n }; and |s i | denoted as the number of news in s i . 
           
         
       
    
     Relevance layer  306  includes de-duplication  316 . Because re-posted news may be modified slightly (e.g., adding the re-posting news source name), simply comparing if news articles are the same causes low recall. To enable near duplicate detection, de-duplication  316  implements a Support Vector Machine (SVM) fed by the Local Sensitive Hashing (LSH) scores. Given a pair of news, de-duplication  316  calculates the LSH signatures of their titles, descriptions, and contents. The Levenshtein distances and token sort ratios of the title pair, the description pair, and the content pair are computed based on the LSH signatures. These six distances are fed into a SVM model with binary labels that identify whether the pair is duplicate. The SVM is trained over a manually-labeled training data by learning the parameters for these six features. A cut-off threshold is learned based on a validation dataset. The final model is evaluated on a test data. 
     Relevance layer  306  includes news entity relevance  318 . News entity relevance  318  uses a machine learning model to identify main entities. Features are derived from the title, description, and content of each article. Phrase matching is applied for name detection on the title. Natural language processing, such as spaCy 6 , is used for name detection on the description and content. The model leverages natural language processing to depict entity, noun, and subject recognition in text with standard sentence structure. 
     Since the title, description, and content of a news article have different purposes, news entity relevance  318  generates independent features respectively for each section. For example, for a title, independent features may identify whether a title starts with the entity name, whether an entity name shows up in a sequence of entity names, and the normalized value of the first location of an entity name. 
     For description and content, news entity relevance  318  is a normalized mention frequency of an entity name in the text. However, exact matching of the name of a subscription often leads to low recall and introduces noise in the feature, because an entity alias name is often mentioned in a news article instead of the full official name. To overcome this challenge, news entity relevance  318  leverages n-grams, counting the number of tokens that match with each n-gram of an entity name, and then weighting the counts exponentially. 
     As the false negative is more critical for the particular use-case, news entity relevance  318  puts more weight on the recall score. For example, analysts would not be affected too much by receiving some irrelevant news (i.e., a false positive) to their portfolio. However, missing some of the major events (i.e., a false negative), such as merger and acquisition happening in a company that the analysts are analyzing, can be critical, having a massive and potentially adverse impact on their analysis. 
     Table 1 is an evaluation result of two different machine learning models that news entity relevance  318  can use to identify main entities, namely logistic Regression and distributed gradient boosting, such as XGBoost. While Logistic Regression has the recall score 1, due to the Logistic Regression model predicting all the news articles as 1, and leading to the low precision score. The Logistic Regression underperforms when it cannot identify the entity name in the news article at all due to the use of an abbreviation or a pseudo-name. 
     
       
         
           
               
             
               
                 TABLE 1 
               
             
            
               
                   
               
               
                 Evaluation of News Entity Relevance 
               
            
           
           
               
               
               
            
               
                   
                 Logistic 
                   
               
               
                   
                 Regression 
                 XGBoost 
               
               
                   
                   
               
            
           
           
               
               
               
               
            
               
                   
                 Recall 
                 1.000 
                 0.848 
               
               
                   
                 Precision 
                 0.671 
                 0.884 
               
               
                   
                 F1 
                 0.803 
                 0.866 
               
               
                   
                   
               
            
           
         
       
     
     Relevance layer  306  includes news source relevance  320 . In one illustrative example, news source relevance  320  identifies the relevance of news sources by ranking websites in order of popularity. For example, an Alexa Rank can be used as a standard metric to measure and reveal how influential a website is relative to all other sites based on a combination of a site&#39;s estimated traffic and visitor engagement. 
     In one illustrative example, news source relevance  320  first builds a mapping from news sources to domains. News articles are grouped by news sources and domains are extracted from the URLs. The output of this step is a hash table where keys are news source names and values are the lists of possible candidate domains that are in descending order. 
     For each news source, news source relevance  320  sequentially looks up the list of domains in a database of website popularity by frequency until a match is made. News published by the bottom 25% ranked news sources and unranked news sources are filtered out. To ensure the system validity to the financial analysis process, news source relevance  320  can also utilize a white-list of news sources provided by analysts. 
     Relevance layer  306  includes news topic relevance  322 . In one illustrative example, news topic relevance  322  employs one or more machine learning models deep neural network with softmax output to predict topic relevance. Aside from certain explicit events, most events that can potentially impact rating activities are implicit and mostly determined by analysts&#39; knowledge and interpretation of the events. To provide training data to the machine learning models, analysts can choose to provide feedback for clusters, i.e., what degrees of relevancy a cluster has and why. News topic relevance  322  can employ a deep neural network with softmax output to predict user relevance feedback. 
     Clustering and ranking layer  308  includes deep clustering  324 . In one illustrative example, deep clustering  324  employs deep learning methods that considers all words in a document without explicitly figuring out keywords or named entities. 
     Traditional document clustering methods are mainly word/phrase-based or topic-based algorithms. However, the performance of keyword and named entity extraction is still unsatisfactory on open-domain documents. 
     In one illustrative example, and in contrast to traditional document clustering methods, deep clustering  324  adopts a two-phase clustering algorithm. Named entities are first extracted from each news article using a statistical model. Each article is represented by a one-hot vector built based on its named entities. The distances of pairwise news articles are computed based on cosine distance. Two news articles are grouped together if their distance is not more than a threshold. One representative news is selected for each cluster based on news publication date and news source significance. The initial set of clusters are then merged based on the representative news. A deep contextualized word representation model, such as ELMo, is used to compute lower dimensional representation for each representative news article. The model first learns contextualized word representation by pre-training a language model in an unsupervised way. Unlike widely-used word embeddings, the illustrative embodiments represent words as functions of the entire input sentence, modeling both (1) complex characteristics of word use, such as syntax and semantics, and (2) how these uses vary across linguistic contexts (i.e., polysemy). These word representations are computed on top of multi-layer bidirectional language models (biLMs) with character convolutions, as a linear function of the internal network states. The output of the deep learning model is a vector that represents the semantic of a representative news article. Pairwise clusters whose representative news articles are close to each other are merged into one cluster. 
     Table 2 is an evaluation result of two different machine learning models that deep clustering  324  can use to cluster different news representations. The two-phase clustering is compared with 1) a name entity-based (NER), in which spaCy natural language processing and one-hot encoding are used to extract and model named entities; and 2) a latent dirichlet allocation (LDA) based model, in which an LDA model is used to compute low dimensional news representation. The clustering is done on a labeled news collection of three days. 
     
       
         
           
               
             
               
                 TABLE 2 
               
             
            
               
                   
               
               
                 Evaluation of Clustering 
               
            
           
           
               
               
               
               
            
               
                   
                 NER 
                 LDA 
                 Two-Phase 
               
               
                   
                   
               
            
           
           
               
               
               
               
               
            
               
                   
                 Adjusted Rand Score 
                 0.0293 
                 0.2843 
                 0.3531 
               
               
                   
                 Adjusted MI Score 
                 0.1126 
                 0.2757 
                 0.3452 
               
               
                   
                   
               
            
           
         
       
     
     The performance is evaluated by an adjusted rand score and adjusted mutual information score, two commonly-used metrics for clustering evaluation. The results show that the deep contextualized word representation model significantly outperforms the other models. 
     Referring now to  FIG. 4 , an illustration of a structure of a neural network model for computing a lower dimensional representation of data news article is depicted in accordance with an illustrative example. Neural network model  400  is an example of a deep contextualized word representation model that can be used by Deep Clustering  324  of  FIG. 3 . 
     At the input layer  401 , each token  410  is converted to an appropriate representation  412  using character embeddings. The representations are then run through a convolutional layer  414  using some number of filters, followed by a max-pool layer  416 . 
     Representations  418  are passed through a 2-layer highway network before being provided as the input to the biLMs layer  420 . Character convolutions are used to learn morphological features and form a valid representation for out-of-vocabulary words. 
     The biLMs learn embeddings for each word from different directions. To combine these embeddings into one, a weighted average  422  is applied based on softmax normalization. To get a sentence representation, fixed mean-pooling  424  is applied over all contextualized word representations. 
     Referring again to  FIG. 3 , the news representations can be fed into a clustering algorithm, such as K-means and hierarchical clustering. In one illustrative example, deep clustering  324  clusters news representations according to a pseudo on-line clustering algorithm. Algorithm 2 provides pseudocode for clustering news received in a news cycle in chronological order by publication time. 
     
       
         
           
               
             
               
                   
               
               
                 Algorithm 2 
               
               
                 Pseudo-online Clustering 
               
               
                   
               
             
            
               
                   
               
            
           
           
               
               
            
               
                   
                 C ← C′ // store current clusters; 
               
               
                   
                 for each d i  in D do 
               
               
                   
                  if |C| &gt; 0 then 
               
               
                   
                   compute the pairwise cosine similarities S 
               
               
                   
                 for 
               
               
                   
                   d i  and the centroid of each c j  in C; 
               
               
                   
                   if min (S) &lt; λ then 
               
               
                   
                    add d i  to the nearest cluster in D; 
               
               
                   
                    continue; 
               
               
                   
                   end 
               
               
                   
                  end 
               
               
                   
                  create a singleton cluster for d i  and add to C; 
               
               
                   
                 end 
               
               
                   
                 Discard clusters that are not added any news within 
               
               
                   
                 t; 
               
               
                   
                   
               
            
           
         
       
     
     Wherein: 
     
         
         
           
             News received in the new cycle D={d 1 , d 2 , . . . , d n }; 
             Historical news clusters computed at the end of the previous cycle C′={c 1 ′, c 2 ′, . . . , c m ′}; 
             A maximum similarity threshold A; and 
             A time window t. 
           
         
       
    
     Generally, the news is sorted in chronological order, while also considering historical news clusters formed in the previous news cycle, i.e., t is set to one day. Each news event received in the current cycle is assigned to the nearest existing cluster. If the nearest cluster is not found or there is no existing cluster, a singleton cluster is initialized by the news. Incoming news is clustered iteratively in chronological order, mimicking the chronology in which they are received. Finally, the clusters that have not been updated within the news cycle are discarded. Algorithm 2 is further described below in relation to  FIG. 7 . 
     Clustering and ranking layer  308  includes both news ranking  326  and cluster ranking  328 . clustering and ranking layer  308  ranks both clusters and news in each cluster, decreasing a probability that important news events get buried in the user interface. 
     In one illustrative example, news ranking  326  ranks news within each cluster by two factors sequentially: 1) publication date; and 2) news ranking score. Ranking by publication date ensures that analysts can see newly-added news in those historical clusters. Ranking by News ranking score prioritizes the most relevant news within each cluster. In one illustrative example, the news ranking score is the weighted sum of the entity relevance score and news source relevance, and the weight of the relevance score was set empirically based on analysts&#39; feedback. 
     In one illustrative example, cluster ranking  328  ranks clusters by three factors sequentially: 1) update date; 2) clustering ranking score; and 3) cluster size. The updated date is a good indicator of the event recentness. Ranking by the update date ensures analysts do not miss new news events. A clustering ranking score is one indicator of event importance. In one illustrative example, the clustering ranking score is computed by taking the maximum news ranking score of all the news within the cluster and summing the weighted cluster size. Cluster size is another indicator of event importance. Important clusters tend to have large sizes because more news sources may cover the news events. 
     Referring now to  FIG. 5 , an illustration of a graphical user interface of a news recommendation system is depicted in accordance with an illustrative embodiment. Graphical user interface  500  is an example of graphical user interface  230 , shown in block form in  FIG. 2 . 
     Graphical user interface  500  includes data objects  510 ,  512 ,  514 , and  516 . By default, the representative news of all represented clusters are presented with titles  518 , entity names  520 , descriptions  522 , and publication dates  524 . 
     Each data object can include one or more control elements. On the right side, analysts can mark the whole cluster as read by clicking on check icon  526 . Analysts can also provide feedback on the cluster relevancy by clicking on dialog icon  528 . The relevance feedback provided through user interface  500  can be used to adjust a news topic relevance model, such as a model employed by topic relevance  322  of  FIG. 3 . 
     Data object  512  includes additional “View  3  More” control element  530 . By clicking control element  530 , analysts can unfold data object  512 , and view the additional news articles in that cluster. 
       FIG. 6  is a flowchart illustrating a process for identifying and recommending relevant news articles depicted in accordance with illustrative embodiments. Process  600  can be implemented in one or more components of news recommendation system  202 , shown in block form in  FIG. 2 . 
     Process  600  begins by ingesting a plurality of news articles (step  610 ). The news articles can be news articles  204  of  FIG. 2 , provided from a number of different data sources. 
     Process  600  parses the news articles to identify a number of entities (step  620 ), and, based on the identified entities, assigns each news article to a number of subscriptions (step  630 ). 
     Within each subscription, process  600  removes duplicate news articles (step  640 ), and determines article relevancy (step  650 ). The news article relevancy can include news entity relevance, news source relevance, and news topic relevance. 
     Process  600  then clusters the new articles into data objects for presentation on a graphical user interface (step  660 ), with process  600  terminating thereafter. The clustering can include, for example, individual news ranking within each cluster, and cluster ranking across the number of clusters. 
     Referring now to  FIG. 7 , a flowchart illustrating a process for ranking news articles in a subscription-based news system is depicted in accordance with an illustrative embodiment. Process  700  can be implemented in clustering and ranking layer  308  of  FIG. 3 . 
     Process  700  begins by ingesting news articles from a plurality of news sources (step  710 ). The different news sources can be one or more news providers, such as news providers  310 ,  312 ,  314  of  FIG. 3 . 
     Process  700  forms a set of ranked clusters (step  720 ). The clustering is performed using the artificial intelligence system, such as artificial intelligence system  224  of  FIG. 2 . 
     In one illustrative example, forming the set of ranked clusters includes ranking news articles within each cluster based on the trustworthiness and linking volume for each news source of the articles (step  730 ). Forming a set of ranked clusters can also include ranking clusters within the set of ranked clusters based on cluster size (step  740 ). 
     Process  700  digitally presents the ranked clusters in a graphical user of a subscription-based news system interface for each subscription indicated in a portfolio of a user (step  750 ), with process  700  terminating thereafter. 
     Referring now to  FIG. 8 , a flowchart illustrating a process for ranking news articles within each cluster based on trustworthiness and linking volume for each news source of the news articles is depicted in accordance with an illustrative embodiment. Process  800  can be implemented as part of step  730  of  FIG. 7 . 
     Process  800  determines a news ranking score for each news article, wherein the news ranking score is a weighted sum of the entity relevance score and the source relevance score (step  810 ). Process  800  then ranks the news articles within each cluster sequentially by publication date and news ranking score (step  820 ). Thereafter, process  800  can continue to step  740  of  FIG. 7 . 
     Referring now to  FIG. 9 , a flowchart illustrating a process for determining an entity relevance score for each news article is depicted in accordance an with illustrative embodiment. Process  900  can be implemented as part of the process of  FIG. 7 . 
     Continuing from step  710 , process  900  determines an entity relevance score for each news article, wherein the entity relevance score is based on a relevance of the news article to an entity mentioned in the news article (step  910 ). In one illustrative example, determining the entity relevance score includes identifying main entities in each news article using a machine learning model that independently derives features from the title, description, and content of each article (step  920 ). Thereafter, process  900  can continue to step  720  of  FIG. 7 . 
     In one illustrative example, identifying the main entities in the title includes phrase matching of the title to identify a main entity (step  930 ). In one illustrative example, identifying the main entities in the description and content includes natural language processing of the description and content to identify the main entity, including n-gram modeling that counts a number of tokens that match with each n-gram of an entity name, and then weights the counts exponentially (step  940 ). 
     Referring now to  FIG. 10 , a flowchart illustrating a process for determining an entity relevance score for each news article is depicted in accordance with an illustrative embodiment. Process  1000  can be implemented as part of the process of  FIG. 7 . 
     Continuing from step  710 , process  1000  determines a source relevance score for each news article, wherein the source relevance score is based on an empirically determined influence of a news source relative to influences of other news sources (step  1010 ). Thereafter, process  1000  can continue to step  720  of  FIG. 7 . 
     In one illustrative example, identifying the source relevance can include building a mapping from news sources to domains, including grouping news articles by news sources and extracting domains from the URLs of news articles (step  1020 ). For each news source, process  1000  sequentially looks up the domains in a database of website popularity by frequency until a match is made (step  1030 ). Process  1000  removes news articles published by news sources that rank below a popularity threshold in the database of Web popularity (step  1040 ). 
     Referring now to  FIG. 11 , a flowchart illustrating a process for ranking clusters within a set of ranked clusters based on cluster size is depicted in accordance with an illustrative embodiment. Process  1100  can be implemented as part of step  740  of  FIG. 7 . Process  1100  determines a clustering ranking score (step  1110 ). 
     In one illustrative example, determining the clustering ranking score can include identifying a maximum news ranking score for all the news within the cluster (step  1120 ). Process  1100  rounds the weighted cluster size (step  1130 ). Process  1100  then ranks the clusters sequentially by update date, clustering ranking score, and cluster size (step  1140 ). Process  1100  terminates thereafter. 
     The flowcharts and block diagrams in the different depicted embodiments illustrate the architecture, functionality, and operation of some possible implementations of apparatuses and methods in an illustrative embodiment. In this regard, each block in the flowcharts or block diagrams may represent at least one of a module, a segment, a function, or a portion of an operation or step. For example, one or more of the blocks may be implemented as program code. 
     In some alternative implementations of an illustrative embodiment, the function or functions noted in the blocks may occur out of the order noted in the figures. For example, in some cases, two blocks shown in succession may be performed substantially concurrently, or the blocks may sometimes be performed in the reverse order, depending upon the functionality involved. Also, other blocks may be added in addition to the illustrated blocks in a flowchart or block diagram. 
     Turning now to  FIG. 12 , an illustration of a block diagram of a data processing system is depicted in accordance with an illustrative embodiment. Data processing system  1200  may be used to implement one or more computers and client computer system  110  in  FIG. 1 . In this illustrative example, data processing system  1200  includes communications framework  1202 , which provides communications between processor unit  1204 , memory  1206 , persistent storage  1208 , communications unit  1210 , input/output unit  1212 , and display  1214 . In this example, communications framework  1202  may take the form of a bus system. 
     Processor unit  1204  serves to execute instructions for software that may be loaded into memory  1206 . Processor unit  1204  may be a number of processors, a multi-processor core, or some other type of processor, depending on the particular implementation. In an embodiment, processor unit  1204  comprises one or more conventional general-purpose central processing units (CPUs). In an alternate embodiment, processor unit  1204  comprises one or more graphical processing units (CPUs). 
     Memory  1206  and persistent storage  1208  are examples of storage devices  1216 . A storage device is any piece of hardware that is capable of storing information, such as, for example, without limitation, at least one of data, program code in functional form, or other suitable information either on a temporary basis, a permanent basis, or both on a temporary basis and a permanent basis. Storage devices  1216  may also be referred to as computer-readable storage devices in these illustrative examples. Memory  1216 , in these examples, may be, for example, a random access memory or any other suitable volatile or non-volatile storage device. Persistent storage  1208  may take various forms, depending on the particular implementation. 
     For example, persistent storage  1208  may contain one or more components or devices. For example, persistent storage  1208  may be a hard drive, a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above. The media used by persistent storage  1208  also may be removable. For example, a removable hard drive may be used for persistent storage  1208 . Communications unit  1210 , in these illustrative examples, provides for communications with other data processing systems or devices. In these illustrative examples, communications unit  1210  is a network interface card. 
     Input/output unit  1212  allows for input and output of data with other devices that may be connected to data processing system  1200 . For example, input/output unit  1212  may provide a connection for user input through at least one of a keyboard, a mouse, or some other suitable input device. Further, input/output unit  1212  may send output to a printer. Display  1214  provides a mechanism to display information to a user. 
     Instructions for at least one of the operating system, applications, or programs may be located in storage devices  1216 , which are in communication with processor unit  1204  through communications framework  1202 . The processes of the different embodiments may be performed by processor unit  1204  using computer-implemented instructions, which may be located in a memory, such as memory  1206 . 
     These instructions are referred to as program code, computer-usable program code, or computer-readable program code that may be read and executed by a processor in processor unit  1204 . The program code in the different embodiments may be embodied on different physical or computer-readable storage media, such as memory  1206  or persistent storage  1208 . 
     Program code  1218  is located in a functional form on computer-readable media  1220  that is selectively removable and may be loaded onto or transferred to data processing system  1200  for execution by processor unit  1204 . Program code  1218  and computer-readable media  1220  form computer program product  1222  in these illustrative examples. In one example, computer-readable media  1220  may be computer-readable storage media  1224  or computer-readable signal media  1226 . 
     In these illustrative examples, computer-readable storage media  1224  is a physical or tangible storage device used to store program code  1218  rather than a medium that propagates or transmits program code  1218 . Alternatively, program code  1218  may be transferred to data processing system  1200  using computer-readable signal media  1226 . 
     Computer-readable signal media  1226  may be, for example, a propagated data signal containing program code  1218 . For example, computer-readable signal media  1226  may be at least one of an electromagnetic signal, an optical signal, or any other suitable type of signal. These signals may be transmitted over at least one of communications links, such as wireless communications links, optical fiber cable, coaxial cable, a wire, or any other suitable type of communications link. 
     The different components illustrated for data processing system  1200  are not meant to provide architectural limitations to the manner in which different embodiments may be implemented. The different illustrative embodiments may be implemented in a data processing system including components in addition to or in place of those illustrated for data processing system  1200 . Other components shown in  FIG. 12  can be varied from the illustrative examples shown. The different embodiments may be implemented using any hardware device or system capable of running program code  1218 . 
     The news recommendation system described herein offers several advantages that allow financial analysts to work more effectively and efficiently. The news recommendation system described herein presents a full stack financial news recommendation system from data storage to a graphical user interface that can be easily deployed at any financial company. With a subscription-based pipeline, the system can be conveniently parallelized and extended for new business monitoring requirements. By using a series of clustering and relevancy models, the system is able to recommend news events that have a direct relevancy to the final outcome of analysis, e.g., credit rating, at a financial firm. 
     The description of the different illustrative embodiments has been presented for purposes of illustration and description and is not intended to be exhaustive or limited to the embodiments in the form disclosed. The different illustrative examples describe components that perform actions or operations. In an illustrative embodiment, a component may be configured to perform the action or operation described. For example, the component may have a configuration or design for a structure that provides the component an ability to perform the action or operation that is described in the illustrative examples as being performed by the component. Many modifications and variations will be apparent to those of ordinary skill in the art. 
     Further, different illustrative embodiments may provide different features as compared to other desirable embodiments. The embodiment or embodiments selected are chosen and described in order to best explain the principles of the embodiments, the practical application, and to enable others of ordinary skill in the art to understand the disclosure for various embodiments with various modifications as are suited to the particular use contemplated.