Patent Publication Number: US-2017352070-A1

Title: Mapping social media sentiments

Description:
BACKGROUND 
     The present disclosure relates generally to sentiment modeling and in particular to spatial analysis of social media sentiment data. 
     The advent of social media has led to an explosion of data from various platforms, including blogs, online forums, Facebook®, and Twitter®, as well as other social media channels. As such, social media has become not only a powerful tool for consumers to voice their opinions and concerns, but an equally powerful tool for businesses to gain a better understanding of consumers&#39; likes and dislikes. Moreover, social media data provide businesses with a wealth of free publicity and exposure. On the other hand, when social media turns negative (e.g., bad reviews), the repercussions of such negative exposure can be detrimental to businesses. In an effort to enhance the experience and thereby minimize negative social media, businesses have begun to analyze social media sentiments (i.e., public opinion as to how consumers feel (e.g., happy, mad, angry, sad, frustrated, excited, funny, etc.) to better understand consumer preferences, market trends and brand awareness. For example, if the social sentiment of an individual or group of individuals is negative, a business can address the problem before it grows. 
     SUMMARY 
     A computer-implemented method includes accessing social media data, wherein the social media data is associated with one or more profiles and corresponds to a venue. The computer-implemented method further includes determining sentiment information corresponding to each of the one or more profiles based on the social media data. The computer-implemented method further includes, for each of the one or more profiles: identifying a path through the venue, wherein the path represents at least one movement associated with the profile and associating the sentiment information with the path through the venue. The computer-implemented method further includes, responsive to associating the sentiment information with the path through the venue for each of the one or more profiles, identifying one or more trends. The computer-implemented method further includes presenting the one or more trends for review. A corresponding computer system and computer program product are also disclosed. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a functional block diagram of a distributed data processing environment suitable for operation of a sentiment mapping program in accordance with at least one embodiment of the invention. 
         FIG. 2  is a flow chart diagram depicting operational steps for a sentiment mapping program in accordance with at least one embodiment of the invention. 
         FIG. 3  is an exemplary diagram for a portion of a working example of the sentiment mapping program in accordance with at least one embodiment of the invention. 
         FIG. 4  is a block diagram depicting components of a computer suitable for executing a sentiment mapping program in accordance with at least one embodiment of the invention. 
     
    
    
     DETAILED DESCRIPTION 
     Currently, businesses spend a considerable amount of time, money and resources to analyze consumers&#39; sentiments shared through various social media platforms. However, a message, tweet or post by a consumer may only reveal whether a consumer&#39;s experience at a venue was either positive or negative, while failing to expose the specific cause or root of the consumer&#39;s positive or negative experience. For example, a consumer, while at a venue (e.g., Electronics Store), may post a message: “The customer service at @ Electronics Store was horrible.” In another example, a consumer, while at a venue (e.g., Big-Box Store), may post a message: “I love the new layout at #Big-box Store. Everything was so easy to find. I was in and out in no time.” Although a business may be able to gather that the first consumer had a negative experience at Electronics Store and the second consumer had a positive experience at Big-box Store, the underlying reason for the consumers&#39; positive or negative experience is not as clear. Was Electronics Store understaffed at the time the consumer was at the venue? What area of Electronics Store did the consumer have a bad experience with customer service? Similarly, which areas of Big-box Store did the second consumer shop in? What was the path of the second consumer at Big-box Store? Various embodiments of the present invention may address or improve upon some or all of the aforementioned problems or disadvantages, however it will be understood that addressing any particular problem or disadvantage is not a necessary requirement for the practice of all embodiments of the present invention. 
     The inventors have observed and/or recognized that venue operators can improve future consumer experience by analyzing a sentiment map, wherein the sentiment map combines consumer social media data (and more specifically, sentiment information derived from the social media data) with a consumer&#39;s path travelled while moving through a venue. The inventors have observed and/or recognized that by analyzing a sentiment map, additional customer support may be added to areas of a venue corresponding to negative sentiments displayed via social media. The inventors have observed and/or recognized that by analyzing a sentiment map, venue operators may reroute consumers to avoid areas corresponding to the posting of negative sentiments. The inventors have observed/and or recognized that by analyzing a sentiment map, venue operators may reroute consumers toward areas corresponding to where consumers posted positive sentiments. Similarly, the inventors have observed and/or recognized that by analyzing a sentiment map, venue operators may redesign a venue layout to reflect paths corresponding to areas where consumers posted positive sentiments. Various embodiments of the present invention may address or improve upon some or all of the aforementioned problems or disadvantages, however it will be understood that addressing any particular problem or disadvantage is not a necessary requirement for the practice of all embodiments of the present invention. 
     Referring now to various embodiments of the invention in more detail,  FIG. 1  is a functional block diagram of a distributed data processing environment, generally designated  100 , suitable for operation of a sentiment mapping program in accordance with at least one embodiment of the invention. The term “distributed” as used in this specification describes a computer system that includes multiple, physically distinct devices that operate together as a single computer system.  FIG. 1  provides only an illustration of one implementation and does not imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made by those skilled in the art without departing from the scope of the invention as recited by the claims. 
     Distributed data processing environment  100  includes user device  102 , user  103  and computer system  104 , interconnected over network  105 . Network  105  can be, for example, a telecommunications network, a local area network (LAN), a wide area network (WAN), such as the Internet, or a combination of the three, and can include wired, wireless, or fiber optic connections. Network  105  may include one or more wired and/or wireless networks that are capable of receiving and transmitting data, voice, and/or video signals, including multimedia signals that include voice, data, and video information. In general, network  105  may be any combination of connections and protocols that will support communications between user device  102 , embedded devices  109 , computer system  104 , and other computing devices (not shown) within distributed data processing environment  100 . 
     User device  102  may be a laptop computer, tablet computer, smartphone, smartwatch, or any programmable electronic device capable of communicating with various components and devices within distributed data processing environment  100 , via network  105 . In general, user device  102  represents any programmable electronic device or combination of programmable electronic devices capable of executing machine readable program instructions and communicating with other computing devices (not shown) within distributed data processing environment  100  via a network, such as network  105 . User device  102  includes user interface  106 . 
     User interface  106  provides an interface between user  103  of user device  102  and computer system  104 . In one embodiment, user interface  106  may be a graphical user interface (GUI) or a web user interface (WUI) and can display text, documents, web browser windows, user options, application interfaces, and instructions for operation, and include the information (such as graphic, text, and sound) that a program presents to a user and the control sequences the user employs to control the program. In another embodiment, user interface  106  may also be mobile application software that provides an interface between user  103  of user device  102  and computer system  104 . Mobile application software, or an “app,” is a computer program that runs on smartphones, tablet computers, smartwatches and any other mobile devices. User interface  106  enables user  103  to share, exchange, or “post” information, ideas, pictures/videos, emoticons, etc. to various social media platforms (e.g., blogs, online forums, and social networks, such as Facebook® and Twitter®) via network  105 . User interface  106  further enables user  103  to provide login credentials to access an “app” associated with a venue on user device  102 . 
     Computer system  104  can be a standalone computing device, a management server, a web server, a mobile computing device, or any other electronic device or computing system capable of receiving, sending, and processing data. In other embodiments, computer system  104  can represent a server computing system utilizing multiple computers as a server system, such as in a cloud computing environment. In an embodiment, computer system  104  represents a computing system utilizing clustered computers and components (e.g., database server computers, application server computers, etc.) that act as a single pool of seamless resources when accessed within distributed data processing environment  100 . Computer system  104  includes sentiment mapping program  101 , social media database  107  and consumer database  108  communicatively coupled to computer system  104 . Although social media database  107  and consumer database  108  are depicted in  FIG. 1  as being integrated with computer system  104 , in some embodiments, social media database  107  and consumer database  108  may be remotely located from computer system  104 . Computer system  104  may include internal and external hardware components, as depicted and described in further detail with respect to  FIG. 3 . 
     Social media database  107  and consumer database  108  may be configured to store various information to be accessed and identified by sentiment mapping program  101 . Social media database  107  may store social media data associated with a profile and corresponding to a venue. Social media data may include one or more artifacts, such as social media posts, social media messages, posted online reviews, social media comments, as well as metadata associated with the social media data (e.g., time, date, and location of social media data). Social media database  107  may further store sentiment information derived from the social media data. Sentiment mapping program  101  may access social media data transmitted from user device  102  via network  105 . 
     Consumer database  108  may store consumer information about user  103  having user device  102  with an “app” that is associated with a venue. Generally, consumer information may include user&#39;s  103  phone number, email address, social security number (“SSN”), financial account information, and physical address. More specifically, consumer information may include information about user&#39;s  103  profile  110 . Profile  110  may include the name and/or username linked to user  102  device and/or an app associated with a venue, as well as the date and time of the corresponding areas of a path that user  103  traversed. In an embodiment of the invention, sentiment mapping program  101  may identify a path through a venue by accessing location data transmitted from user device  102  itself via network  105 . In an embodiment of the invention, sentiment mapping program  101  may identify a path through a venue by accessing location data corresponding to user device  102  from embedded devices  109  via network  105 . 
       FIG. 2  is a flow chart diagram depicting operational steps for a sentiment mapping program in accordance with at least one embodiment of the invention. At step  200 , sentiment mapping program  101  may access social media data associated with one or more profiles  110  and corresponding to a venue. For example, user  103  may be a consumer at a venue. In an embodiment of the invention, sentiment mapping program  101  may access user&#39;s  103  social media data upon authorization of user  103 . User  103  may further have user device  102 , of which user device  102  may include an app associated with the venue. User  103  may authorize the mobile app to allow sentiment mapping program  101  access to social media data associated with profile  110  (e.g., username: “John123”) from various social media platforms (e.g., Facebook®, Twitter®, LinkedIn®, Instagram®, etc.). In an embodiment of the invention, social media data may include social media posts, social media messages, posted online reviews, social media reshares, social media likes, social media comments, as well as metadata associated with the social media data. In an embodiment of the invention, social media data may include one or more data artifacts, such as emoticons, images, and videos. In embodiments of the invention, sentiment mapping program  101  may access the social media data transmitted by user device  102  via network  105 . For example, user “John123” visits “Electronics Store”. While in the checkout line, “John123” posts a sad face emoticon and a message via his smartphone to his Facebook® account: “  The customer service at #Electronics Store was terrible! They were completely understaffed and I wasted half of my day in there”. In embodiments of the invention, social media data may be stored in social media database  107  and accessed by sentiment mapping program  101  at a later time. 
     Still referring to step  200 , sentiment mapping program  101  may determine if the social media data corresponds to the venue (e.g., if the venue is Big-box Store, then sentiment mapping program  101  determines whether a post or other content is applicable to Big-box Store). Here, sentiment mapping program  101  may determine if the social media data corresponds to the venue by searching for social media data that includes the name or a reference to the venue. In an embodiment of the invention, sentiment mapping program  101  may determine if the social media data corresponds to the venue by any generally known text extraction methods, such as natural language processing (“NLP”). For example, sentiment mapping program  101  may extract the words “Big-box” from user&#39;s  103  social media data. In an embodiment of the invention, sentiment mapping program  101  may determine if the social media data corresponds to the venue by any generally known approximate string matching methods (i.e., fuzzy string searching), such as edit distance. Here, the closeness of a match between a text string and a pattern is measured in terms of the number of primitive operations necessary to convert the string into an exact match. For example, sentiment mapping program  101  may match the word “Bg-box” to the word “Big-box.” In an embodiment of the invention, sentiment mapping program  101  may determine if the social media data corresponds to the venue by identifying any generally known metadata tags, such as a hash tag. A hash tag is a word or phrase generally used to indicate that content falls under a particular topic (e.g., “@Big-box” may be used to indicate user is at Big-box Store or “#Big-box” may be used to indicate user&#39;s content relates to Big-box Store). For example, sentiment mapping program  101  may identify the hash tag “@Big-box” from user&#39;s  103  social media message “So frustrated with @Big-box right now”. In an embodiment of the invention, sentiment mapping program  101  may determine if the social media data corresponds to the venue by any generally known location tags, such as a geotag. A geotag is a string of characters embedded in a message, photograph, website, etc. that refers to a particular geographic region or location. Geotags may be geographic coordinates, location names, or region names and may refer to the location of the social media data, the current location of user  103 , or another location relevant to the social media data. For example, sentiment mapping program  101  may identify the location “Big-box” from the coordinates of the geo tag embedded in user&#39;s  103  social media post “I&#39;m so excited to get my new television today! geo: −11.234, 55.678”. 
     At step  201 , sentiment mapping program  101  may determine sentiment information corresponding to each of the one or more profiles  110  based on the social media data. In an embodiment of the invention, sentiment mapping program  101  may engage in sentiment analysis (i.e., opinion mining). Sentiment analysis aims to determine the attitude of user  103  with respect to a particular topic. The attitude may be user&#39;s  103  judgment or evaluation, or user&#39;s  103  affective state (i.e., emotional state). Sentiment mapping program  101  may engage in sentiment analysis through the use of any generally known or later discovered and/or improved analytics engines, such as IBM® Watson®. In an embodiment of the invention, sentiment mapping program  101  may employ “NLP” and text analysis (i.e., deriving high-quality information from text through the devising of patterns and trends through means such as statistical pattern learning) to identify and extract subjective information from social media data. For example, sentiment mapping program  101  may classify emotional states, such as “angry,” “sad,” and “happy.” 
     In an embodiment of the invention, sentiment mapping program  101  may employ a visual sentiment ontology, corresponding image dataset and image analysis (i.e., deriving high-quality information from objects in an image or video sequence through the devising of patterns and trends through machine learning methods). A visual sentiment ontology may be understood as a collection of semantic concepts, wherein each concept is composed of adjective and a noun (e.g., “happy face” or “ugly car”). Each concept may be associated with a collection of images that represent the concept. Furthermore, each concept may be associated with a negative, neutral, or positive sentiment. Using supervised machine learning, such as pattern recognition, the collection of images that represent each concept may be used to train sentiment classifiers. Here, a sentiment classifier may assign each input value (e.g., image, video, or emoticon from social media data) to one of a given set of classes (e.g., negative, neutral, or positive sentiment). 
     At step  202 , for each of the one or more profiles  110 , sentiment mapping program  101  may identify a path through a venue, wherein the path represents at least one movement associated with each profile  110 . Here, a movement may be understood as the geographic coordinates and/or direction of user device  102  respective to an aisle, area, zone, department, etc. along the path through the venue. Based on the name or username associated with the social media data, sentiment mapping program  101  may match the name or username with profile  110 . If a match is detected, sentiment mapping program  101  may identify the path by matching the time and date of the social media data with the time and date user  102  was located in various areas of the venue. Sentiment mapping program  101  may identify a path by any generally known location detection methods. In an embodiment of the invention, sentiment mapping program  101  may determine the path through information transmitted from user&#39;s  103  user device  102  to sentiment mapping program  101  via network  105 . Here, user device  102  (e.g., mobile phone) may detect its own location (e.g., via a global positioning system (“GPS”) and transmit the location data to sentiment mapping program  101 . 
     In an embodiment of the invention, sentiment mapping program  101  may determine a path through information transmitted from a network of embedded devices  109  positioned throughout the venue. More specifically, network of embedded devices  109  may be “nodes” in a wireless sensor network (“WSN”). For example, the WSN may include spatially distributed autonomous sensors that detect the location of user device  102  in the venue. Network of embedded devices  109  may detect the location of user device  102  by any generally known micro-location enabling technologies. Examples of micro-location enabling technologies include, but are not limited to Bluetooth Low Energy (“BLE”) based beacons, Ultra-Wideband (“UWB”) based radio technology, Wireless Positioning Systems (“WPS”), Magnetic Field Mapping (“MFP”), Radio Frequency Identification (“RFID”) (including active RFID), and Near-Field Communication (“NFC”). Sentiment mapping program  101  may communicate with WSN via network  105 . Here, sentiment mapping program  101  may identify a path by receiving location data corresponding to user device  102  from the embedded devices  109  by any generally known messaging protocols, including, but not limited to message queuing telemetry transport (“MQTT”), advanced messaging queuing protocol (“AMQP”), internet engineering task force (“IETF”) constrained application protocol (“CoAP”), and extensible messaging and presence protocol (“XMPP”). 
     At step  203 , for each of the one or more profiles  110 , sentiment mapping program  101  may associate the sentiment information with the path through the venue. More specifically, sentiment mapping program  101  may map one or more instances of sentiment information to one or more corresponding areas of the venue along the path through the venue. In an embodiment of the invention, sentiment mapping program  101  may employ a visual sentiment ontology, corresponding image dataset and image analysis to confirm that an individual&#39;s facial expressions match the determined sentiment information corresponding to profile  110 . For example, sentiment mapping program  101  may receive one or more images of an individual captured by a security camera located within a venue. Based on the images of the individual, sentiment mapping program  101  may determine whether the individual&#39;s facial expressions match the determined sentiment information at the time the social media data was generated. 
     In an embodiment of the invention, sentiment mapping program  101  may generate a sentiment map  111  based on the sentiment information corresponding to profile  110  and the path through the venue which user  103  traversed. Sentiment map  111  may be depicted by any generally known graphical representations, including, but not limited to a chart, drawing, diagram, table, graph, and map. In an embodiment of the invention, sentiment map may be a heat map. A heat map is a graphical representation of data where the individual values included in a matrix are represented as colors. For example, sentiment mapping program  101  may map different types of sentiment information by color (e.g., happy sentiments are denoted by the color red, angry sentiments are denoted by the color blue, neutral sentiments are denoted by the color yellow, etc.). 
       FIG. 3  is an exemplary diagram for a portion of a working example of the sentiment mapping program in accordance with at least one embodiment of the invention. In  FIG. 3 , sentiment mapping program  101  has generated sentiment map  111  by mapping instances of sentiment information to corresponding areas of a floor plan of a venue. Furthermore, sentiment mapping program  101  may illustrate the path traversed by user  103  (e.g., line, arrows, etc.). For each instance that the sentiment information corresponds to an area of the venue, sentiment mapping program  101  may indicate the sentiment in the area by an indicator (e.g., words (“positive” or “negative”, “happy” or “frustrated”), images (smiley face or frown face), and emoticons, etc.). In an embodiment of the invention, selection of an indicator (e.g., smiley face image, arrows indicating path traversed, etc.) on sentiment map  111  may display additional information about profile  110  and social media data associated with profile  110  stored in social media database  107  and consumer database  108 . For example, selection of an indicator on sentiment map  111  may display at least one data object selected from the group consisting of textual information, images, emoticons, overall sentiment score (e.g., changing the color of the path based on a change in sentiment), profile information, social media data, the data of the social media, and the time of the social media data. 
     Referring now to  FIG. 2 , at step  204 , responsive to associating the sentiment information with the path through the venue for each of the one or more profiles, sentiment mapping program  101  may identify one or more trends. A trend may generally be understood as a general movement over time of a statistically detectable change (e.g., an increase in positive sentiment in an area of a venue). In an embodiment of the invention, a trend may be identified if the number of instances of a particular sentiment (e.g., negative sentiment) mapped to a corresponding area of a venue exceeds a given threshold (e.g., five instances of angry or frustrated sentiments) over a given period of time (e.g., twenty-four hours). For example, sentiment mapping program may identify a “negative” sentiment trend if seven instances of angry or frustrated sentiments are mapped in the television department of Electronics Store over a twelve hour time period. In an embodiment of the invention, sentiment mapping program  101  may employ “NLP” and text analysis to identify and extract subjective information from the social media data to determine a reason for the trend. More specifically, sentiment mapping program  101  may employ the bag-of-words model to determine the frequency of particular words included in the social media data. In the bag-of-words model, text from a sentence or document is represented as the bag of its words, disregarding grammar and word order. For example, sentiment mapping program  101  may determine that the social media data corresponding to five out of the seven negative sentiments mapped included at least one of the following words: “customer”, “service, and “employee.” 
     At step  205 , sentiment mapping program  101  may present the one or more trends for review. More specifically, sentiment mapping program  101  may generate one or more corrective suggestions corresponding to each of the one or more trends identified. Generating a corrective suggestion may include applying the trend to one or more rules. For example, a rule may be: “If social media data corresponding to a “negative trend” includes the words “customer”, “service,” or employee,” suggest that additional customer support be added to the area of the venue corresponding to the “negative” trend. Additional corrective suggestions may include rerouting consumers to avoid areas of a venue corresponding to “negative” trends and rerouting consumers toward areas of a venue corresponding to “positive” trends. It should be appreciated that sentiment mapping program  101  may generate any number of corrective suggestions corresponding to any number of trends identified. 
     Optionally, at step  206 , sentiment mapping program  101  may generate a response to the social media data based on sentiment map  111 . More specifically, the response is generated based on the mapping of the one or more instances of sentiment information to the one or more corresponding areas of the venue along the path through the venue. For example, sentiment mapping program  101  may send user  103  a response in the form of an incentive to remain a consumer of the business (e.g., a coupon for ten percent off their next television purchase) via any communication platform (e.g., mail, email, SMS, social media, etc.) if sentiment map  111  indicates negative sentiment information in the television department of the venue. In another example, sentiment mapping program  101  may send user  103  a response in the form of an apologetic message via any communication platform (e.g., mail, email, SMS, social media, push notification, etc.) if sentiment map  111  indicates negative sentiment information in the checkout line of the venue. 
       FIG. 4  is a block diagram depicting components of a computer  400  suitable for executing sentiment mapping program  101 , in accordance with at least one embodiment of the invention.  FIG. 4  displays the computer  400 , one or more processor(s)  404  (including one or more computer processors), a communications fabric  402 , a memory  406  including, a RAM  416 , and a cache  418 , a persistent storage  408 , a communications unit  412 , I/O interfaces  414 , a display  422 , and external devices  420 . It should be appreciated that  FIG. 4  provides only an illustration of one embodiment and does not imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made. 
     As depicted, the computer  400  operates over the communications fabric  402 , which provides communications between the computer processor(s)  404 , memory  406 , persistent storage  408 , communications unit  412 , and input/output (I/O) interface(s)  414 . The communications fabric  402  may be implemented with any architecture suitable for passing data or control information between the processors  404  (e.g., microprocessors, communications processors, and network processors), the memory  406 , the external devices  420 , and any other hardware components within a system. For example, the communications fabric  402  may be implemented with one or more buses. 
     The memory  406  and persistent storage  408  are computer readable storage media. In the depicted embodiment, the memory  406  comprises a random access memory (RAM)  416  and a cache  418 . In general, the memory  406  may comprise any suitable volatile or non-volatile one or more computer readable storage media. 
     Program instructions for sentiment mapping program  101  may be stored in the persistent storage  408 , or more generally, any computer readable storage media, for execution by one or more of the respective computer processors  404  via one or more memories of the memory  406 . The persistent storage  408  may be a magnetic hard disk drive, a solid state disk drive, a semiconductor storage device, read-only memory (ROM), electronically erasable programmable read-only memory (EEPROM), flash memory, or any other computer readable storage media that is capable of storing program instructions or digital information. 
     The media used by the persistent storage  408  may also be removable. For example, a removable hard drive may be used for persistent storage  408 . Other examples include optical and magnetic disks, thumb drives, and smart cards that are inserted into a drive for transfer onto another computer readable storage medium that is also part of the persistent storage  408 . 
     The communications unit  412 , in these examples, provides for communications with other data processing systems or devices. In these examples, the communications unit  412  may comprise one or more network interface cards. The communications unit  412  may provide communications through the use of either or both physical and wireless communications links. In the context of some embodiments of the present invention, the source of the various input data may be physically remote to the computer  400  such that the input data may be received and the output similarly transmitted via the communications unit  412 . 
     The I/O interface(s)  414  allow for input and output of data with other devices that may operate in conjunction with the computer  400 . For example, the I/O interface  414  may provide a connection to the external devices  420 , which may be as a keyboard, keypad, a touch screen, or other suitable input devices. External devices  420  may also include portable computer readable storage media, for example thumb drives, portable optical or magnetic disks, and memory cards. Software and data used to practice embodiments of the present invention may be stored on such portable computer readable storage media and may be loaded onto the persistent storage  408  via the I/O interface(s)  414 . The I/O interface(s)  414  may similarly connect to a display  422 . The display  422  provides a mechanism to display data to a user and may be, for example, a computer monitor. 
     The present invention may be a system, a method, and/or a computer program product at any possible technical detail level of integration. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention. 
     The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire. 
     Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device. 
     Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention. 
     Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions. 
     These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks. 
     The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of computer program instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions. 
     The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.