U.S. patent application number 16/102631 was filed with the patent office on 2018-12-20 for category-based content recommendation.
The applicant listed for this patent is FIVER LLC. Invention is credited to Jennifer Cooper, Theodore Diamond, Krzysztof Koperski, Jisheng Liang.
Application Number | 20180365316 16/102631 |
Document ID | / |
Family ID | 45997821 |
Filed Date | 2018-12-20 |
United States Patent
Application |
20180365316 |
Kind Code |
A1 |
Liang; Jisheng ; et
al. |
December 20, 2018 |
CATEGORY-BASED CONTENT RECOMMENDATION
Abstract
Techniques for category-based content recommendation are
described. Some embodiments provide a content recommendation system
("CRS") configured to recommend content items (e.g., Web pages,
images, videos) that are related to specified categories. In one
embodiment, the CRS processes content items to determine entities
referenced by the content items, and to determine categories
related to the referenced entities. The determined entities and/or
categories may be part of a taxonomy that is stored by the CRS.
Then, in response to a received request that indicates a category,
the CRS determines and provides indications of one or more content
items that each have a corresponding category that matches the
indicated category. In some embodiments, at least some of these
techniques are employed to implement a category-based news
service.
Inventors: |
Liang; Jisheng; (Bellevue,
WA) ; Koperski; Krzysztof; (Seattle, WA) ;
Cooper; Jennifer; (Seattle, WA) ; Diamond;
Theodore; (Seattle, WA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
FIVER LLC |
Wilmington |
DE |
US |
|
|
Family ID: |
45997821 |
Appl. No.: |
16/102631 |
Filed: |
August 13, 2018 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
14231238 |
Mar 31, 2014 |
10049150 |
|
|
16102631 |
|
|
|
|
13286778 |
Nov 1, 2011 |
8725739 |
|
|
14231238 |
|
|
|
|
61408965 |
Nov 1, 2010 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 16/954 20190101;
G06F 16/367 20190101; G06F 16/338 20190101; G06F 16/35 20190101;
G06F 16/24578 20190101; G06F 16/3323 20190101 |
International
Class: |
G06F 17/30 20060101
G06F017/30 |
Claims
1. A computer-implemented method in a content recommendation
system, the method comprising: processing a corpus of content items
to determine, for each of the content items, multiple corresponding
entities referenced by the content item, each of the determined
entities being electronically represented by the content
recommendation system; determining, for each of at least some of
the content items, at least one corresponding category that is part
of a taxonomy represented as a graph stored by the content
recommendation system and that is associated with one of the
multiple corresponding entities referenced by the content item,
wherein determining the at least one corresponding category
includes aggregating common nodes in taxonomic paths that are
associated respectively with a first determined entity and a second
determined entity that are part of the graph such that the
corresponding category relates the first and second determined
entities in an is-a relation, a part-of relation, or a member-of
relation; and storing, for each of the content items, the
determined multiple corresponding entities and the determined at
least one corresponding category.
2. The method of claim 1 wherein determining the at least one
corresponding category includes traversing a path in the taxonomy
stored by the content recommendation system.
3. The method of claim 1 wherein processing the corpus of content
items includes ranking, for one of the content items, the
determined multiple corresponding entities.
4. The method of claim 3 wherein ranking the determined multiple
corresponding entities includes ranking an entity based on at least
one of: the quantity of times that the entity is referenced by the
content item, a position/location of a reference of the entity, or
a penalty assessed based on a type of the entity.
5. The method of claim 4 wherein determining the at least one
corresponding category includes selecting a predetermined number of
highest ranked entities from the ranked entities.
6. The method of claim 1 wherein determining the at least one
corresponding category includes ranking leaf node categories of
taxonomic paths associated with the determined multiple
corresponding entities, the ranking based on the quantity of
entities having a particular category and/or the a rank of an
entity in a ranked list of entities.
7. The method of claim 1 wherein storing the determined multiple
corresponding entities and the determined at least one
corresponding category includes annotating a content item entry in
an index with tokens that reflect the determined at least one
category.
8. The method of claim 1, further comprising: receiving an
indication of a category; selecting one or more of the content
items that each have a corresponding category that matches the
indicated category; and providing indications of the selected
content items.
9. The method of claim 8 wherein selecting the one or more content
items includes ranking content items based on term frequency minus
inverse document frequency.
10. The method of claim 8 wherein selecting the one or more content
items includes ranking content items based the quantity of times a
category token was added to a content item index.
11. The method of claim 8 wherein selecting the one or more content
items includes ranking the one or more content items based on a
credibility score determined for each content item.
12. The method of claim 8 wherein selecting the one or more content
items includes ranking the one or more content items based on
recency of each content item, such that more recent content items
are ranked higher than less recent content items.
13. The method of claim 8 wherein selecting the one or more content
items includes collapsing similar content items into groups of
content items, wherein similarity between two content items is
based on at least one of: distance between signatures of the two
content items, amount of overlap between titles of the two content
items, amount of overlap between summaries of the two content
items, amount of overlap between URLs referencing the two content
items, and publishers of the two content items.
14. The method of claim 8, further comprising: determining content
items that are related to the indicated category but that are not
in the corpus of content items; and receiving from a third-party
content service indications of at least one of a video, an image,
an audio file, an instant message, or a message in a social
network.
15. The method of claim 14 wherein determining content items that
are related to the indicated category but that are not in the
corpus of content items includes generating a keyword query that
includes names of popular entities in the indicated category.
16. The method of claim 1, further comprising: determining popular
entities for an indicated category, the popular entities having
recently received an increased number of references by content
items in the corpus and/or having more references by content items
in the corpus than other entities; and transmitting indications of
the determined popular entities.
17. A computer-readable medium having contents that, when executed,
enable a computing system to recommend content, by performing a
method comprising: processing a corpus of content items to
determine, for each of the content items, multiple corresponding
entities referenced by the content item, each of the determined
entities being electronically represented by the content
recommendation system; determining, for each of at least some of
the content items, at least one corresponding category that is part
of a taxonomy represented as a graph stored by the content
recommendation system and that is associated with one of the
multiple corresponding entities referenced by the content item,
wherein determining the at least one corresponding category
includes aggregating common nodes in taxonomic paths that are
associated respectively with a first determined entity and a second
determined entity that are part of the graph such that the
corresponding category relates the first and second determined
entities in an is-a relation, a part-of relation, or a member-of
relation; and providing category-based content recommendations, by:
receiving an indication of a category; selecting a content item
that has a corresponding category that matches the indicated
category, the corresponding category associated with one or more
entities that are referenced by the selected content item; and
transmitting an indication of the selected content item.
18. The computer-readable medium of claim 17 wherein selecting the
content item includes collapsing similar content items into groups
of content items, wherein similarity between two content items is
based on at least one of: distance between signatures of the two
content items, amount of overlap between titles of the two content
items, amount of overlap between summaries of the two content
items, amount of overlap between URLs referencing the two content
items, and/or publishers of the two content items.
19. A computing system configured to recommend content, comprising:
a memory; a module stored on the memory that is configured, when
executed, to: process a corpus of content items to determine, for
each of the content items, multiple corresponding entities
referenced by the content item, each of the determined entities
being electronically represented by the content recommendation
system; determine, for each of at least some of the content items,
at least one corresponding category that is part of a taxonomy
represented as a graph stored by the content recommendation system
and that is associated with one of the multiple corresponding
entities referenced by the content item, wherein determining the at
least one corresponding category includes aggregating common nodes
in taxonomic paths that are associated respectively with a first
determined entity and a second determined entity that are part of
the graph such that the corresponding category relates the first
and second determined entities in an is-a relation, a part-of
relation, or a member-of relation; receive from a search query an
indication of a category; select a content item from the corpus of
content items, the selected content item having a corresponding
category that matches the indicated category; and transmit an
indication of the selected content item.
20. The computing system of claim 19 wherein the module is a
category-based news service configured to recommend news items to
at least one of a personal digital assistant, a smart phone, a
tablet computer, a laptop computer, and/or a third-party
application.
Description
CROSS-REFERENCE TO RELATED APPLICATION(S)
[0001] This application is a continuation of U.S. application Ser.
No. 14/231,238, entitled "CATEGORY-BASED CONTENT RECOMMENDATION,"
filed Mar. 31, 2014, which is a continuation of U.S. application
Ser. No. 13/286,778, entitled "CATEGORY-BASED CONTENT
RECOMMENDATION," filed Nov. 1, 2011, now U.S. Pat. No. 8,725,739
issued May 13, 2014, which claims the benefit of U.S. Provisional
Application No. 61/408,965, entitled, "CATEGORY-BASED CONTENT
RECOMMENDATION," filed Nov. 1, 2010, all of which are incorporated
herein by reference in their entireties.
TECHNICAL FIELD
[0002] The present disclosure relates to methods, techniques, and
systems for category-based content recommendation and, more
particularly, to methods, techniques, and systems for recommending
content items, such as news stories, that reference entities in an
indicated category.
BACKGROUND
[0003] Various approaches for automated categorization (or
classification) of texts into predefined categories exist. One
approach to this problem uses machine learning: a general inductive
process automatically builds a classifier by learning, from a set
of pre-classified documents that are represented as vectors of key
terms, the characteristics of the categories. Various
machine-learning techniques may be employed. In one approach, for
each category, a set of human-labeled examples are collected as
training data in order to build classifiers, such as Decision Tree
classifiers, Naive Bayes classifiers, Support Vector Machines,
Neural Networks, or the like. A separate classifier typically must
be built for each new category. Such approaches also may not scale
well when processing a large quantity of documents. For example, to
add a new category, a new classifier may need to be built. Then,
every document may need to be run through the resulting
classifier.
[0004] In addition, various approaches to providing
computer-generated news Web sites exist. One approach aggregates
headlines from news sources worldwide, and groups similar stories
together. The stories are grouped into a handful of broad,
statically defined categories, such as Business, Sports,
Entertainment, and the like. In some approaches, the presentation
of news items may be customized, such as by allowing users to
specify keywords to filter news items. However, such a
keyword-based approach to customization may be limited because it
can be difficult or impossible to express higher-order concepts
with simple keywords. For example, if a user wishes to obtain
articles about NBA basketball players, the term "NBA" may yield an
over-inclusive result set, by including many articles that do not
mention any basketball players. On the other hand, the terms "NBA
basketball player" may yield an under-inclusive result set, by not
including articles that do not include the specified keywords but
that do mention some NBA basketball player by name.
BRIEF DESCRIPTION OF THE DRAWINGS
[0005] FIG. 1 is an example flow diagram of a category-based
content recommendation process performed by an example
embodiment.
[0006] FIG. 2 illustrates an example block diagram of an example
embodiment of a content recommendation system.
[0007] FIGS. 3A-3C illustrate example screen displays provided by
an example embodiment of a content recommendation system.
[0008] FIGS. 4A-4D illustrate example data processed and/or
utilized by an example embodiment.
[0009] FIG. 5 is an example block diagram of an example computing
system for implementing a content recommendation system according
to an example embodiment.
[0010] FIG. 6 is an example flow diagram of a content indexer
process performed by an example embodiment.
[0011] FIG. 7 is an example flow diagram of a content recommender
process performed by an example embodiment.
DETAILED DESCRIPTION
[0012] Embodiments described herein provide enhanced computer- and
network-based methods and systems for recommending content and more
particularly, recommending content items in specified categories.
Example embodiments provide a content recommendation system ("CRS")
configured to recommend content items such as articles, documents,
videos, advertisements, product information, software
applications/modules, and the like. Recommending content items may
include determining content items that are in an indicated
category, based on whether entities referenced by those content
items are in or otherwise related to the indicated category. In
some embodiments, the content items are news items that include
timely information about recent or important events. Example news
items may be documents that include news stories or reports, press
releases, video news reporting, radio news broadcasts, or the
like.
[0013] In some embodiments, the CRS indexes a corpus of content
items by determining semantic information about the content items.
Determining semantic information may include determining entities
that are referenced by the content items. A content item may
reference an entity by naming or describing the entity. Entities
may include people, places (e.g., locations), organizations (e.g.,
political parties, corporations, groups), events, concepts,
products, substances, and the like. For example, the sentence "Sean
Connery starred as James Bond," names the entities Sean Connery and
James Bond. Table 1, below, includes a list of example entity
types. Fewer or more entity types may be available.
[0014] Determining semantic information may further include
determining categories that are associated with the determined
entities. In some embodiments, entities may further be associated
with (e.g., related to) one or more categories (also called
"facets"). Example facets include actor, politician, athlete,
nation, drug, sport, automobile, and the like. The entities and/or
categories may be arranged in a semantic network, such as a
taxonomic graph that includes relations between various categories
and/or entities. In one embodiment, each entity is associated with
at least one category, via an is-a relationship (e.g., Sean Connery
is-a Actor), and each category may be associated with one or more
other categories (e.g., an Actor is-a Person). The CRS may exploit
the relationships or links in the semantic network to determine and
store relevant categories associated with a particular content
item. Table 2, below, includes a list of example categories/facets.
Fewer, greater, or different categories may be incorporated or
utilized.
[0015] In some embodiments, the CRS provides a search and discovery
facility that is configured to recommend content items that include
or otherwise are related to one or more specified categories. In
one embodiment, the CRS receives an indication of a category, such
as via a Web-based search interface. In response, the CRS
determines (e.g., finds, selects, obtains, identifies) one or more
content items that reference or are otherwise related to the
specified category. The CRS may then rank or order the selected
content items, such that more relevant content items appear before
less relevant content items. The CRS then provides indications of
the selected content items, such as by storing, transmitting, or
forwarding the selected content items.
1. Overview of Category-Based Content Recommendation in One
Embodiment
[0016] FIG. 1 is an example flow diagram of a category-based
content recommendation process performed by an example embodiment.
In particular, FIG. 1 illustrates a process that may be implemented
by and/or performed by an example content recommendation system.
The process automatically provides content items relevant to a
specified topic category.
[0017] The process begins at block 102, where it builds a
repository of entities and concepts. In one embodiment, building
the repository may include automatically identifying entities by
processing structured or semi-structured data, such as may be
obtained Wikipedia, Techcrunch, or other public or private data
repositories, knowledge bases, news feeds, and the like. In other
embodiments, unstructured text documents or other content items
(e.g., audio data) may be processed to identify entities. As noted
above, entities may be organized into taxonomic hierarchies, based
on taxonomic relations such as is-a, part-of, member-of, and the
like. In some embodiments, the entities are also associated with
properties. Taxonomic paths and/or properties may be extracted from
structured and semi-structured sources (e.g., Wikipedia). An
example taxonomic hierarchy is illustrated with respect to FIG.
4D.
[0018] At block 104, the process determines a ranked list of
entities for each content item in a corpus of content items. In
some embodiments, the process uses entity tagging and
disambiguation to link references to entities that occur in the
text of a content item to entries in the repository of entities and
concepts generated at block 102. Then, for each content item, the
process determines a ranked list of entities, ordered by their
importance and relevance to the main subject/topic of the content
item.
[0019] At block 106, the process assigns categories to each content
item in the corpus of content items, based on the ranked list of
entities determined at block 104. The categories may be or include
any node or path in a semantic network and/or a taxonomic graph, or
any properties that may be shared by a group of entities (e.g.,
Pac-10 conference teams, University of Washington Huskies football
players, left-handed baseball pitchers, rookie football
quarterbacks). The assigned categories may be based on groups of
entities or entity types, grouped based on their taxonomic paths
and/or any selected properties. Assigning categories to a content
item may further include storing the determined categories in an
inverted index or other type of data structure for efficient
retrieval at a later time. In other embodiments, the process
assigns categories to only some of the content items in the corpus,
leaving content items without an assigned category. This may occur
for various reasons, such as because no category can be determined,
for performance reasons (e.g., only recent content items are
processed), or the like.
[0020] At block 108, the process determines content items that are
relevant to an indicated category. In one embodiment, the CRS
provides a search engine facility that can answer queries
requesting content items related to one or more specified
categories. Thus, determining relevant content items may include
finding content items that match or are otherwise related to at
least one of the specified categories. The determined content items
may be ranked by factors such as source credibility, popularity of
the topic, recency, or the like. The determined content items may
then be provided (e.g., transmitted, sent, forwarded, stored), such
as in response to a received search query or other request.
[0021] Additional related information may also or instead be
determined that this time, including producing a summarization of
the specified category by producing a list of current and popular
entities in the specified category. For example, given the category
"NCAA basketball", the process may determine and return teams and
players that are most popular in the news recently. Such additional
information may then also be provided in response to a received
search query or other request.
[0022] At block 110, the process determines popular and/or emerging
categories. In one embodiment, the CRS is configured to provide a
feed, stream, or other dynamic collection, such as may be part of
an automated news service, where news items are organized by
popular and/or emerging categories. Popular and/or emerging
categories may be automatically determined based on popularity
ranking and detection of emerging categories, by aggregating
popularity measures of entities and documents that belong to each
category. The source of entity popularity measures may be page
views, user clicks, recent (e.g., last day/week) mentions in
content items, Wikipedia traffic, Twitter references, and the
like.
[0023] In addition, the CRS may also determine popular and emerging
entities within a category. For example, for a category such as NBA
Basketball, the CRS may determine entities (e.g., players, teams,
coaches) that have recently received significant press coverage,
such as NBA basketball teams (and their players) that are playing
each other in a current championship series or other event that has
recently (e.g., within the last day, week, month) received
additional press coverage.
[0024] The CRS may identify, organize, and/or present content items
in other or additional ways. For example, within a given category,
the CRS may identify content items that reference or are related to
particular events. For example, in a sports category, the CRS may
automatically identify, group, and/or present content items about
various sports-related events, such as injuries within particular
sports (e.g., injuries suffered by football players), awards (e.g.,
player of the year), player-team engagements (e.g., contract
renewals), or the like. Or, in an entertainment category, the CRS
may automatically identify content items about common gossip
events, such as romances, break-ups, movie openings, or the
like.
2. Functional Elements of an Example Content Recommendation
System
[0025] FIG. 2 illustrates an example block diagram of an example
embodiment of a content recommendation system. In particular, FIG.
2 illustrates a content recommendation system ("CRS") 200 that
includes a content ingester 211, an entity and relationship
identifier 212, a category identifier 213, a content recommender
214, an optional other content recommender 215, and a data store
217. The data store 217 includes a content index 217a, an entity
store 217b, and a relationship index 217c.
[0026] The content ingester 211 receives and indexes content from
various content sources 255, including sources such as Web sites,
Blogs, news feeds, video feeds, and the like. The content ingester
211 may also receive content from non-public or semi-public
sources, including subscription-based information services,
access-controlled social networks, and the like. The content
ingester 211 provides content information, including data included
within content items (e.g., text, images, video) and meta-data
about content items (e.g., author, title, date, source), to the
entity and relationship identifier 212. The content information may
be provided directly (as illustrated) and/or via some intermediary,
such as the content index 217a.
[0027] The entity and relationship identifier 212 determines
semantic information about content items obtained from the various
content sources 255, and stores the determined information in the
data store 217. More specifically, the entity and relationship
identifier 212 receives content information from the content
ingester 211 and identifies entities and relationships that are
referenced therein. Various automatic and semi-automatic techniques
are contemplated for identifying entities within content items. In
one embodiment, the identifier 212 uses natural language processing
techniques, such as parts of speech tagging and relationship
searching, to identify sentence components such as subjects, verbs,
and objects, and to identify and disambiguate entities. Example
relationship searching technology, which uses natural language
processing to determine relationships between subjects and objects
in ingested content, is described in detail in U.S. Pat. No.
7,526,425, filed Dec. 13, 2004, and entitled "METHOD AND SYSTEM FOR
EXTENDING KEYWORD SEARCHING FOR SYNTACTICALLY AND SEMANTICALLY
ANNOTATED DATA" issued on Apr. 28, 2009, and example entity
recognition and disambiguation technology is described in detail in
U.S. patent application Ser. No. 12/288,158, filed Oct. 15, 2008,
and entitled "NLP-BASED ENTITY RECOGNITION AND DISAMBIGUATION,"
both of which are incorporated herein by reference in their
entireties. Amongst other capabilities, the use of relationship
searching, enables the CRS 200 to establish second order (or
greater order) relationships between entities and to store such
information in the data store 217.
[0028] For example, given a sentence such as "Sean Connery starred
in Goldfinger," the identifier 212 may identify "Sean Connery" as
the sentence subject, "starred" as the sentence verb (or action),
and "Goldfinger" as the sentence object, along with the various
modifiers present in the sentence. These parts-of-speech components
of each sentence, along with their grammatical roles and other tags
may be stored in the relationship index 217c, for example as an
inverted index as described in U.S. Pat. No. 7,526,425. As part of
the indexing process, the CRS recognizes and disambiguates entities
that are present in the text. Indications of these disambiguated
entities are also stored with the sentences information, when the
sentence contains uniquely identifiable entities that the CRS
already knows about. These entities are those that have been added
previously to the entity store 217b. In some cases, the indexed
text contains subjects and objects that indicate entities that are
not necessarily known or not yet disambiguated entities. In this
case the indexing of the sentence may store as much information as
it has in index 217c, but may not refer to a unique identifier of
an entity in the entity store 217b. Over time, as the CRS
encounters new entities, and in some cases with the aid of manual
curation, new entities are added to the entity store 217b. In the
above example, "Sean Connery" and "Goldfinger" may be unique
entities already known to the CRS and present in the entity store
217b. In this case, their identifiers will be stored along with the
sentence information in the relationship index 217c. The identified
verbs also define relationships between the identified entities.
These defined relationships (e.g., stored as subject-action-object
or "SAO" triplets, or otherwise) are then stored in the
relationship index 217c. In the above example, a representation of
the fact that the actor Sean Connery starred in the film Goldfinger
would be added to the relationship index 217c. In some embodiments,
the process of identifying entities may be at least in part manual.
For example, entities may be provisionally identified by the
identifier 212, and then submitted to curators (or other humans)
for editing, finalization, review, and/or approval.
[0029] The content index 217a associates content items with one or
more entities and categories, and vice versa, in order to support
efficient searches such as searches for content items having a
particular entity or for categories associated with a particular
content item. For example, given an entity or category, the CRS 200
may provide a list of content items that reference that facet. In
addition, given an indication of a content item, the CRS may
provide a list of entities or categories referenced by that content
item.
[0030] The entity store 217b is a repository of entities (e.g.,
people, organization, place names, products, events, things),
concepts, and other semantic information. In at least some
embodiments, the entities in the entity store 217b are related such
that they form a semantic network, taxonomy, or graph. The entities
in the entity store 217b are associated with categories/facets. The
categories themselves are organized into one or more taxonomies
based on taxonomic relations such as is-a, part-of, member-of, and
the like. In addition, entities are associated with certain
properties, such as name and aliases, a unique identifier, types
and facets, descriptions, and the like. Entities may also have
type/facet-specific properties. For example, for a sports athlete,
common properties may include: birth place, birth date, sports
teams, player positions, awards, and the like. Note that some of
the properties are relational, that is, the property value may
itself be another entity in the entity store 217b. For example, the
team property for an athlete may be link to a sports team entity in
the entity store 217b, and vice versa. Thus, the entities in the
entity store 217b are interconnected through the property links,
creating a semantic network or graph. Certain taxonomic relations
are represented as such property links (e.g., the "member-of"
relation for the players-team relation, and team-league relation in
the sports domain). In some embodiments, the entities, their
taxonomic paths and/or properties are extracted from one or more
structured and semi-structured sources (e.g., Wikipedia). In other
embodiments, the process of identifying entities may be at least in
part manual. For example, entities may be provisionally identified
by the content ingester 211, and then submitted to humans for
editing, finalization, review, and/or approval.
[0031] The category identifier 213 determines category-related
semantic information about content items obtained from the various
content sources 255, and stores the determined information in the
data store 217. More specifically, the category identifier 213
receives content information from the content ingester 211 and
entity and relationship information from the entity and
relationship identifier 212, and determines categories associated
with the entities referenced by content items. The category
identifier 213 thus associates categories with content items, and
store such associations in the data store 217, such as by
annotating content items stored in the content index 217a. The
category identifier 213 may perform other or additional
category-related functions, such as identifying popular or trending
categories, summarizing categories by determining popular entities
in the category, or the like.
[0032] The content recommender 214 provides indications of content
items in response to a request received from a user 202 or a device
operated by the user 202. In one embodiment, the content
recommender 214 provides an interface (e.g., a Web-based interface,
an application program interface) that receives requests/queries
that specify one or more categories. In response, the content
recommender 214 determines content items that are related to at
least one of the one or more categories, and provides (e.g.,
transmits, sends, forwards) indications of the determined content
items. In another embodiment, the content recommender 214 operates
in a "push" model, where it provides a stream or feed of content
items related to one or more categories.
[0033] The optional other content recommender 215 provides
recommendations of other types of content obtained from or provided
by third-party services/sources. In some embodiments, the
recommender 215 may query third-party services to retrieve other
media types (e.g., videos, podcasts, social media messages) that
may not be included in the content index 217a. In one embodiment,
the recommender 215 may, given a specified category, automatically
construct a query adapted for a third-party information/content
service by taking the top entities (e.g., top three) from a list of
current and popular entities for the specified category.
[0034] In addition, although the described techniques for content
recommendation are illustrated primarily with respect to textual
content, other types of content are contemplated. In one
embodiment, the CRS 200 may utilize at least some of the described
techniques to perform or facilitate the category-based
recommendation of content items based on other types of content,
including advertisements, audio (e.g., music), video, images, and
the like.
[0035] In some embodiments, the CRS 200 is configured to ingest
video streams (e.g., live streaming of sports games) in a similar
fashion. In particular, the CRS 200 may obtain text content from
the stream via either closed captions or speech recognition. Then,
the CRS 200 analyzes the obtained text content as discussed above,
such that the CRS 200 can provide category-based recommendations
for such content items as well.
[0036] Furthermore, the described techniques are not limited to the
specific architecture shown in FIG. 2. For example, in some
embodiments, content ingestion and relationship identification may
be performed by another (possibly external or remote) system or
component, such as a stand-alone content indexing, search, and
discovery system. In other embodiments, the CRS 200 may not
interact directly with users as shown, but rather provide user
interface components (e.g., recommender widgets, plug-ins) that may
be embedded or otherwise incorporated in third-party applications
or systems, such as Web sites, smart phones, desktop systems, and
the like.
[0037] Although the techniques of category-based content
recommendation and the CRS are generally applicable to any type of
content item, the phrase "content item" is used generally to refer
to or imply any type of information and/or data, regardless of form
or purpose. For example, a content item may be in textual or binary
format, or a content item may be a news item, a report, an image,
an audio source, a video stream, a code module (e.g., an
application, an executable), an online activity (e.g., to purchase
a good or service), or the like. Essentially, the concepts and
techniques described are applicable to any category-based
recommendation system. Also, although certain terms are used
primarily herein, other terms could be used interchangeably to
yield equivalent embodiments and examples. For example, the term
"category" and "facet" are used interchangeably. Other terms for
category may include "class," "property-based set," or the like. In
addition, terms may have alternate spellings which may or may not
be explicitly mentioned, and all such variations of terms are
intended to be included.
[0038] Example embodiments described herein provide applications,
tools, data structures and other support to implement a content
recommendation system to be used for recommending content items,
such as news items, that belong to a particular category. Other
embodiments of the described techniques may be used for other
purposes, including for category-based recommendation of technology
reports (e.g., reviews of computer systems, programs, games, mobile
devices). In the following description, numerous specific details
are set forth, such as data formats and code sequences, etc., in
order to provide a thorough understanding of the described
techniques. The embodiments described also can be practiced without
some of the specific details described herein, or with other
specific details, such as changes with respect to the ordering of
the code flow, different code flows, etc. Thus, the scope of the
techniques and/or functions described are not limited by the
particular order, selection, or decomposition of steps described
with reference to any particular routine.
3. Example Screen Displays for Category-Based News Item
Recommendation
[0039] FIGS. 3A-3C illustrate example screen displays provided by
an example embodiment of a content recommendation system. In
particular, FIG. 3A illustrates a Web browser 300 that displays a
screen 302 (e.g., defined by a received Web page) that is being
used by a user to interact with the content recommendation system
to view news items organized by category. The screen 302 includes a
menu bar 304 and a news items area 306. The menu bar 304 includes
multiple controls, here labeled "US & World," "Entertainment,"
"Sports," "Business," "Technology," and "More." The multiple
controls allow a user to specify a particular category for which he
wishes to view news items. In this example, the user has specified
a Politics category, and in response, the news items area 306 is
updated to present news items that are related to the specified
category.
[0040] The news items area 306 includes multiple news item
snippets, such as snippets 308 and 310. Each snippet provides
information about a news item, such as the title of the news item,
some of text from the news item, the source of the news item, or
the like. For example, snippet 308 provides information about an AP
Online story, including its title ("FCC opens up unused TV signals
for broadband") and some of its text ("The Federal Communications
Commission is opening up unused airwaves between television
stations . . . "). Note that the news item presented via snippet
308 does not mention the term politics. Rather, the CRS has
determined that various entities referenced in the news item (e.g.,
the FCC) are entities that are in some manner related to the
Politics category. Snippet 310 provides information about a social
media message, in this case a post from the Twitter micro-blogging
service. Again, the underlying social media message presented via
snippet 310 does not include the term politics. Instead, the CRS
has determined that the referenced entity Timothy Geithner is
related to the Politics category.
[0041] FIG. 3B illustrates the specification of a content item
category by a user. In particular, in FIG. 3B, the user has
selected the control labeled "Sports" in the menu bar 304. In
response, a category selector menu 310 has been presented. The menu
310 includes a category section 312 and a trend section 314. The
category section 312 indicates multiple categories that are related
to the general Sports category, including MLS (Major League
Soccer), Soccer, MLB (Major League Baseball), Cycling, and the
like. The trend section 314 indicates multiple entities that have
been identified by the CRS as popular, emerging, and/or "trending."
Trending entities or categories include those that have been
recently (e.g., in the last day, week, month) been receiving an
increase in attention, for example measured by number of page
views, number of news stories, or the like. A trending
entity/category may be identified by measuring activity (e.g.,
number of news stories) with respect to historical averages for the
trending entity/category and/or with respect to other
entities/categories.
[0042] FIG. 3C illustrates content items presented in response to
specification of a content item category by a user. In particular,
in FIG. 3C, the user has selected the category labeled "MLB"
displayed in the category section 312 of FIG. 3B. In response, the
category section 306 of the Web page 302 is updated to present news
items that are about or in some manner reference the category Major
League Baseball.
[0043] Although the category-based content recommendation
techniques of FIGS. 3A-3C have been described primarily with
reference to Web-based technologies, the described techniques are
equally applicable in other contexts. For example, category-based
content recommendation may be performed in the mobile computing
context, such as via a newsreader application/module or other type
of code module that is configured to execute on a mobile device
(e.g., a smart phone) in order to present news or other content
items for consumption by a user.
4. Entity Identification and Category Aggregation in an Example
Embodiment
[0044] FIGS. 4A-4D illustrate example data processed and/or
utilized by an example embodiment. In particular, FIGS. 4A-4D
illustrate various types of data used to support a running example
of entity and category identification and aggregation performed by
an example embodiment of a content recommendation system.
[0045] FIGS. 4A and 4B show a representation of two entities. In
particular, FIGS. 4A and 4B illustrate XML-based representations of
a basketball player entity named Martell Webster and a basketball
team entity named the Portland Trailblazers, respectively. In FIG.
4A, Martell Webster is represented by structure 400, which includes
a facets section 402, a name section 404, a properties section 406,
and a type section 408. The facets section 402 represents one or
more facets/categories, each of which includes a facet name (e.g.,
Basketball Player) and a taxonomic path, which is a path in a
taxonomic tree or other type semantic graph. An example taxonomic
graph is described with respect to FIG. 4D, below. The name section
404 represents a name (e.g., "Martell Webster") for the illustrated
entity. The properties section 406 represents one or more
properties of the entity, which are name-value pairs that describe
some aspect of the entity. In this example, the properties are
birth_date=Dec. 4, 1986 and sports_league=NBA. The type section 408
indicates a "top level" category to which the entity belongs, in
this case PERSON.
[0046] In FIG. 4B, the Portland Trailblazers team is represented by
a structure 410, which includes a facets section 412, a name
section 414, a properties section 416, and a type section 418. The
sections 412-418 include, represent, or indicate data of types
similar to those described with respect to sections 402-408 of FIG.
4A. Here, the entity has a facet/category of Basketball Team
(section 412), a name of "Portland Trail Blazers" (section 414),
properties of sports_league=NBA and number_championships=3 (section
416), and a type of ORGANIZATION (section 418). As discussed above,
entities such as the ones described with respect to FIGS. 4A and 4B
may be stored in an entity repository, such as the entity store
217b of FIG. 2.
[0047] FIG. 4C illustrates an example content item. In particular,
FIG. 4C illustrates a news item 420, which is a news story about a
basketball game between the Portland Trailblazers and the Los
Angeles Lakers. The news item 420 includes entity references
422a-422g. The CRS processes the text of the news item 420,
recognizes the entity references 422a-422g, and determines (e.g.,
links) the references to corresponding entities stored in the
entity store. For example, references 422a, 422d, and 422f are
linked to the Portland Trailblazers entity described with respect
to FIG. 4B; references 422b and 422g are linked to a Los Angeles
Lakers entity; reference 422c is linked to the Martell Webster
entity described with respect to FIG. 4A; and reference 422d is
linked to a Staples Center entity.
[0048] Next, the CRS ranks the tagged entities by their importance
and relevance to the main subject of the content item. The ranking
may be based on one or more of the following factors: number of
mentions (e.g., references) of each entity in the text; positions
of the mentions in the text (e.g., entities appearing in document
title may be weighted more; entities appearing earlier in the text
would be weighted more than the ones appearing later in the text;
entities appearing in boilerplate text may be weighted less); and
penalties to certain types of entities (e.g., if the publisher of
the document appears in the text, it may be weighted less).
[0049] FIG. 4D a portion of an example taxonomic tree. In
particular, FIG. 4D illustrates a taxonomic graph 430. The
illustrated taxonomic graph 430 is a tree that represents a
hierarchy of categories that each have zero or more child
categories connected via an arc or link representing a relation.
The hierarchy begins with a unique root category (here labeled
"Evri") 432, which has child categories 434a-434c, respectively
labeled Organization, Person, and Location. Category 434a has child
category 436a, which in turn has child category 438a. Portions of
the graph 430 that are not shown are illustrated by ellipses, such
as ellipses 450. FIG. 4D also illustrates entities 440a-440e,
linked to their respective categories (e.g., via an is-a relation).
For example, entities 440a (Trail Blazers) and 440b (Lakers) are
Basketball Teams (438a). Although the illustrated graph 430 is a
tree in the illustrated embodiment, in other embodiments other
graph structures may be utilized, including general directed or
undirected graphs.
[0050] Nodes in the graph 430 also have associated levels, where
the root is at the first level, categories at the level of category
434a are at the second level, categories at the level of category
436a are at the third level, and so on. When levels are counted
starting from one, the level of a category is defined as one plus
the number of arcs/links that must be traversed to reach the root
category.
[0051] A taxonomic path is a path between one category and another
in the graph 430. For example, the path connecting categories 432,
434a, 436a, and 438a form a taxonomic path that specifies the
Basketball Team category as well as all of its ancestor categories
up to the root of the graph 430. The path connecting categories
432, 434a, 436a, and 438a, may also be denoted textually as:
Evri/Organization/Sports/Basketball_Team.
[0052] In the processing of the example content item shown in FIG.
4C, a resulting ranked list of entities (in non-increasing order),
along with their respective taxonomic paths, may be:
1. Portland Trail Blazers
[Evri/Organization/Sports/Basketball_Team]
2. Los Angeles Lakers
[Evri/Organization/Sports/Basketball_Team]
3. Martell Webster
[Evri/Person/Sports/Athlete/Basketball_Player]
4. Staples Center [Evri/Location/Sports/Sports_Venue]
[0053] In the illustrated example, the above ranking results due to
the relative number of mentions of the entities in the news item of
FIG. 4C. In particular, the Portland Trail Blazers are mentioned
three times, the Los Angeles Lakers and Martell Webster are each
mentioned twice, and the Staples Center is mentioned once.
[0054] In the next step, the CRS assigns categories to the content
item, based on the ranked list of entities. The CRS takes the top K
entities from the ranked list. In one implementation, K=5. By
taking the top K entities, the CRS includes only the entities that
are relatively important and relevant to the document. Then, the
CRS derives categories by aggregating the common nodes in the
taxonomic paths of the top entities, as well as their properties,
as described below.
[0055] First, the CRS counts the third-level nodes in the taxonomic
paths, which correspond to the major topic domains (e.g., Politics,
Entertainment, Sports, Business, Technology, Heath, Food, etc.). In
FIG. 4D, these are categories at the level of category 436a (e.g.,
Sports, Business, Health). The CRS then ranks the topic domains by
their frequency. Next, the CRS takes the top two highest ranked
topic domains and assigns them as category to the document. In the
above example, all the entity taxonomic paths share a common
top-level node [Sports]. Therefore, the CRS assigns the category
"Sports" to the given document.
[0056] Second, the CRS ranks the leaf nodes (facets) of the
taxonomic path, based on the number of entities having the facet
and/or the rank of the entity in the ranked entity list. In the
above example, the ranked list of facets would be: (1) Basketball
Team (because the Trail Blazers and Lakers are both basketball
teams), (2) Basketball Player (because Martell Webster is a
basketball player), and (3) Sports Venue (because the Staples
Center is a sports venue). Those facets would be assigned to the
document as facet categories.
[0057] Other or additional processing may also be performed. For
example, any levels or individual nodes/paths in the taxonomy may
be selected as a category, and the same entity aggregation process
can then be applied. For example, the CRS may assign a category
"entertainment_people" by aggregating entities that share taxonomic
path [Evri/Person/Entertainment]. Similarly, by aggregating on path
[Evri/Person/Sports/Athlete], the CRS would create an "athletes"
category that covers players in all kinds of sports.
[0058] Besides nodes/paths in the taxonomy, the CRS may also
support configurable categories based on entity properties. This
allows the CRS to create categories from any group of entities that
share a common property. A configuration is a set of key-value
pairs, where the key is a facet, and the value is a list of
properties to be checked. For example, a basketball player entity
may have the following configuration: Facet (key)=Basketball Player
and Properties (value)=Sports League.
[0059] During processing of a document, the CRS processes the list
of entities assigned to the content item. For each entity, the CRS
takes its facets, and performs a lookup against its configuration.
If there is a match, the CRS obtains the property list from the
configuration. Then, the CRS retrieves the entity's corresponding
entry from the entity store. The CRS then processes the entity's
properties available in the entity store, and determines if the
entity has the property specified in the configuration. If a match
is found, the CRS adds the property value as a potential
category.
[0060] For example, leaf nodes in the example taxonomy of FIG. 4D
are Basketball_Player and Basketball_Team. The CRS can assign finer
granularity categories (e.g., NBA basketball, NCAA college
basketball, FIBA international basketball), by using a property
configuration. As shown above in FIGS. 4A and 4B, basketball
players and teams have a property "Sports League" in the
Entity-Store. In our example, the entities are: [0061] Portland
Trail Blazers--Sports_League=NBA [0062] Los Angeles
Lakers--Sports_League=NBA [0063] Martell
Webster--Sports_League=NBA
[0064] Again, by aggregating the specified properties from the
ranked list of entities, the CRS extracts the top categories (NBA
basketball in this case), and assigns them to the content item, as
discussed further below.
[0065] As described above, in one embodiment, certain categories
are always detected by default, while others can be specified
through a configuration. To decide what categories to populate in
the index, human curators may select the categories manually based
on their knowledge of popular topics in the news as well as
scheduled events (e.g., Oscars Academy Award, March madness college
basketball). Another approach includes automated popularity ranking
and detection of emerging categories, by looking at popularity of
individual entities and aggregating to the category level. The
sources of entity popularity may include one or more of: [0066]
Frequency counts in an index of news articles, as well as a
corresponding timeline used in order to detect emerging entities
that have rising popularity. [0067] User clicks on entities. [0068]
Wikipedia page view counts (e.g., Wikipedia traffic statistics on
an hourly basis are publicly available from sources such as
http://stats.grok.se). [0069] Number of mentions in Tweets or other
social media messages, obtained through the Twitter API, for
example. [0070] Popular/trending queries from search engines such
as Google and Yahoo.
5. Category Indexing in an Example Embodiment
[0071] In one embodiment, for the underlying information retrieval
capability, the CRS uses a typical Vector Space Model ("VSM") based
system. An example of such systems is Apache Lucene. The vector
space model procedure can be divided in to three stages. The first
stage includes document indexing where content bearing terms are
extracted from content item text and indexed/stored. The second
stage includes weighting of the indexed terms to enhance retrieval
of content items relevant to a user. A common weighting scheme for
terms within a content item is based on the frequency of term
occurrence. The last stage includes ranking the content items with
respect to a query according to a similarity measure.
[0072] In one embodiment, the CRS creates a special term for each
category that is to be assigned to a content item in the index. As
discussed above, during the indexing of a content item, the CRS
identifies the top K entities in the content item, collects the
facets assigned to the top entities, and then annotate the content
item with those facets using special tokens (facet.basketball.team
for the category/facet Basketball_Team). The tokens are treated as
single terms in the index. During search time, given a facet
category Basketball_Team as input, the CRS translates it into a
query term "facet.basketball.team." Content items containing the
query term can then be located and returned.
[0073] The CRS may retrieve and rank content items in the index by
determining how relevant a given content item is to a user's query.
In one embodiment, the more times a query term appears in a content
item relative to the number of times the term appears in all the
content items in the collection, the more relevant that content
item is to the query. This is accomplished by using TF-IDF (term
frequency-inverse document frequency) weighting in the scoring of
content items. As noted above, the CRS creates artificial tokens
for the categories extracted from the content item. These tokens
are thus not terms originally appearing in the content item text.
However, the CRS can simulate the TF weights on the category
tokens, by controlling how many times each token is added to the
index. The frequency may be determined based on the importance
measure of the categories that are computed when ranking the
categories. Another option to use a binary document vector (e.g.,
true/false to indicate whether the document is assigned a
particular category). With this approach, the CRS takes the top K
categories from the document, and consider them as equally
important, such that each category token is added to the index
once.
[0074] In addition, some embodiments can influence search results
by "boosting." The CRS may apply document level boosting, by
specifying a boost value for a content item as it is added to the
index. The boost value for each content item is computed as a
combination of the item's source credibility (e.g., articles from
more credible or popular sources are weighted more) and publishing
date (e.g., fresher or more recent articles are weighted more).
[0075] The CRS may be configured to retrieve recently published
content items from credible sources. In order to do so, the CRS may
assign to each content item source a credibility score (e.g., 1 to
5), which is translated into a credibility weight. Source
credibility can be assigned manually and/or computed based on some
properties of a source (e.g., search engine rank of a source web
page, Internet traffic to the source web page, etc.). Credibility
weight can then be multiplied by recency weight to form a boost
value for a content item. Recency weight may be based on the
difference between the publishing date of a document and the date
when ingestion started.
6. Category-Based Content Item Retrieval
[0076] In one embodiment, for a given category, the CRS returns a
list of relevant and recent content items that are associated with
the category in the index. The relevance ranking is based on
factors such as: query matching, based on TF-IDF weighting as
described above; source credibility; and/or publication date.
[0077] In one embodiment, the CRS generates a news stream for a
given category by providing popular, fresh, and or breaking news
items that are associated with the category. Popular or breaking
news stories tend to be covered by multiple sources, get updated
more frequently, and have more follow-up stories. Thus, the CRS may
capture popular stories by determining its coverage in terms of the
number of similar articles.
[0078] After retrieving a list of relevant news articles, the CRS
may collapse the similar articles that cover the same topic into a
group. The similarity between two articles is computed based on one
or more of: distance between document signatures computed during
index; overlap between article titles; overlap between article
summaries; source URLs; and/or publisher. If the similarity measure
exceeds some threshold, then two articles are considered as
similar.
[0079] In one embodiment, the CRS detects similar documents by
computing a signature (e.g., a hash key of fixed length) of a
document summary. A document summary is a snippet of the document
text that best represents the document subject and best matches the
search query. To determine a document summary, the CRS may scan
through the document text, and select a snippet of a pre-determined
window size, by maximizing a combination of the following measures:
the density of the document's top entities appearing in the snippet
and overlap of the words in the snippet with the words in the
document title.
[0080] In one embodiment, the logic for determining whether
articles A and B are similar is as follows: if the article URLs are
identical, return true; else if the Hamming distance between the
two article signatures is lower than a pre-determined threshold,
return true; else if overlap between article titles is higher than
a threshold, and overlap between article summaries is higher than a
threshold, return true; else, return false.
[0081] By using the above logic, articles that cover the same story
are grouped together. In one embodiment, each group contains a head
article, and underneath is zero or more similar articles. Article
groups may then be ranked by various factors, including one or more
of: the number of articles in each group (e.g., the larger the
group size, usually the more popular the story is); publication
dates of the articles, preferring recently published articles;
and/or source diversity of the articles, preferring stories covered
by many different sources.
[0082] As discussed above, some embodiments of the CRS may also
determine popular, trending, or recent entities for a given
category. In one embodiment, in addition to retrieving news
articles, the CRS also produces a summary list of entities/concepts
that are most popular at a current time for the given category. The
popular entities may be extracted and ranked based on entity
occurrences in the top articles returned for the given category. In
one embodiment, the CRS iterates through the top articles in a
result set, takes the top entities from each article (top entities
for each article are stored in the index), and aggregates the
occurrence frequency of each entity. Popular entities may be
further extracted and ranked based on entity popularity scores in
an entity store. From the entity store, the CRS may retrieve a list
of entities that belong to the specified category, ranked by their
scores. The score for each entity may be computed based on the
total number of recent articles (in the content store) that mention
the entity and/or user visit traffic to the entity's page (e.g.,
via the CRS and/or external sites such as Wikipedia).
7. Third-Party Content Retrieval
[0083] As noted above, the CRS may be configured to return, in
response to a search or other request, indications of content items
from external (e.g., third-party) sources. Third-party sources may
include or provide content items of various media types (e.g.,
images, videos, audio, social media messages), some of which may
not be indexed by the CRS. The CRS may be configured to retrieve
results via external APIs or other retrieval facilities provided by
the third-party sources. In some cases, a third-party source may
not have or utilize the same category-based approach used by the
CRS. In such cases, the CRS may translate categories used in the
CRS to an approximation query that would retrieve from the
third-party source content items similar to those that could be
retrieved via the CRS itself. In one embodiment, categories may be
translated into keywords used as part of a search query. However,
such an approach may not provide good result coverage. This problem
may be exacerbated for certain media types, such as images, videos,
and social media messages (e.g., tweets), where the textual content
is typically very short. For example, using keyword query "NBA
Basketball" may not find videos or tweets that are about
championship games between the Los Angeles Lakers and Boston
Celtics, where the words "NBA" and "basketball" are not mentioned
in the text, even though such content items are clearly related to
NBA Basketball.
[0084] In another approach, for a given category, the CRS generates
a keyword query where the keywords are based on the entities
related to the given category. In particular, the CRS takes the top
entities (e.g., most popular and recent) within the category, and
uses the names and/or aliases of such entities to construct keyword
queries against the third-party service. Thus, if the category is
NBA Basketball, the CRS may construct a query that includes names
of multiple (e.g., five) popular NBA Basketball entities, such as
the Los Angeles Lakers, Boston Celtics, LeBron James, and the like.
Queries may be enhanced using techniques similar to those mentioned
in U.S. Patent Application No. 61/256,851, filed Oct. 30, 2009, and
entitled "IMPROVING KEYWORD-BASED SEARCH ENGINE RESULTS USING
ENHANCED QUERY STRATEGIES," incorporated herein by reference in its
entirety.
[0085] In addition, in some cases third-party sources may use
descriptors or other indicators (e.g., tags) that can be mapped,
translated, or otherwise related to categories utilized in the CRS.
For example, a video sharing service may have "channels" or other
higher-level grouping constructs that can be mapped (manually or
automatically) to CRS categories. As another example, a social
messaging service (e.g., Twitter) may provide streams from credible
sources that can be related to one or more CRS categories. In
general, such mappings may be compiled or generated through
automated discovery and/or manual curation. Once a mapping has been
established, the CRS can generate a query for a third-party source
by translating an indicated category into a corresponding
descriptor used by the third-party source.
8. Example Computing System and Processes
[0086] FIG. 5 is an example block diagram of an example computing
system for implementing a content recommendation system according
to an example embodiment. In particular, FIG. 5 shows a computing
system 500 that may be utilized to implement a content
recommendation system 510.
[0087] Note that one or more general purpose or special purpose
computing systems/devices may be used to implement the content
recommendation system 510. In addition, the computing system 500
may comprise one or more distinct computing systems/devices and may
span distributed locations. Furthermore, each block shown may
represent one or more such blocks as appropriate to a specific
embodiment or may be combined with other blocks. Also, the content
recommendation system 510 may be implemented in software, hardware,
firmware, or in some combination to achieve the capabilities
described herein.
[0088] In the embodiment shown, computing system 500 comprises a
computer memory ("memory") 501, a display 502, one or more Central
Processing Units ("CPU") 503, Input/Output devices 504 (e.g.,
keyboard, mouse, CRT or LCD display, and the like), other
computer-readable media 505, and network connections 506. The
content recommendation system 510 is shown residing in memory 501.
In other embodiments, some portion of the contents, some or all of
the components of the content recommendation system 510 may be
stored on and/or transmitted over the other computer-readable media
505. The components of the content recommendation system 510
preferably execute on one or more CPUs 503 and recommend content
items, as described herein. Other code or programs 530 (e.g., an
administrative interface, a Web server, and the like) and
potentially other data repositories, such as data repository 520,
also reside in the memory 501, and preferably execute on one or
more CPUs 503. Of note, one or more of the components in FIG. 5 may
not be present in any specific implementation. For example, some
embodiments may not provide other computer readable media 505 or a
display 502.
[0089] The content recommendation system 510 interacts via the
network 550 with content sources 555, third-party applications 565,
and client computing devices 560. The network 550 may be any
combination of media (e.g., twisted pair, coaxial, fiber optic,
radio frequency), hardware (e.g., routers, switches, repeaters,
transceivers), and protocols (e.g., TCP/IP, UDP, Ethernet, Wi-Fi,
WiMAX) that facilitate communication between remotely situated
humans and/or devices. The devices 560 include desktop computers,
notebook computers, mobile phones, smart phones, tablet computers,
personal digital assistants, and the like.
[0090] In a typical embodiment, the content recommendation system
510 includes a content ingester 511, an entity and relationship
identifier 512, a category identifier 513, a user interface manager
515, a content recommendation system application program interface
("API") 516, and a data store 517. The modules 511-514 respectively
perform functions such as those described with reference to modules
211-214 of FIG. 2. The content ingester 511, entity and
relationship identifier 512, user interface manager 515, and API
516 are drawn in dashed lines to indicate that in other
embodiments, functions performed by one or more of these components
may be performed externally to the content recommendation system
510. For example, a separate content indexing and search system may
host the content ingester 511, entity and relationship identifier
512, and at least some of the data store 517.
[0091] The UI manager 515 provides a view and a controller that
facilitate user interaction with the content recommendation system
510 and its various components. For example, the UI manager 515 may
provide interactive access to the content recommendation system
510, such that users can search for content items related to
specified categories. In some embodiments, access to the
functionality of the UI manager 515 may be provided via a Web
server, possibly executing as one of the other programs 530. In
such embodiments, a user operating a Web browser executing on one
of the client devices 560 can interact with the content
recommendation system 510 via the UI manager 515. For example, a
user may manually submit a search for content items related to a
specified category.
[0092] The API 516 provides programmatic access to one or more
functions of the content recommendation system 510. For example,
the API 516 may provide a programmatic interface to one or more
functions of the content recommendation system 510 that may be
invoked by one of the other programs 530 or some other module. In
this manner, the API 516 facilitates the development of third-party
software, such as user interfaces, plug-ins, news feeds, adapters
(e.g., for integrating functions of the content recommendation
system 510 into Web applications), and the like.
[0093] In addition, the API 516 may be in at least some embodiments
invoked or otherwise accessed via remote entities, such as code
executing on one of the client devices 560 or as part of one of the
third-party applications 565, to access various functions of the
content recommendation system 510. For example, an application on a
mobile device may obtain recommended content items for a specified
category via the API 516. As another example, one of the content
sources 555 may push content information to the content
recommendation system 510 via the API 516. The API 516 may also be
configured to provide recommendation widgets (e.g., code modules)
that can be integrated into the third-party applications 565 and
that are configured to interact with the content recommendation
system 510 to make at least some of the described functionality
available within the context of other applications.
[0094] The data store 517 is used by the other modules of the
content recommendation system 510 to store and/or communicate
information. In particular, modules 511-516 may use the data store
517 to record various types of information, including semantic
information about content items, such as entities, categories, and
relationships. Although the modules 511-516 are described as
communicating primarily through the data store 517, other
communication mechanisms are contemplated, including message
passing, function calls, pipes, sockets, shared memory, and the
like.
[0095] In an example embodiment, components/modules of the content
recommendation system 510 are implemented using standard
programming techniques. For example, the content recommendation
system 510 may be implemented as a "native" executable running on
the CPU 503, along with one or more static or dynamic libraries. In
other embodiments, the content recommendation system 510 may be
implemented as instructions processed by a virtual machine that
executes as one of the other programs 530. In general, a range of
programming languages known in the art may be employed for
implementing such example embodiments, including representative
implementations of various programming language paradigms,
including but not limited to, object-oriented (e.g., Java, C++, C#,
Visual Basic.NET, Smalltalk, and the like), functional (e.g., ML,
Lisp, Scheme, and the like), procedural (e.g., C, Pascal, Ada,
Modula, and the like), scripting (e.g., Perl, Ruby, Python,
JavaScript, VBScript, and the like), and declarative (e.g., SQL,
Prolog, and the like).
[0096] The embodiments described above may also use either
well-known or proprietary synchronous or asynchronous client-server
computing techniques. Also, the various components may be
implemented using more monolithic programming techniques, for
example, as an executable running on a single CPU computer system,
or alternatively decomposed using a variety of structuring
techniques known in the art, including but not limited to,
multiprogramming, multithreading, client-server, or peer-to-peer,
running on one or more computer systems each having one or more
CPUs. Some embodiments may execute concurrently and asynchronously,
and communicate using message passing techniques. Equivalent
synchronous embodiments are also supported. Also, other functions
could be implemented and/or performed by each component/module, and
in different orders, and by different components/modules, yet still
achieve the described functions.
[0097] In addition, programming interfaces to the data stored as
part of the content recommendation system 510, such as in the data
store 517, can be available by standard mechanisms such as through
C, C++, C#, and Java APIs; libraries for accessing files,
databases, or other data repositories; through scripting languages
such as XML; or through Web servers, FTP servers, or other types of
servers providing access to stored data. The data store 517 may be
implemented as one or more database systems, file systems, or any
other technique for storing such information, or any combination of
the above, including implementations using distributed computing
techniques.
[0098] Different configurations and locations of programs and data
are contemplated for use with techniques of described herein. A
variety of distributed computing techniques are appropriate for
implementing the components of the illustrated embodiments in a
distributed manner including but not limited to TCP/IP sockets,
RPC, RMI, HTTP, Web Services (XML-RPC, JAX-RPC, SOAP, and the
like). Other variations are possible. Also, other functionality
could be provided by each component/module, or existing
functionality could be distributed amongst the components/modules
in different ways, yet still achieve the functions described
herein.
[0099] Furthermore, in some embodiments, some or all of the
components of the content recommendation system 510 may be
implemented or provided in other manners, such as at least
partially in firmware and/or hardware, including, but not limited
to one or more application-specific integrated circuits ("ASICs"),
standard integrated circuits, controllers executing appropriate
instructions, and including microcontrollers and/or embedded
controllers, field-programmable gate arrays ("FPGAs"), complex
programmable logic devices ("CPLDs"), and the like. Some or all of
the system components and/or data structures may also be stored as
contents (e.g., as executable or other machine-readable software
instructions or structured data) on a computer-readable medium
(e.g., as a hard disk; a memory; a computer network or cellular
wireless network or other data transmission medium; or a portable
media article to be read by an appropriate drive or via an
appropriate connection, such as a DVD or flash memory device) so as
to enable or configure the computer-readable medium and/or one or
more associated computing systems or devices to execute or
otherwise use or provide the contents to perform at least some of
the described techniques. Some or all of the components and/or data
structures may be stored on tangible, non-transitory storage
mediums. Some or all of the system components and data structures
may also be stored as data signals (e.g., by being encoded as part
of a carrier wave or included as part of an analog or digital
propagated signal) on a variety of computer-readable transmission
mediums, which are then transmitted, including across
wireless-based and wired/cable-based mediums, and may take a
variety of forms (e.g., as part of a single or multiplexed analog
signal, or as multiple discrete digital packets or frames). Such
computer program products may also take other forms in other
embodiments. Accordingly, embodiments of this disclosure may be
practiced with other computer system configurations.
[0100] FIG. 6 is an example flow diagram of a content indexer
process performed by an example embodiment. In particular, FIG. 6
illustrates a process that may be implemented by, for example, one
or more elements of the content recommendation system 200, such as
the content ingester 211, entity and relationship identifier 212,
and the category identifier 213, described with reference to FIG.
2. The process indexes content items by determining entities and
categories related to the indexed content items.
[0101] The illustrated process begins at block 602, where it
processes a content item to determine multiple entities referenced
by the content item. Determining the multiple entities may include
identifying entities referenced by the content item, each of the
determined entities being electronically represented by the content
recommendation system. Determining the multiple entities may
further include ranking the entities on factor such as the
number/quantity of mentions in the content item, the position of
the mentions of the entity in the content item, and/or penalties
based on the type of the entity.
[0102] At block 604, the process determines at least one category
that is associated with one of the multiple entities. The
determined at least one category may be part of a taxonomy stored
by the content recommendation system and may be associated with one
of the multiple corresponding entities referenced by the content
item, as determined at block 602. Determining the at least one
category may further include selecting a predetermined number of
highest ranked entities from entities ranked at block 602, and then
selecting and/or aggregating categories associated with the
selected entities.
[0103] At block 606, the process stores the determined multiple
entities and the determined at least one category. Storing the
determined entities and categories may include annotating the
content item (e.g., with a token that represents and entity or
category) in an index or other data structure that supports
efficient retrieval of content items.
[0104] At block 608, the process determines whether there are more
content items. If so, the process proceeds to block 602, else
returns.
[0105] FIG. 7 is an example flow diagram of a content recommender
process performed by an example embodiment. In particular, FIG. 7
illustrates a process that may be implemented by, for example, one
or more elements of the content recommendation system 200, such as
the content recommender 214, described with reference to FIG. 2.
The process provides content items that are related to a specified
category, such as by responding to a search query.
[0106] The process begins at block 702, where it receives an
indication of a category. In one embodiment, receiving the
indication of the category includes receiving a search
query/request that specifies the category.
[0107] At block 704, the process selects a content item that has a
corresponding category that matches the indicated category. The
corresponding category may be associated with one or more entities
that are referenced by the selected content item and that are part
of a taxonomy stored by the content recommendation system.
Selecting the content item may include ranking multiple content
items that reference the category, based on various factors, such
as term frequency, the number of times a category token was added
to the content item, a credibility score of the content item,
and/or a recency score of the content item.
[0108] At block 706, the process transmits an indication of the
selected content item. Transmitting the indication of the content
item may include transmitting an identifier (e.g., a URL) and/or
information about or from the content item (e.g., article title,
summary, text).
[0109] Some embodiments perform one or more operations/aspects in
addition to, or instead of, the ones described with reference to
the process of FIG. 7. For example, in one embodiment, after block
706, the process may return to block 702 to receive and process
additional category indications. In another embodiment, the process
may also aggregate multiple selected content items, such that
related content items are grouped together.
Example Entity Types
[0110] The following Table defines several example entity types in
an example embodiment. Other embodiments may incorporate different
types.
TABLE-US-00001 TABLE 1 Person Organization Location Concept Event
Product Condition Organism Substance
Example Facets
[0111] The following Table defines several example facets in an
example embodiment. Other embodiments may incorporate different
facets.
TABLE-US-00002 TABLE 2 PERSON actor Evri/Person/Entertainment/Actor
PERSON animator Evri/Person/Entertainment/Animator PERSON
cinematographer Evri/Person/Entertainment/Cinematographer PERSON
comedian Evri/Person/Entertainment/Comedian PERSON fashion_designer
Evri/Person/Entertainment/Fashion_Designer PERSON musician
Evri/Person/Entertainment/Musician PERSON composer
Evri/Person/Entertainment/Musician/Composer PERSON producer
Evri/Person/Entertainment/Producer PERSON director
Evri/Person/Entertainment/Director PERSON radio_personality
Evri/Person/Entertainment/Radio_Personality PERSON
television_personality
Evri/Person/Entertainment/Television_Personality PERSON author
Evri/Person/Entertainment/Author PERSON model
Evri/Person/Entertainment/Model PERSON screenwriter
Evri/Person/Entertainment/Screenwriter PERSON playwright
Evri/Person/Entertainment/Playwright PERSON conductor
Evri/Person/Entertainment/Conductor PRODUCT film
Evri/Product/Entertainment/Movie PRODUCT television_show
Evri/Product/Entertainment/Television_Show PRODUCT album
Evri/Product/Entertainment/Album PRODUCT musical
Evri/Product/Entertainment/Musical PRODUCT book
Evri/Product/Entertainment/Book PRODUCT newspaper
Evri/Product/Publication PERSON politician
Evri/Person/Politics/Politician PERSON cabinet_member
Evri/Person/Politics/Cabinet_Member PERSON government_person
Evri/Person/Politics/Government_Person PERSON
political_party_leader Evri/Person/Politics/Political_Party_Leader
PERSON judge Evri/Person/Politics/Judge PERSON country_leader
Evri/Person/Politics/Politician/World_Leader PERSON
joint_chiefs_of_staff
Evri/Person/Politics/Politician/Joint_Chiefs_of_Staff PERSON
white_house_staff Evri/Person/Politics/White_House_Staff PERSON
activist Evri/Person/Politics/Activist PERSON lobbyist
Evri/Person/Politics/Lobbyist PERSON ambassador
Evri/Person/Politics/Ambassador PERSON analyst Evri/Person/Analyst
PERSON journalist Evri/Person/Journalist PERSON blogger
Evri/Person/Blogger ORGANIZATION band
Evri/Organization/Entertainment/Band ORGANIZATION political_party
Evri/Organization/Politics/Political_Party ORGANIZATION
advocacy_group Evri/Organization/Politics/Advocacy_Group EVENT
film_award_ceremony Evri/Event/Entertainment/Film_Award_Ceremony
EVENT music_award_ceremony
Evri/Event/Entertainment/Music_Award_Ceremony EVENT
television_award_ceremony
Evri/Event/Entertainment/Television_Award_Ceremony EVENT court_case
Evri/Event/Politics/Court_Case ORGANIZATION television_network
Evri/Organization/Entertainment/Company/Television_Network
ORGANIZATION music_production_company
Evri/Organization/Entertainment/Company/Music_Production_Company
ORGANIZATION film_production_company
Evri/Organization/Entertainment/Company/Film_Production_Company
LOCATION congressional_district
Evri/Location/Politics/Congressional_District LOCATION
military_base Evri/Location/Politics/Military_Base ORGANIZATION
congressional_committee
Evri/Organization/Politics/Congressional_Committee ORGANIZATION
international_organization
Evri/Organization/Politics/International_Organization ORGANIZATION
government_agency Evri/Organization/Politics/Government_Agency
ORGANIZATION armed_force Evri/Organization/Politics/Armed_Force
ORGANIZATION terrorist_organization
Evri/Organization/Politics/Terrorist_Organization ORGANIZATION
us_court Evri/Organization/Politics/US_Court ORGANIZATION
cabinet_department Evri/Organization/Politics/Cabinet_Department
LOCATION continent Evri/Location/Continent LOCATION
geographic_region Evri/Location/Geographic_Region LOCATION country
Evri/Location/Country LOCATION province Evri/Location/Province
LOCATION state Evri/Location/State LOCATION city Evri/Location/City
LOCATION us_city Evri/Location/City LOCATION neighborhood
Evri/Location/Neighborhood LOCATION building
Evri/Location/Structure/Building LOCATION island
Evri/Location/Island LOCATION mountain Evri/Location/Mountain
LOCATION body_of_water Evri/Location/Body_of_Water ORGANIZATION
media_companyEvri/Organization/Entertainment/Company/Media_Company
ORGANIZATION haute_couture_house
Evri/Organization/Entertainment/Company/Haute_Couture_House
ORGANIZATION publishing_company
Evri/Organization/Entertainment/Company/Publishing_Company
ORGANIZATION entertainment_company
Evri/Organization/Entertainment/Company CONCEPT fictional_character
Evri/Concept/Entertainment/Fictional_Character PERSON
military_leader Evri/Person/Politics/Military_Leader PERSON
military_person Evri/Person/Politics/Military_Person EVENT
military_conflict Evri/Event/Politics/Military_Conflict PERSON
terrorist Evri/Person/Politics/Terrorist PERSON criminal
Evri/Person/Criminal PERSON explorer Evri/Person/Explorer PERSON
inventor Evri/Person/Technology/Inventor PERSON lawyer
Evri/Person/Lawyer PERSON artist Evri/Person/Artist PERSON painter
Evri/Person/Artist/Painter PERSON revolutionary
Evri/Person/Revolutionary PERSON spiritual_leader
Evri/Person/Spiritual_Leader PERSON philosopher
Evri/Person/Philosopher PERSON anthropologist
Evri/Person/Anthropologist PERSON architect Evri/Person/Architect
PERSON historian Evri/Person/Historian PERSON editor
Evri/Person/Editor PERSON astronaut Evri/Person/Astronaut PERSON
photographer Evri/Person/Photographer PERSON scientist
Evri/Person/Technology/Scientist PERSON economist
Evri/Person/Economist PERSON technology_person
Evri/Person/Technology/Technology_Person PERSON business_person
Evri/Person/Business/Business_Person PERSON stock_trader
Evri/Person/Business/Business_Person/Stock_Trader PERSON first_lady
Evri/Person/Politics/First_Lady ORGANIZATION us_state_legislature
Evri/Organization/Politics/Legislative_Body/State_Legislature
ORGANIZATION legislative_body
Evri/Organization/Politics/Legislative_Body ORGANIZATION
executive_body Evri/Organization/Politics/Executive_Body PERSON
team_owner Evri/Person/Sports/Team_Owner PERSON sports_announcer
Evri/Person/Sports/Sports_Announcer PERSON sports_executive
Evri/Person/Sports/Sports_Executive PERSON olympic_medalist
Evri/Person/Sports/Olympic_Medalist PERSON athlete
Evri/Person/Sports/Athlete PERSON coach Evri/Person/Sports/Coach
PERSON sports_official Evri/Person/Sports/Sports_Official PERSON
motorcycle_driver Evri/Person/Sports/Athlete/Motorcycle_Rider
PERSON race_car_driver Evri/Person/Sports/Athlete/Race_car_Driver
ORGANIZATION auto_racing_team
Evri/Organization/Sports/Auto_Racing_Team PERSON baseball_player
Evri/Person/Sports/Athlete/Baseball_Player ORGANIZATION
baseball_team Evri/Organization/Sports/Baseball_Team PERSON
basketball_player Evri/Person/Sports/Athlete/Basketball_Player
ORGANIZATION basketball_team
Evri/Organization/Sports/Basketball_Team PERSON football_player
Evri/Person/Sports/Athlete/Football_Player ORGANIZATION
football_team Evri/Organization/Sports/Football_Team PERSON
hockey_player Evri/Person/Sports/Athlete/Hockey_Player ORGANIZATION
hockey_team Evri/Organization/Sports/Hockey_Team PERSON
soccer_player Evri/Person/Sports/Athlete/Soccer_Player ORGANIZATION
soccer_team Evri/Organization/Sports/Soccer_Team ORGANIZATION
sports_league Evri/Organization/Sports/Sports_League PERSON
cricketer Evri/Person/Sports/Athlete/Cricketer ORGANIZATION
cricket_team Evri/Organization/Sports/Cricket_Team PERSON cyclist
Evri/Person/Sports/Athlete/Cyclist ORGANIZATION cycling_team
Evri/Organization/Sports/Cycling_Team PERSON volleyball_player
Evri/Person/Sports/Athlete/Volleyball_Player ORGANIZATION
volleyball_team Evri/Organization/Sports/Volleyball_Team PERSON
rugby_player Evri/Person/Sports/Athlete/Rugby_Player ORGANIZATION
rugby_team Evri/Organization/Sports/Rugby_Team PERSON boxer
Evri/Person/Sports/Athlete/Boxer PERSON diver
Evri/Person/Sports/Athlete/Diver PERSON golfer
Evri/Person/Sports/Athlete/Golfer PERSON gymnast
Evri/Person/Sports/Athlete/Gymnast PERSON figure_skater
Evri/Person/Sports/Athlete/Figure_Skater PERSON horse_racing_jockey
Evri/Person/Sports/Athlete/Horse_Racing_Jockey PERSON
lacrosse_player Evri/Person/Sports/Athlete/Lacrosse_Player
ORGANIZATION lacrosse_team Evri/Organization/Sports/Lacrosse_Team
PERSON rower Evri/Person/Sports/Athlete/Rower PERSON swimmer
Evri/Person/Sports/Athlete/Swimmer PERSON tennis_player
Evri/Person/Sports/Athlete/Tennis_Player PERSON
track_and_field_athlete
Evri/Person/Sports/Athlete/Track_and_Field_Athlete PERSON wrestler
Evri/Person/Sports/Athlete/Wrestler PERSON triathlete
Evri/Person/Sports/Athlete/Triathlete EVENT sports_competition
Evri/Event/Sports/Sports_Event/Sporting_Competition EVENT
sports_event Evri/Event/Sports/Sports_Event EVENT olympic_sport
Evri/Event/Sports/Olympic_Sports EVENT election
Evri/Event/Politics/Election LOCATION sports_venue
Evri/Location/Sports/Sports_Venue ORGANIZATION sports_division
Evri/Organization/Sports/Sports_Division ORGANIZATION
sports_event_promotion_company
Evri/Organization/Sports/Sports_Event_Promotion_Company
ORGANIZATION sports_organization
Evri/Organization/Sports/Sports_Organization ORGANIZATION company
Evri/Organization/Business/Company ORGANIZATION news_agency
Evri/Organization/Business/Company/News_Agency PRODUCT cell_phone
Evri/Product/Technology/Cell_Phone PRODUCT computer
Evri/Product/Technology/Computer PRODUCT software
Evri/Product/Technology/Software PRODUCT video_game
Evri/Product/Technology/Software/Video_Game PRODUCT video_game
console Evri/Product/Technology/Video_Game_Console PRODUCT
media_player Evri/Product/Technology/Media_player ORGANIZATION
website Evri/Organization/Technology/Website ORGANIZATION
technology_company Evri/Organization/Technology/Company PRODUCT
magazine Evri/Product/Publication ORGANIZATION
financial_services_company
Evri/Organization/Business/Company/Financial_Services_Company
ORGANIZATION radio_network
Evri/Organization/Entertainment/Company/Radio_Network ORGANIZATION
futures_exchange Evri/Organization/Business/Futures_Exchange
ORGANIZATION stock_exchange
Evri/Organization/Business/Stock_Exchange ORGANIZATION
government_sponsored_enterprise
Evri/Organization/Politics/Government_Sponsored_Enterprise
ORGANIZATION political_organization
Evri/Organization/Politics/Political_organization ORGANIZATION
labor_union Evri/Organization/Politics/Labor_Union ORGANIZATION
nonprofit_corporation
Evri/Organization/Business/Company/Nonprofit_Corporation
ORGANIZATION nonprofit_organization
Evri/Organization/Nonprofit_Organization ORGANIZATION
national_laboratory Evri/Organization/Politics/National_Laboratory
ORGANIZATION unified_combatant_commands
Evri/Organization/Politics/Unified_Combatant_Commands ORGANIZATION
research_institute Evri/Organization/Research_Institute CONCEPT
stock_market_index Evri/Concept/Business/Stock_Market_Index PERSON
business_executive
Evri/Person/Business/Business_Person/Business_Executive PERSON
corporate_director
Evri/Person/Business/Business_Person/Corporate_Director PERSON
banker Evri/Person/Business/Business_Person/Banker PERSON publisher
Evri/Person/Business/Business_Person/Publisher PERSON us_politician
Evri/Person/Politics/U.S._Politician PERSON nobel_laureate
Evri/Person/Nobel_Laureate PERSON chemist Evri/Person/Chemist
PERSON physicist Evri/Person/Physicist ORGANIZATION
business_organization
Evri/Organization/Business/Business_Organization ORGANIZATION
consumer_organization
Evri/Organization/Business/Consumer_Organization ORGANIZATION
professional_association
Evri/Organization/Business/Professional_Association PERSON investor
Evri/Person/Business/Business_Person/Investor PERSON financier
Evri/Person/Business/Business_Person/Financier PERSON money_manager
Evri/Person/Business/Business_Person/Money_Manager ORGANIZATION
aerospace_company
Evri/Organization/Business/Company/Aerospace_Company ORGANIZATION
advertising_agency
Evri/Organization/Business/Company/Advertising_Company ORGANIZATION
agriculture_company
Evri/Organization/Business/Company/Agriculture_Company ORGANIZATION
airline Evri/Organization/Business/Company/Airline ORGANIZATION
architecture_firm
Evri/Organization/Business/Company/Architecture_Firm ORGANIZATION
automotive_company
Evri/Organization/Business/Company/Automotive_Company ORGANIZATION
chemical_company
Evri/Organization/Business/Company/Chemical_Company ORGANIZATION
clothing_company
Evri/Organization/Business/Company/Clothing_Company ORGANIZATION
consulting_company
Evri/Organization/Business/Company/Consulting_Company ORGANIZATION
cosmetics_company
Evri/Organization/Business/Company/Cosmetics_Company ORGANIZATION
defense_company Evri/Organization/Business/Company/Defense_Company
ORGANIZATION distribution_company
Evri/Organization/Business/Company/Distribution_Company
ORGANIZATION gaming_company
Evri/Organization/Business/Company/Gaming_Company ORGANIZATION
electronics_company
Evri/Organization/Business/Company/Electronics_Company ORGANIZATION
energy_company Evri/Organization/Business/Company/Energy_Company
ORGANIZATION hospitality_company
Evri/Organization/Business/Company/Hospitality_Company ORGANIZATION
insurance_company
Evri/Organization/Business/Company/Insurance_Company ORGANIZATION
law_firm Evri/Organization/Business/Company/Law_Firm ORGANIZATION
manufacturing_company
Evri/Organization/Business/Company/Manufacturing_Company
ORGANIZATION mining_company
Evri/Organization/Business/Company/Mining_Company ORGANIZATION
pharmaceutical_company
Evri/Organization/Business/Company/Pharmaceutical_Company
ORGANIZATION railway_company
Evri/Organization/Business/Company/Railway ORGANIZATION
real_estate_company
Evri/Organization/Business/Company/Real_Estate_Company ORGANIZATION
retailer Evri/Organization/Business/Company/Retailer ORGANIZATION
shipping_company
Evri/Organization/Business/Company/Shipping_Company ORGANIZATION
software_company
Evri/Organization/Technology/Company/Software_Company ORGANIZATION
steel_company Evri/Organization/Business/Company/Steel_Company
ORGANIZATION telecommunications_company
Evri/Organization/Business/Company/Telecommunications_Company
ORGANIZATION utilities_company
Evri/Organization/Business/Company/Utilities_Company ORGANIZATION
wholesaler Evri/Organization/Business/Company/Wholesaler
ORGANIZATION television_production_company
Evri/Organization/Entertainment/Company/Television_Production_Company
ORGANIZATION food_company
Evri/Organization/Business/Company/Food_Company ORGANIZATION
beverage_company
Evri/Organization/Business/Company/Food_Company/Beverage_Company
ORGANIZATION restaurant
Evri/Organization/Business/Company/Food_Company/Restaurant
ORGANIZATION winery
Evri/Organization/Business/Company/Food_Company/Beverage_Company
EVENT film_festival Evri/Event/Entertainment/Film_Festival
ORGANIZATION film_festival Evri/Event/Entertainment/Film_Festival
PRODUCT anime Evri/Product/Entertainment/Anime PRODUCT aircraft
Evri/Product/Aircraft PRODUCT military_aircraft
Evri/Product/Aircraft/Military_Aircraft PRODUCT vehicle
Evri/Product/Vehicle PRODUCT ballet
Evri/Product/Entertainment/Ballet PRODUCT opera
Evri/Product/Entertainment/Opera PRODUCT painting
Evri/Product/Entertainment/Painting PRODUCT song
Evri/Product/Entertainment/Single EVENT technology_conference
Evri/Event/Technology/Technology_Conference CONCEPT legislation
Evri/Concept/Politics/Legislation CONCEPT treaty
Evri/Concept/Politics/Treaty ORGANIZATION trade_association
Evri/Organization/Business/Trade_Association ORGANIZATION
technology_organization
Evri/Organization/Technology/Technology_Organization ORGANIZATION
educational_institution Evri/Organization/Educational_Institution
LOCATION museum Evri/Location/Structure/Building/Museum LOCATION
religious_building
Evri/Location/Structure/Building/Religious_Building PERSON
astronomer Evri/Person/Astronomer PERSON mathematician
Evri/Person/Mathematician PERSON academic Evri/Person/Academic
PERSON dancer Evri/Person/Entertainment/Dancer PRODUCT play
Evri/Product/Entertainment/Play LOCATION botanical_garden
Evri/Location/Botanical_Garden LOCATION hospital
Evri/Location/Health/Hospital PERSON psychiatrist
Evri/Person/Health/Psychiatrist PERSON physician
Evri/Person/Health/Physician PERSON nurse Evri/Person/Health/Nurse
ORGANIZATION journalism_organization
Evri/Organization/Journalism_Organization ORGANIZATION
healthcare_company
Evri/Organization/Business/Company/Healthcare_Company ORGANIZATION
religious_organization Evri/Organization/Religious_Organization
PERSON biologist Evri/Person/Scientist/Biologist PERSON biochemist
Evri/Person/Scientist/Biochemist PERSON botanist
Evri/Person/Scientist/Botanist PERSON poet
Evri/Person/Entertainment/Author/Poet PERSON curler
Evri/Person/Sports/Athlete/Curler PERSON biathlete
Evri/Person/Sports/Athlete/Biathlete PERSON alpine_skier
Evri/Person/Sports/Athlete/Alpine_Skier PERSON cross-country_skier
Evri/Person/Sports/Athlete/Cross-country_Skier PERSON
freestyle_skier Evri/Person/Sports/Athlete/Freestyle_Skier PERSON
luger Evri/Person/Sports/Athlete/Luger PERSON nordic_combined_skier
Evri/Person/Sports/Athlete/Nordic_Combined_Skier PERSON
speed_skater Evri/Person/Sports/Athlete/Speed_Skater PERSON
skeleton_racer Evri/Person/Sports/Athlete/Skeleton_Racer PERSON
ski_jumper Evri/Person/Sports/Athlete/Ski_Jumper PERSON snowboarder
Evri/Person/Sports/Athlete/Snowboarder PERSON bobsledder
Evri/Person/Sports/Athlete/Bobsledder PERSON bodybuilder
Evri/Person/Sports/Athlete/Bodybuilder PERSON equestrian
Evri/Person/Sports/Athlete/Equestrian PERSON fencer
Evri/Person/Sports/Athlete/Fencer PERSON hurler
Evri/Person/Sports/Athlete/Hurler PERSON martial_artist
Evri/Person/Sports/Athlete/Martial_Artist PERSON canoer
Evri/Person/Sports/Athlete/Canoer LOCATION music_venue
Evri/Location/Entertainment/Music_Venue LOCATION aquarium
Evri/Location/Aquarium LOCATION cemetery Evri/Location/Cemetery
LOCATION national_park Evri/Location/National_Park LOCATION volcano
Evri/Location/Volcano LOCATION zoo Evri/Location/Zoo LOCATION
structure Evri/Location/Structure LOCATION airport
Evri/Location/Structure/Airport LOCATION bridge
Evri/Location/Structure/Bridge LOCATION hotel
Evri/Location/Structure/Hotel LOCATION palace
Evri/Location/Structure/Palace LOCATION monument
Evri/Location/Structure/Monument LOCATION street
Evri/Location/Street LOCATION amusement_park
Evri/Location/Amusement_Park LOCATION unitary_authority
Evri/Location/Unitary_Authority PRODUCT drug_brand
Evri/Product/Health/Drug_Brand PRODUCT weapon Evri/Product/Weapon
PRODUCT missile_system Evri/Product/Weapon/Missile_System PRODUCT
firearm Evri/Product/Weapon/Firearm PRODUCT artillery
Evri/Product/Weapon/Artillery PRODUCT anti-aircraft_weapon
Evri/Product/Weapon/Anti-aircraft_Weapon PRODUCT anti-tank_weapon
Evri/Product/Weapon/Anti-tank_Weapon PRODUCT biological_weapon
Evri/Product/Weapon/Biological_Weapon PRODUCT chemical_weapon
Evri/Product/Weapon/Chemical_Weapon CHEMICAL chemical_weapon
Evri/Product/Weapon/Chemical_Weapon SUBSTANCE chemical_weapon
Evri/Product/Weapon/Chemical_Weapon PRODUCT explosive
Evri/Product/Weapon/Explosive PRODUCT weapons_launcher
Evri/Product/Weapon/Weapons_Launcher PERSON chess_player
Evri/Person/Chess_Player PERSON sculptor
Evri/Person/Artist/Sculptor PRODUCT game Evri/Product/Game
ORGANIZATION theater_company
Evri/Organization/Entertainment/Company/Theater_Company PERSON
badminton_player Evri/Person/Sports/Athlete/Badminton_Player
PRODUCT naval_ship Evri/Product/Watercraft/Naval_Ship PRODUCT
battleship Evri/Product/Watercraft/Naval_Ship/Battleship PRODUCT
cruiser Evri/Product/Watercraft/Naval_Ship/Cruiser PRODUCT
aircraft_carrier
Evri/Product/Watercraft/Naval_Ship/Aircraft_Carrier PRODUCT
destroyer Evri/Product/Watercraft/Naval_Ship/Destroyer PRODUCT
frigate Evri/Product/Watercraft/Naval_Ship/Frigate PRODUCT
submarine Evri/Product/Watercraft/Naval_Ship/Submarine PRODUCT
cruise_ship Evri/Product/Watercraft/Cruise_Ship PRODUCT yacht
Evri/Product/Watercraft/Yacht PRODUCT ocean_liner
Evri/Product/Watercraft/Ocean_Liner LOCATION county
Evri/Location/County PRODUCT symphony
Evri/Product/Entertainment/Symphony ORGANIZATION television_station
Evri/Organization/Entertainment/Company/Television_Station
ORGANIZATION radio_station
Evri/Organization/Entertainment/Company/Radio_Station CONCEPT
constitutional_amendment
Evri/Concept/Politics/Constitutional_Amendment PERSON
australian_rules_footballer
Evri/Person/Sports/Athlete/Australian_Rules_Footballer ORGANIZATION
australian_rules_football_team
Evri/Organization/Sports/Australian_Rules_Football_Team
ORGANIZATION criminal_organization
Evri/Organization/Criminal_Organization PERSON poker_player
Evri/Person/Poker_Player PERSON bowler
Evri/Person/Sports/Athlete/Bowler PERSON yacht_racer
Evri/Person/Sports/Athlete/Yacht_Racer PERSON water_polo_player
Evri/Person/Sports/Athlete/Water_Polo_Player PERSON
field_hockey_player Evri/Person/Sports/Athlete/Field_Hockey_Player
PERSON skateboarder Evri/Person/Sports/Athlete/Skateboarder PERSON
polo_player Evri/Person/Sports/Athlete/Polo_Player PERSON
gaelic_footballer Evri/Person/Sports/Athlete/Gaelic_Footballer
PRODUCT programming_language
Evri/Product/Technology/Programming_Language PERSON engineer
Evri/Person/Technology/Engineer EVENT cybercrime
Evri/Event/Technology/Cybercrime EVENT criminal_act
Evri/Event/Criminal_Act PERSON critic Evri/Person/Critic PERSON
pool_player Evri/Person/Pool_Player PERSON snooker_player
Evri/Person/Snooker_Player PERSON competitive_eater
Evri/Person/Competitive_Eater PRODUCT data_storage_medium
Evri/Product/Technology/Data_Storage_Medium PRODUCT
data_storage_device Evri/Product/Technology/Data_Storage_Device
PERSON mountain_climber Evri/Person/Mountain_Climber PERSON aviator
Evri/Person/Aviator ORGANIZATION cooperative
Evri/Organization/Cooperative CONCEPT copyright_license
Evri/Concept/Copyright_License EVENT observance
Evri/Event/Observance PERSON outdoor_sportsperson
Evri/Person/Sports/Outdoor_Sportsperson PERSON rodeo_performer
Evri/Person/Sports/Rodeo_Performer PERSON sports_shooter
Evri/Person/Sports/Athlete/Sports_Shooter CONCEPT award
Evri/Concept/Award CONCEPT entertainment_series
Evri/Concept/Entertainment/Entertainment_Series PERSON chef
Evri/Person/Chef PERSON cartoonist
Evri/Person/Entertainment/Cartoonist PERSON comics_creator
Evri/Person/Entertainment/Comics_Creator PERSON nobility
Evri/Person/Nobility PERSON porn_star Evri/Person/Porn_Star PERSON
archaeologist Evri/Person/Scientist/Archaeologist PERSON
paleontologist Evri/Person/Scientist/Paleontologist PERSON
victim_of_crime Evri/Person/Victim_of_Crime LOCATION region
Evri/Location/Region PERSON linguist Evri/Person/Linguist PERSON
librarian Evri/Person/Librarian PERSON bridge_player
Evri/Person/Bridge_Player PERSON choreographer
Evri/Person/Entertainment/Choreographer PRODUCT camera
Evri/Product/Technology/Camera PRODUCT publication
Evri/Product/Publication PRODUCT comic
Evri/Product/Entertainment/Comic PRODUCT short_story
Evri/Product/Entertainment/Short_Story ORGANIZATION
irregular_military_organization
Evri/Organization/Irregular_Military_Organization SUBSTANCE
chemical_element Evri/Substance/Chemical_Element SUBSTANCE alkaloid
Evri/Substance/Organic_Compound/Alkaloid SUBSTANCE glycoside
Evri/Substance/Glycoside SUBSTANCE amino_acid
Evri/Substance/Amino_Acid SUBSTANCE protein Evri/Substance/Protein
SUBSTANCE enzyme Evri/Substance/Enzyme SUBSTANCE hormone
Evri/Substance/Hormone SUBSTANCE hydrocarbon
Evri/Substance/Organic_Compound/Hydrocarbon SUBSTANCE
inorganic_compound Evri/Substance/Inorganic_Compound SUBSTANCE
lipid Evri/Substance/Organic_Compound/Lipid SUBSTANCE steroid
Evri/Substance/Organic_Compound/Lipid/Steroid SUBSTANCE molecule
Evri/Substance/Molecule SUBSTANCE polymer
Evri/Substance/Molecule/Polymer SUBSTANCE terpene
Evri/Substance/Organic_Compound/Terpene SUBSTANCE toxin
Evri/Substance/Toxin SUBSTANCE antibiotic
Evri/Substance/Health/Antibiotic SUBSTANCE antioxidant
Evri/Substance/Health/Antioxidant SUBSTANCE anti-inflammatory
Evri/Substance/Health/Anti-inflammatory SUBSTANCE
antiasthmatic_drug Evri/Substance/Health/Antiasthmatic_drug
SUBSTANCE anticonvulsant Evri/Substance/Health/Anticonvulsant
SUBSTANCE antihistamine Evri/Substance/Health/Antihistamine
SUBSTANCE antihypertensive Evri/Substance/Health/Antihypertensive
SUBSTANCE antiviral Evri/Substance/Health/Antiviral SUBSTANCE
painkiller Evri/Substance/Health/Painkiller SUBSTANCE Painkiller
Evri/Substance/Health/Painkiller SUBSTANCE anesthetic
Evri/Substance/Health/Anesthetic SUBSTANCE antibody
Evri/Substance/Antibody SUBSTANCE chemotherapeutic_drug
Evri/Substance/Health/Chemotherapeutic SUBSTANCE anti-diabetic_drug
Evri/Substance/Health/Anti-diabetic SUBSTANCE antianginal_drug
Evri/Substance/Health/Antianginal SUBSTANCE muscle_relaxant
Evri/Substance/Health/Muscle_relaxant SUBSTANCE hypolipidemic_drug
Evri/Substance/Health/Hypolipidemic_Drug SUBSTANCE
psychoactive_drug Evri/Substance/Health/Psychoactive_Drug SUBSTANCE
vaccine Evri/Substance/Health/Vaccine SUBSTANCE
gastrointestinal_drug Evri/Substance/Health/Gastrointestinal_Drug
SUBSTANCE erectile_dysfunction_drug
Evri/Substance/Health/Erectile_Dysfunction_Drug SUBSTANCE
organometallic_compound
Evri/Substance/Organic_Compound/Organometallic_Compound SUBSTANCE
phenol Evri/Substance/Organic_Compound/Phenol SUBSTANCE ketone
Evri/Substance/Organic_Compound/Ketone SUBSTANCE amide
Evri/Substance/Organic_Compound/Amide
SUBSTANCE ester Evri/Substance/Organic_Compound/Ester SUBSTANCE
ether Evri/Substance/Organic_Compound/Ether SUBSTANCE
heterocyclic_compound
Evri/Substance/Organic_Compound/Heterocyclic_Compound SUBSTANCE
organic_compound Evri/Substance/Organic_Compound SUBSTANCE
carbohydrate Evri/Substance/Organic_Compound/Carbohydrate SUBSTANCE
peptide Evri/Substance/Organic_Compound/Peptide SUBSTANCE
organohalide Evri/Substance/Organic_Compound/Organohalide SUBSTANCE
organosulfur_compound
Evri/Substance/Organic_Compound/Organosulfur_Compound SUBSTANCE
aromatic_compound Evri/Substance/Organic_Compound/Aromatic_Compound
SUBSTANCE carboxylic_acid
Evri/Substance/Organic_Compound/Carboxylic_Acid SUBSTANCE
nucleic_acid Evri/Substance/Nucleic_Acid SUBSTANCE ion
Evri/Substance/Ion ORGANISM cyanobacterium
Evri/Organism/Health/Cyanobacterium ORGANISM
gram-positive_bacterium
Evri/Organism/Health/Gram-positive_Bacterium ORGANISM
gram-negative_bacterium
Evri/Organism/Health/Gram-negative_Bacterium ORGANISM
acid-fast_bacterium Evri/Organism/Health/Acid-fast_Bacterium
ORGANISM dna_virus Evri/Organism/Health/DNA_Virus ORGANISM
rna_virus Evri/Organism/Health/RNA_Virus CONDITION symptom
Evri/Condition/Health/Symptom CONDITION injury
Evri/Condition/Health/Injury CONDITION inflammation
Evri/Condition/Health/Inflammation CONDITION disease
Evri/Condition/Health/Disease CONDITION cancer
Evri/Condition/Health/Disease/Cancer ORGANISM medicinal_plant
Evri/Organism/Health/Medicinal_Plant ORGANISM poisonous_plant
Evri/Organism/Poisonous_Plant ORGANISM herb Evri/Organism/Herb
CONCEPT medical_procedure Evri/Concept/Health/Medical_Procedure
ORGANISM bacterium Evri/Organism/Health/Bacterium ORGANISM virus
Evri/Organism/Health/Virus ORGANISM horse Evri/Organism/Horse
PERSON fugitive Evri/Person/Fugitive ORGANIZATION military_unit
Evri/Organization/Politics/Military_Unit ORGANIZATION
law_enforcement_agency
Evri/Organization/Politics/Law_Enforcement_Agency LOCATION
golf_course Evri/Location/Golf_Course PERSON law_enforcement_agent
Evri/Person/Politics/Law_Enforcement_Agent PERSON magician
Evri/Person/Entertainment/Magician LOCATION educational_institution
Evri/Organization/Educational_Institution CONCEPT social_program
Evri/Concept/Politics/Social_Program EVENT international_conference
Evri/Event/Politics/International_Conference
[0112] All of the above U.S. patents, U.S. patent application
publications, U.S. patent applications, foreign patents, foreign
patent applications and non-patent publications referred to in this
specification and/or listed in the Application Data Sheet,
including but not limited to U.S. application Ser. No. 13/286,778,
entitled "CATEGORY-BASED CONTENT RECOMMENDATION," filed Nov. 1,
2011, and U.S. Provisional Patent Application No. 61/408,965,
entitled "CATEGORY-BASED CONTENT RECOMMENDATION," filed Nov. 1,
2010, are incorporated herein by reference, in their
entireties.
[0113] From the foregoing it will be appreciated that, although
specific embodiments have been described herein for purposes of
illustration, various modifications may be made without deviating
from the spirit and scope of this disclosure. For example, the
methods, techniques, and systems for category-based content
recommendation are applicable to other architectures. For example,
instead of recommending textual content items, the techniques may
be used to automatically recommend other types of items, such as
music or other audio items, videos, applications (e.g., mobile
applications), online activities, or the like. Also, the methods,
techniques, and systems discussed herein are applicable to
differing query languages, protocols, communication media (optical,
wireless, cable, etc.) and devices (e.g., desktop computers,
wireless handsets, electronic organizers, personal digital
assistants, tablet computers, portable email machines, game
machines, pagers, navigation devices such as GPS receivers,
etc.).
* * * * *
References