The present invention relates generally to computer searching technologies, and more particularly, providing an opinion search platform that processes voluminous amount of unstructured and structured social media textual data for display the aggregated public opinions in a visual transformed structural representation on a computer display.
Software-based search engines have become a popular and nearly indispensable tool as a query method for quickly finding facts and data about the myriad of topics that can be retrieved on both public and private computer networks globally. These search engines serve as a central location to locate objective data in documents, such as web pages or published papers, as well as various public and private data sources. These commercially available search engines typically also return related salient pieces of information about the topic under consideration, as well as a generic description of the topic itself. For example, a computer search for the celebrity “Justin Bieber” on either search engine http://www.google.com or http://www.bing.com, two of the most popular and widely used commercial search engines, will return not only facts and data about Mr. Bieber, but also recent news articles about him, photographs of him, playlists containing his published recordings, lists of movies that he starred in, and other information relating to him in this example, as illustrated in
Conventional search engines have been surprising slow in adopting to and incorporating the rapid advances in social media posts that have become fabric of today's society and as a reflecting of the general public sentiments on hot topics. Although search engines return useful facts and data about the topic under consideration, they suffer the following drawbacks and do return any of the following: human opinion about the topic under consideration; how much popular ‘buzz’ exists—the total number of results returned, segregated by positive, negative, and neutral sentiment expressed about the topic under consideration; positivity, as expressed by favorable human sentiment, towards the topic under consideration; negativity, as expressed by unfavorable human sentiment, towards the topic under consideration; how public opinion, both positive and negative, about the topic under consideration has changed over time; and user feedback, including the ability for users to “vote up” or “vote down” a given search result.
In parallel with developments in search engine technology, there has been numerous conventional sentiment analysis pertaining to natural language processing methods and software that can identify positive or negative human sentiment in a given sample of text. Various well-known methods exist for deriving such information, such as traditional polling, online survey tools, automated phone calls to survey recipients, etc., as well as numerous commercial and open source software packages that can be applied to measure and score the human sentiment contained in written text, speech, and other embodiments of natural language.
Prior sentiment analysis techniques possess several disadvantages which include generally missing several useful features. These techniques do not apply to the presentation of online advertisements: current online advertisements do not incorporate human sentiment as a measure of ad relevance or context. These techniques also do not apply to application programming interface (API) output or monetization: while API's are not new, human opinion has not been used as the primary function which governs the manner that API results are provided.
Accordingly, it is desirable to have a system and method that provide an opinion search platform that source, analyze, compute and analyze a large amount of unstructured and structured social media electronic messages from various sources featuring natural language processing with sentiment analysis and entity groupings to produce one or more visual representations to reflect the opinion search result.
Embodiments of the present invention are directed to methods, computer program products, computer systems for providing a computing search platform for conducting opinion searches over the Internet concerning aggregated social media electronic messages about public opinions and public sentiments for a wide variety of matrices, such as social media posting of a particular industry over a specified time period, electronic social media posting on the public sentiments, public buzz, public mood on US senators, or electronic social media textual data of the upcoming US presidential election of Republic and Democrat candidates. An opinion search engine serves as the backbone in complex data crunching of thousands or millions of electronic social media messages which an opinion search engine detects, extracts, computes, and correlates both unstructured textual data and structured textual data. In response to a search query submitted through an opinion search bar, the opinion search engine processes the query to return an aggregated result in a transformed visual representation of the selected one or more entities, as well as public buzz, public mood, and other public sentiments on one or more related products, to the user's computer display.
The opinion search engine includes a storm check module, an entity extract module, vertical-specific module, a sentiment extract module, an exact match module, an entity ranking module, and an opinion visual representation mapping module. In one embodiment, the opinion search is based on the user generated contents posted on various social media sites, such as Facebook, Twitter, Yelp, and others. The horizontal opinion search system includes software pipeline process, production data storage aggregate, and entity builder database aggregate. In one embodiment of a horizontal opinion search engine/software pipeline process, the invention includes an entity extract module, a sentiment extract module, an entity ranking module, and a horizontal opinion visual representation module.
The sentiment extract module is further comprised of generic module, trained sentiment module, and math probabilistic classifier module. The sentiment extract module is configured to differentiate and isolate the sentiment from the textual data. In other embodiments of the invention, sentiment extract module can contain any number of other modules that will combine to generate a score for textual data from social media websites. The score help determines the sentiment of a piece of textual data. Horizontal opinion search result can be displayed as a visual mapping representation structure on the user's computer display.
Broadly stated, a computer-implemented method for conducting an opinion search, comprises extracting entity information and attributes from each structured electronic social media message in the plurality of structured electronic social media messages and extracting entity information and attributes from each normalized unstructured electronic social media message in the plurality of unstructured electronic social media messages; scoring a composite sentiment value and attributes for the text in each structured electronic social media message or each normalized unstructured electronic social media message, storing the scored structured electronic social media messages and the scored normalized unstructured electronic social media message in a database; and aggregating the results of the scored structured electronic social media messages and the scored normalized unstructured electronic social media messages for one or more entities organized for display as a transformed visual representation.
The structure and methods of the present invention are disclosed in the detail description below. This summary does not purport to define the invention. The present invention has many different embodiments and may be applied to numerous different environments. Variations upon and modifications to these embodiments are provided for by the present invention, which is limited only by the claims. These and other embodiments, features, aspects, and advantages of the invention will become better understood with regard to the following description, appended claims and accompanying drawings.
The structures and methods of the present invention are disclosed in the detailed description below. This summary does not purport to define the invention. The invention is defined by the claims. These and other embodiments, features, aspects, and advantages of the invention will become better understood with regard to the following description, appended list of claims, and accompanying drawings.
The disclosure will be described with respect to specific embodiment thereof, and reference will be made to the drawing, in which:
A description of structural embodiments and methods of the present invention is provided with reference to
The following definitions apply to the elements and steps described herein. These terms may likewise be expanded upon.
Application Programming Interface (API)—refers to a programmatic interface for reading sentiment data from the Moodwire cloud service.
Buzz—refers to the number of tallied mentions about a given topic, during a discrete time interval. (Example Usage—During the past month in February 2015, Justin Bieber had a buzz of 1,543,654 mentions on the World Wide Web.)
Entity—refers to an Entity is a meta-concept of noun/person/etc. The fragment of text is just a representation (or clue) of that entity being used in a certain context but that piece of text is not the entity, just a reference to it. This is semantically relevant because “I flew on United” contains the word “United” but the reference to Entity: United_Airlines is only true because of the verb “flew” && (object==word(“United”)) so “United” is simply a word that, in another context, could refer to “United States” or something entirely different.
Entry (syn. Post, Mention)—refers to a single fragment of text, which may come from a review, a tweet etc.
Horizontal Entities—refers to a horizontal collection of entities with a broad range of offerings to a large group of customers with a wide range of needs, such as businesses as a whole, men, women, households, or in the broadest sense of a horizontal market, everyone.
Human Opinion—refers to a view or judgment formed by people, (as opposed to machines), about a given topic, not necessarily based on fact or knowledge. Opinions are generally expressed on a varying scale of positive to negative, with a neutral indicating the absence of opinion.
Micro-blog—refers to a social media site to which a user makes short, frequent electronic social media posts.
Natural Language Processing—refers to a field of computer science, artificial intelligence, and linguistics concerned with the interactions between computers and human languages.
Ontological relationship—In one embodiment, this term refers to naming and defining the types, properties, and interrelationships of the entities that exist for a particular domain of discourse. An ontology compartmentalizes the variables for some set of computations and establishes the relationships between them (e.g. taxonomy).
Overall Polarity—refers to a combined score of all the Piece Scores. Many different types of item scores are possible depending on how the Piece Scores are weighted.
Quote Sentiment—refers to a subpart of an item that can be an atomic unit of measurable sentiment. Score entries are by made by humans or computers.
Semi-structured Data—refers to a form of structured data that does not conform with the formal structure of data models associated with relational databases or other forms of data tables, but nonetheless contains tags or other markers to separate semantic elements and enforce hierarchies of records and fields within the data.
Sentiment—refers to a view of or attitude toward a situation or event; an opinion.
Sentiment Score—refers to sentiment scoring where each Item is scored based on the sum of the Piece scores. Pieces, which are not scored or scored as “Mixed” or “Unknown”, are treated as 0.
Spam—refers to unsolicited electronic messages, especially advertising, as well as messages sent repeatedly on the same site.
Stream—refers to a string of items (e.g. a days' worth of reviews at Yelp, or 10,000 Twitter tweets).
Tagvana—refers to Moodwire's crowd sourced human scoring and quality assurance (QA) tool. Tagvana is used for sentiment engine tooling and accuracy assessments.
Storm—refers to bursts of social media communications that recursively grow according to a power law.
Structured Data—refers to data that resides in a fixed field or record, such as data commonly found in a relational database.
Unstructured Data—refers to information that either does not have a pre-defined data model or is not organized in a pre-defined manner.
Vertical collection entities—refers a collection of entities related to a specific to an industry, trade, profession, or other group of customers with specialized needs. It is distinguished from a horizontal collection of entities, which implies a broad range of offerings to a large group of customers with a wide range of needs, such as businesses as a whole, men, women, households, or, in the broadest horizontal market, everyone.
Web Crawler—refers to a web crawler is an Internet bot that systematically browses the World Wide Web, typically for the purpose of Web indexing. A Web crawler may also be called a Web spider, an ant, an automatic indexer, or a Web scutter.
Window (or Epoch)—refers to a set period of time during which a Stream is examined. This can be a minute or an hour, or a week etc. For example when we publish a graph of a given score vs. time we can choose different time scales such as 1-minute resolution, 1-hour resolution, 2.5 day resolution, 1-week resolution etc.
Windowing Effect—As the time scale (Epoch) gets longer fast changing events in a Stream are more difficult to see because they get smooth out by the length of the time window examined. This effect of smoothing vs. window length is called the “windowing” effect in signal processing and informatics theory. Many different valid approaches for dealing with windowing are possible depending on the type of information preservation desired.
The normalized textual data is sent to the logical load balancer 18, which is composed of numerous computers to start to configure software pipeline process and balance the data loading into the opinion search engine 20. The opinion search engine 20 generates scores for the social media electronic messages and record the resulting scores at the production data storage aggregator 22. The production data storage aggregator 22 includes different types of databases, such as a cache database 34, an index database 36, and a relational database (e.g., Oracle) 38. A suitable commercial application of the cache database 34 is produced by Redis, a suitable commercial application of the index database 36 is produced ElasticSearch, and a suitable commercial application of the relational database 38 is produced by Oracle Corporation of Redwood Shores, Calif.
The relational database 38 stores the information such as the social media electronic messages and the computed scores, in tables that have relationship with one another. The index database 36 is configured to enable the opinion searches to be conducted more rapidly. The cache database 34 is configured to identify entities that exist in databases and associate the entities with a unique identifier, which enables quick query and query response actions. Entities are predefined search categories that can be real, such as singers and actors, or virtual, such as S&P 500 Index and Air Transportation. All the databases are exposed to the clients via the API 24. In one embodiment, the entity builder (also referred to as an “entity administrative server”) 28 enables human intervention to manipulate and test the scores by storing the revisions (or changes) in the document database 40. The revisions are pushed into production by the application server 42. Once the application server 42 can verify and confirm the data, then the application server 42 automatically forward the revisions to be incorporated into the production data storage aggregator 22.
The spam check module 54 is configured to analyze the textual data to see if a social media electronic message is a spam of contains spam, which refers to a commonly-used euphemism to describe irrelevant or inappropriate messages sent on the Internet to a large number of recipients. Spam often takes the form of indiscriminate advertisements, and other unwelcome, often automated communications. An example of the spam check module's output is shown here:
The exact match module xx is concerned with unambiguously identifying an entity that occurs in the text. An example of the exact match engine's input is shown here:
After processing by the exact match module, the output is provided as follows: Exact Match Engine output Example:
The entity extract module 56 is configured to identify and tag with metadata the words that are known to exist in the system's relational database 38. To phrase it another way, the entity extract module 56 is configured to identify one or more nouns in a text streams, such as a person, place, or things to get tagged as an entity (while the sentiment extract module 60 is configured to assess other words in the text streams and how they relate to those entitles). For example, if “Apple Computer” exists in the relational database, when a textual data that contains the term “Apple Computer” enters the pipeline process, it will be tagged as containing a reference to “Apple Computer.”
The vertical-specific module 58 contains multiple entity extraction modules that are tuned for use in different vertical domains. The vertical-specific module 58 enables the system 10 to synthesize results from a broad number of taxonomic domains (collections of things), but then present those results in a coherent and easily understandable fashion. For example, consider a term that is difficult to disambiguate, such as “apple”. The term “apple” could refer to a fruit, a computer manufacturer, or a recording artist publisher. Three phrases that each contain a different embodiment of the term “apple” are: “I ate a red delicious apple”, “I love my apple macbook”, and “The Beatles published their music via apple”. In this example, the system would employ three different vertical-specific engines. The term “vertical” indicates a logical grouping of related items. One such grouping would be fruit, such as “apples, oranges and pears”. A second grouping would be computer manufacturers, such as “Apple, Lenovo and Dell”. A third grouping would be recording artist publishers, such as “Arista, Universal Music, and Apple Records”. The system would then take each input phrase, and seek out clues that indicate which phrase belonged to which vertical. In this example, the verb “ate” implies that the “apple” in the first phrase belongs to the fruit vertical, while the noun “macbook” implies that “apple” in the second phrase belongs to the computer manufacturers vertical. Finally the word “Beatles” implies the “apple” in the third phrase refers to the recording artist publisher vertical. By having each vertical-specific engine tuned to a particular vertical, (fruit, computer manufacturers, recording artist publishers), the system can more easily and effectively identify the appropriate context for each entity, and classify it correctly.
The sentiment extract module 60 further includes a generic module 72, trained sentiment module 74, and a mathematical probability classifier module 64. The sentiment extract module 58 is configured to differentiate and isolate the sentiment from the textual data, also referred to as an ensemble methodology, where sentiment extract module 60 is configured to run multiple types of analysis simultaneously on the same target data and then generating a score for each of these functions. The sentiment extract module 60 processes a piece of textual data through each of the submodules 72, 74, 76. The generic module 60 is configured to provide the first pass of the textual data and access the sentiment. Next, the data passes through the trained sentiment module 62, which is configured to make a more accurate assessment of the textual data's sentiment. For example, the phrase “That album was super bad” can be assessed as a positive sentiment by the trained sentiment module 74. Finally, the textual data passes through the mathematical probability classifier module 76 where the textual data is configured to classify the textual data into different topics based on existing mathematical probability theory. Each of the three modules that the textual data passes through generates a separate score. All the scores for each textual data are combined and synthesized into a super score and stored on the relational database 38. The sentiment extract module 60 is intended as an illustration, which can be modified, subtracted, added, integrated by one of skilled in the art.
The job classifier 64 is configured to identify job ads by scraping for job listings and determined whether a particular textual data actually contains reference or description of a job listing. The job classifier 64 is configured to look for certain patterns and certain word patterns that are prevalent in job listings. The entity ranking module 66 is configured to prioritize the amount in the payload by ranking the different groups of information. The opinion visual representation mapping module 68 is configured to gather all the information and textual data relevant to the client's query and transform the information into a visual graphical representation for display on a computer display.
In one embodiment, normalized data may contain specific information for use by the system, including input_body, created_date, unique_id, unique link to a web page, source site, etc. In addition, the system 10 collects the author_name, location, type, and gender if this information is contained or can be successfully inferred from the raw text input. These attributes are desirable, but not required for use by the system 10. Location is normalized to a most granular description available, and if possible reduced to precise latitude and longitude coordinates.
The code snippet below shows what the unstructured data looks like when the code is received by the system 10. Each new piece of text is classified as an item_object.
After this raw input is gathered by the system, it is automatically normalized into the following format:
At step 88, the system 10 extracts the entity information and attributes from each structured data, where the structured entity information is stored in the database at step 38. At step 92, the system 10 receives a first stream of social media electronic messages that have been normalized, and a second stream of social medial electronic messages where the entity information has been extracted and stored. The system 10 assigns a score to each textual data for sentiment and attributes against different entities. For identifying one or more entities social media electronic messages that are sourced as unstructured data, the raw unstructured text input is elucidated by comparison with known, structured text, thereby identifying the entities contained within the normalized unstructured data. At step 94, the system 10 stores the scored documents, tweets and articles. Using the above Bieber example, by comparing what is known about Justin Bieber the celebrity in the structured database, (i.e.—the fact that he just released a new album), with the incoming unstructured data being collected by his fan's tweet, the system can infer that the fan's Twitter® post is referring to Justin Bieber the celebrity singer, and not some other, lesser known person who is also named Justin Bieber. The system 10 adds data to associate the formerly unstructured data with the structured data because the system 10 determines that this particular tweet refers to Justin Bieber, the celebrity. By tagging the incoming tweet as such, the system 10 now establishes that these two data elements are related to one another. This synthesis enables further enrichment, including the scoring of human opinion pertaining to the entities as they occur in the unstructured text—by examining the tweet further, the system 10 infers that this fan has a favorable opinion of Mr. Bieber's new album, and then give that a numerical score. Because the word “love” was used, instead of some less emphatic term, such as “like”, the system might assign this tweet a score of +2 in favor of Mr. Bieber's new album, instead of +1. Finally, the system can also use human sampling and oversight of the automated process to assure the quality and relevance of the data. A human operator, who reviews this example tweet would likely affirm that it is in fact referencing Justin Bieber the singer/celebrity. When multiple humans agree with the software program's assessment, a baseline can be established for training the software system in a manner that reinforces greater accuracy and precision in subsequent analyses, thus improving the system over time using a variety of statistical machine learning and natural language processing techniques.
Other than unstructured data, the system 10 also collects structured data from voluminous online public and private sources regarding known, well-defined entities. An example of such structured data would be collecting information about Justin Bieber's age and height from http://www.wikipedia.org, the public online encyclopedia, automatically via their application programming interface (API). Structured data sources are gathered in the structured entity database before undergoing similar scoring procedure as the unstructured textual data. The structured data store is extended and enhanced through the gained new knowledge, from the raw unstructured text by labeling all newly discovered topics (entities) with metadata from the structured database, as well as scoring each mention of these known entities for human sentiment. In this example, this tweet now contributes a +2 towards collected public opinion about Mr. Bieber's new album, thus enhancing the favorability of human opinion regarding the album.
After the social media opinions and associated entity relationships have been determined and added to the system 10, the results of this processing and enrichment are then presented to the end-users of the system using two different methods, via an API, as well as via a unique user interface. The API enables other automated software programs to consume this enriched information and add it as an input to their processing and calculations. Through the web portal search box 96, a query term processes through the Query API 98, which is configured to interrogate the databases 100 for information that may be associated with the query term. The Query API search result will be aggregated at step 102 and exported via the Query API Output 104 and then deliver the various web visualizer, portal output, charts, and graphs to the computer display at step 106, where the web portal search box originated from.
The opinion search engine 20 may also score the textual data by other methodologies, such as by Tagvana Scoring method 166 and the Customer Overriding Scoring method 168. In Tagvana Scoring method 166, the opinion search system 100 retrieves the unstructured textual data that have been normalized at step 170, select a particular piece of normalized textual data at step 172, score the piece of normalized textual data at step 174, repeat the scoring process for as many as of the normalized unstructured data as desired, generate an aggregated results at step 176, and store the aggregated results with scores in the data storage aggregator 22 at step 178. In the Customer Overriding Scoring method 168, the opinion search system 100 retrieves the unstructured textual data that have been normalized at step 180, select a particular piece of normalized textual data at step 182, score the piece of normalized textual data as supplied by an external source such as by customers at step 184, repeat the scoring process for as many as of the normalized unstructured data as desired, generate an aggregated results step 186, and store the aggregated results with scores in the data storage aggregator 22 at step 188.
The Moodrank Graph 206 shows three sampling graphical curves 218, 220, 222, where the first graphical curve 218 illustrates a higher sustainable amplitude over time, while the second curve 220 shows a more amplitude fluctuation relative to the first graphical curve 218, and the third graphical curve 222 has a lower amplitude with anemic fluctuation compared to the second curve 220 and the first curve 218. A Moodrank table 224 classifies social media electronic messages into one of the five categories: Pos(itive), Neg(ative), Neutral, Mixed, and Unk(nown), with the corresponding calculated percentage of each category type.
Additional classifications and other types of matrices in performing data analytics on the social media electronic messages are possible, which can be extended into the different kinds of TypeRank charts on the sentiments or opinions of XYZ Hotels International. These various charts summarizes the matrices and the opinion search system 10 computes the percentages of the social media electronic messages to reflect positive, negative, mixed, neutral, or known opinion toward the XYZ Hotels International regarding the Rooms 226, FrontDesk 228, Clealiness 230, Frothiness 232, Service 234, Pricing 236, Beds 238, and Chocolate categories 240. The adjustment on the time slider control of the MoodRank graph 206 and BuzzRank graph 208 affect the computed percentages for displaying on the respective summary tables and TypeRank charts.
The computer system 310 may be coupled via the bus 316 to a display 328, such as a flat panel for displaying information to a user. An input device 330, including alphanumeric, pen or finger touchscreen input, other keys, or voice activated software application (also referred to as intelligent personal assistant or a software application that uses a natural language user interface) is coupled to the bus 316 for communicating information and command selections to the processor 312. Another type of user input device is cursor control 332, such as a mouse (either wired or wireless), a trackball, a laser remote mouse control, or cursor direction keys for communicating direction information and command selections to the CPU 312 and the GPU 314 and for controlling cursor movement on the display 274. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
The computer system 310 may be used for performing various functions (e.g., calculation) in accordance with the embodiments described herein. According to one embodiment, such use is provided by the computer system 310 in response to the CPU 312 and the GPU 314 executing one or more sequences of one or more instructions contained in the main memory 318. Such instructions may be read into the main memory 318 from another computer-readable medium 326, such as storage device 324. Execution of the sequences of instructions contained in the main memory 318 causes the CPU 312 and the GPU 314 to perform the processing steps described herein. One or more processors in a multi-processing arrangement may also be employed to execute the sequences of instructions contained in the main memory 318. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the present disclosure. Thus, embodiments of the present disclosure are not limited to any specific combination of hardware circuitry and software.
The term “computer-readable medium” as used herein refers to any medium that participates in providing instructions to the CPU 312 and the GPU 314 for execution. Common forms of computer-readable media include, but are not limited to, non-volatile media, volatile media, transmission media, a floppy disk, a flexible disk, a hard disk, magnetic tape, any other magnetic medium, a CD-ROM, a DVD, a Blu-ray Disc, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, an EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read. Non-volatile media includes, for example, optical or magnetic disks, such as the storage device 324. Volatile media includes dynamic memory, such as the main memory 318. Transmission media includes coaxial cables, copper wire, and fiber optics. Transmission media can also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.
Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to the CPU 312 and the GPU 314 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a network 334 through a network interface device 336. The bus 316 carries the data to the main memory 318, from which the CPU 312 and the GPU 314 retrieve and execute the instructions. The instructions received by the main memory 318 may optionally be stored on the storage device 324 either before or after execution by the CPU 312 and the GPU 314.
The network (or communication) interface 336, which is coupled to the bus 316, provides a two-way data communication coupling to the network 334. For example, the communication interface 336 may be implemented in a variety of ways, such as an integrated services digital network (ISDN), a local area network (LAN) card to provide a data communication connection to a compatible LAN, a Wireless Local Area Network (WLAN) and Wide Area Network (WAN), Bluetooth, and a cellular data network (e.g. 3G, 4G). In wireless links, the communication interface 336 sends and receives electrical, electromagnetic or optical signals that carry data streams representing various types of information.
The computer system 310 is a computing machine which is capable of executing a set of instructions for causing the machine to perform any one or more of the methodologies discussed herein. In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server or a client machine in a server-client network environment or as a peer machine in a peer-to-peer (or distributed) network environment.
The machine is capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
The memory 324 includes a machine-readable medium on which is stored one or more sets of data structures and instructions 320 (e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein. The one or more sets of data structures may store data. Note that a machine-readable medium refers to a storage medium that is readable by a machine (e.g., a computer-readable storage medium). The data structures and instructions 320 may also reside, completely or at least partially, within memory 324 and/or within the processor 312 during execution thereof by computer system 310, with memory 318 and processor 312 also constituting machine-readable, tangible media.
The data structures and instructions 320 may further be transmitted or received over a network 334 via network interface device 336 utilizing any one of a number of well-known transfer protocols HyperText Transfer Protocol (HTTP)). Network 334 can generally include any type of wired or wireless communication channel capable of coupling together computing nodes (e.g., the computer system 310). This includes, but is not limited to, a local area network, a wide area network, or a combination of networks. In some embodiments, network 334 includes the Internet.
Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code and/or instructions embodied on a machine-readable medium or in a transmission signal) or hardware modules. A hardware module is a tangible unit capable of performing certain operations and may be configured or arranged in a certain manner. In example embodiments, one or more computer systems (e.g., the computer system 310) or one or more hardware modules of a computer system (e.g., a processor 312 or a group of processors) may be configured by software an application or application portion) as a hardware module that operates to perform certain operations as described herein.
In various embodiments, a hardware module may be implemented mechanically or electronically. For example, a hardware module may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware module may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor 312 or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently, configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
Accordingly, the term “hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in a certain manner and/or to perform certain operations described herein. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where the hardware modules comprise a general-purpose processor 312 configured using software, the general-purpose processor 312 may be configured as respective different hardware modules at different times. Software may accordingly configure a processor 312, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.
Modules can provide information to, and receive information from, other modules. For example, the described modules may be regarded as being communicatively coupled. Where multiples of such hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the modules. In embodiments in which multiple modules are configured or instantiated at different times, communications between such modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple modules have access. For example, one module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further module may then, at a later time, access the memory device to retrieve and process the stored output. Modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).
The various operations of example methods described herein may be performed, at least partially, by one or more processors 312 that are temporarily configured (e.g., by software, code, and/or instructions stored in a machine-readable medium) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors 312 may constitute processor-implemented (or computer-implemented) modules that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented (or computer-implemented) modules.
Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations, and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the embodiment(s). In general, structures and functionality presented as separate components in the exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the embodiment(s).
As used herein any reference to “one embodiment” or “an embodiment” means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
Some embodiments may be described using the expression “coupled” and “connected” along with their derivatives. It should be understood that these terms are not intended as synonyms for each other. For example, some embodiments may be described using the term “connected” to indicate that two or more elements are in direct physical or electrical contact with each other. In another example, some embodiments may be described using the term “coupled” to indicate that two or more elements are in direct physical or electrical contact. The term “coupled,” however, may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other. The embodiments are not limited in this context.
As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, method, article, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Further, unless expressly stated to the contrary, “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).
The terms “a” or “an,” as used herein, are defined as one or more than one. The term “plurality,” as used herein, is defined as two or more than two. The term “another,” as used herein, is defined as at least a second or more.
The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the embodiments to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles and its practical applications, to thereby enable others skilled in the art to best utilize the embodiments and various embodiments with various modifications as are suited to the particular use contemplated.
This application claims priority to U.S. Provisional Application Ser. No. 62/089,244 entitled “Consumer Opinion Search and Display using Machine Algorithms,” filed on 9 Dec. 2014, the disclosure of which is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62089244 | Dec 2014 | US |