U.S. patent application number 13/043418 was filed with the patent office on 2011-06-30 for personalized advertising in messaging systems.
Invention is credited to Monica Anderson.
Application Number | 20110161177 13/043418 |
Document ID | / |
Family ID | 43639389 |
Filed Date | 2011-06-30 |
United States Patent
Application |
20110161177 |
Kind Code |
A1 |
Anderson; Monica |
June 30, 2011 |
Personalized Advertising in Messaging Systems
Abstract
A method, system and graphical user interface for a chat system
is disclosed. One aspect of certain embodiments includes
identifying and sending advertisements to respective users based on
the respective selection and filtering criteria selected by the
respective users.
Inventors: |
Anderson; Monica; (Milpitas,
CA) |
Family ID: |
43639389 |
Appl. No.: |
13/043418 |
Filed: |
March 8, 2011 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
11728319 |
Mar 22, 2007 |
7904500 |
|
|
13043418 |
|
|
|
|
Current U.S.
Class: |
705/14.66 |
Current CPC
Class: |
G06Q 30/0246 20130101;
H04L 51/10 20130101; G06Q 30/02 20130101; H04L 51/04 20130101; G06Q
30/0251 20130101; G06Q 30/0269 20130101; G06Q 30/0256 20130101;
G06Q 30/0255 20130101; G06Q 30/0257 20130101; H04L 12/1827
20130101 |
Class at
Publication: |
705/14.66 |
International
Class: |
G06Q 30/00 20060101
G06Q030/00 |
Claims
1. A computer-implemented method comprising: identifying, by a
system having one or more processors and memory storing one or more
programs for execution by the one or more processors, in real-time
message streams a set of target messages from one or more authors
including a first user of the real-time messaging system, wherein
the one or more authors are specified by a second user of the
real-time messaging system; identifying, by the system, one or more
advertisements based on one or more key words or a language
pattern; and sending, by the system, to the second user the one or
more advertisements and the set of target messages for display.
2. The method of claim 1, wherein the one or more keywords or the
language pattern are specified by the first user of the real-time
messaging system.
3. The method of claim 1, wherein the one or more keywords or the
language pattern are specified by the second user of the real-time
messaging system.
4. A system, comprising: one or more processors; and memory storing
one or more programs for execution by the one or more processors,
the one or more programs including instructions for: identifying in
real-time message streams a set of target messages from one or more
authors including a first user of the real-time messaging system,
wherein the one or more authors are specified by a second user of
the real-time messaging system; identifying one or more
advertisements based on one or more key words or a language
pattern; and sending to the second user the one or more
advertisements and the set of target messages for display.
5. The system of claim 4, wherein the one or more keywords or the
language pattern are specified by the first user of the real-time
messaging system.
6. The system of claim 4, wherein the one or more keywords or the
language pattern are specified by the second user of the real-time
messaging system.
7. A non-transitory computer readable storage medium, storing one
or more programs for execution by one or more processors of a
system, the one or more programs including instructions for:
identifying in real-time message streams a set of target messages
from one or more authors including a first user of the real-time
messaging system, wherein the one or more authors are specified by
a second user of the real-time messaging system; identifying one or
more advertisements based on one or more key words or a language
pattern; and sending to the second user the one or more
advertisements and the set of target messages for display.
8. The computer readable storage medium of claim 7, wherein the one
or more keywords or the language pattern are specified by the first
user of the real-time messaging system.
9. The computer readable storage medium of claim 7, wherein the one
or more keywords or the language pattern are specified by the
second user of the real-time messaging system.
Description
RELATED APPLICATIONS
[0001] This application is a divisional application of U.S. patent
application Ser. No. 11/728,319 filed Mar. 22, 2007, entitled
"Advertising In Chat System Without Topic-Specific Rooms," which is
incorporated by reference herein in its entirety.
[0002] This application is related to U.S. patent application Ser.
No. 11/728,317, filed Mar. 22, 2007, entitled "Chat System Without
Topic-Specific Rooms;" U.S. patent application Ser. No. 11/728,316,
filed Mar. 22, 2007, entitled "Voting In Chat System Without
Topic-Specific Rooms;" and U.S. patent application Ser. No.
11/728,318, filed Mar. 22, 2007, entitled "Broadcasting In Chat
System Without Topic-Specific Rooms," all of which are incorporated
by reference herein in their entirety.
TECHNICAL FIELD
[0003] The disclosed embodiments relate generally to chat systems.
More particularly, the disclosed embodiments relate to methods,
systems, and user interfaces for allowing a user to receive target
messages from various users and sources that are of interest to the
user without requiring the user to enter topic-specific chat
rooms.
BACKGROUND
[0004] Chat system technology, commonly referred to as online chat,
allows users to communicate in near-real time over a network, such
as the Internet or an intranet. The most common forms of online
chat are direct, one-to-one chat, commonly referred to as instant
messaging (or "IM"), and chat rooms. A chat room allows multiple
users to communicate synchronously within the confines of the chat
room.
[0005] User interactions in chat room systems include: entering a
particular chat room as an active user to type in messages and/or
view messages, replying to messages in a chat room, saving messages
displayed during a chat session, and switching to a different chat
room.
[0006] When a user is interested in conversing with other users
(participants) in a particular chat room, the user enters the room
either as a registered user or as a guest. Each participant in a
particular chat room sees a message window for that chat room.
Participants' messages appear in the message window in the order
that the messages are posted. A user can respond to a recent
message by posting a reply in a response dialog box. In a chat
client, the newest messages are displayed either at the top or
bottom of the message window. A message window will display a
pre-determined number of messages. When the maximum number of
messages is reached, older messages are scrolled off the message
window to make room for newer messages as they are posted.
[0007] There are various technologies for implementing chat
systems. One common chat technology is referred to as IRC, short
for "Internet Relay Chat." IRC is a client-server technology in
which users must use a specific IRC client program to select and
log in to chat rooms. IRC chat clients and chat server employ the
TCP/IP (Internet) protocol for communications. Web-based chat
technologies are also available.
[0008] In current chat systems, a user can only view or respond to
messages that originate from a single topic-specific chat room.
Thus, if a user wishes to participate in multiple chat rooms, the
user must open multiple sessions to keep track of different chat
rooms. Further, the current technology does not provide a
convenient way for automatically determining which conversations
are likely to be of interest to the user.
BRIEF DESCRIPTION OF THE DRAWINGS
[0009] For a better understanding of the aforementioned aspects of
the invention as well as additional aspects and embodiments
thereof, reference should be made to the Description of Embodiments
below, in conjunction with the following drawings in which like
reference numerals refer to corresponding parts throughout the
figures.
[0010] FIG. 1 is a block diagram illustrating an exemplary
distributed computer system according to certain embodiments of the
invention.
[0011] FIG. 2 is a block diagram illustrating a chat subsystem,
according to certain embodiments of the invention.
[0012] FIG. 3 is a block diagram illustrating a client, according
to certain embodiments of the invention.
[0013] FIG. 4 is a block diagram that illustrates a data structure
400 in a user information database such as user information
database 116 of FIG. 2, according to some embodiments.
[0014] FIG. 5 is a block diagram that illustrates a data structure
in a chat database such as chat database, according to some
embodiments.
[0015] FIG. 6 is a high-level flowchart representing some of the
steps for selecting messages of interest for the respective users
in the chat system, according to certain embodiments of the
invention.
[0016] FIG. 7 is a high-level flowchart representing some of the
steps for filtering messages to obtain target messages for sending
to the respective users in the chat system, according to certain
embodiments of the invention.
[0017] FIG. 8 is a high-level flowchart representing some of the
steps for disseminating popular messages to a larger audience in
the chat system, according to certain embodiments of the
invention.
[0018] FIG. 9 is a high-level flowchart representing some of the
steps for sending advertising messages to a respective user in the
chat system, according to certain embodiments of the invention.
[0019] FIG. 10 is one schematic of a chat GUI for displaying target
messages to the user, according to certain embodiments of the
invention.
[0020] FIG. 11 is an alternate schematic of a chat GUI for
displaying target messages to the user, according to certain
embodiments of the invention.
[0021] FIG. 12 is another alternate schematic illustration of a
chat GUI for displaying target messages to the user, according to
certain embodiments of the invention.
DESCRIPTION OF EMBODIMENTS
[0022] Methods, systems, user interfaces, and other aspects of the
invention are described. Reference will be made to certain
embodiments of the invention, examples of which are illustrated in
the accompanying drawings. While the invention will be described in
conjunction with the embodiments, it will be understood that it is
not intended to limit the invention to these particular embodiments
alone. On the contrary, the invention is intended to cover
alternatives, modifications and equivalents that are within the
spirit and scope of the invention. The specification and drawings
are, accordingly, to be regarded in an illustrative rather than a
restrictive sense.
[0023] Moreover, in the following description, numerous specific
details are set forth to provide a thorough understanding of the
present invention. However, it will be apparent to one of ordinary
skill in the art that the invention may be practiced without these
particular details. In other instances, methods, procedures,
components, and networks that are well known to those of ordinary
skill in the art are not described in detail to avoid obscuring
aspects of the present invention.
[0024] According to certain embodiments of the invention, a user in
a chat system need not enter topic-specific chat rooms to view and
reply to messages that are of interest to the user. Instead, the
user specifies the types of messages that the user is interested in
receiving. The chat system then sends messages based on the
specified types. In addition, the chat system may send, to the
user, messages that are popular or that are similar to messages
that the user has received. The chat system may send advertisements
to the user. Some of the advertisements may be based on the types
of messages that the user receives or is interested in receiving.
Further, the chat system enables the user: 1) to track one or more
message threads, and 2) to give feedback on messages using a
feedback GUI that is provided by the chat system.
[0025] According to one feature of certain embodiments, messages
from real-time message streams are selected and filtered to obtain
target messages for a given user. The system provides the user with
a mechanism for specifying selection and filtering criteria that
the system can use when selecting and filtering the real-time
message streams to obtain the target messages for sending to the
particular user. According to another feature of an embodiment, the
user can specify selection criteria using a focus specification
that can be modified by the user at any time. The system also
provides the user with user controls for controlling filters that
are used by the system to filter messages to obtain target messages
to send to the user. According to yet another feature of certain
embodiments, the system creates a first inverted index based on the
focus specifications of the plurality of users in the chat system.
The system also creates a second inverted index based on words
recently entered in the chat system by the plurality of users. As
part of the message selection process, the incoming real-time
message streams are matched against at least one of the inverted
indexes.
[0026] According to some embodiments, a respective user of the chat
system can provide feedback data with respect to target messages
that the respective user receives. The chat system evaluates
feedback data from the respective users to identify popular
messages. The chat system processes the feedback data provided by
the respective users to provide feedback results to at least some
of the respective authors and to at least some of the respective
users who receive popular messages. According to some embodiments,
at least a portion of the popular messages is sent to a set of
users that have not previously received the popular messages.
[0027] According to certain embodiments, the chat system identifies
one or more advertisements based in part on the respective focus
specification of the respective user and sends the identified
advertisements to the respective user.
[0028] FIG. 1 is a block diagram illustrating an exemplary
distributed computer system 100, according to certain embodiments
of the invention. In FIG. 1, system 100 may include one or more
client computers 102, a communications network 106 and a chat
subsystem 108. Client computers 102 can be any of a number of
computing devices (e.g., Internet kiosk, personal digital
assistant, cell phone, gaming device, desktop computer, laptop
computer, handheld computer, or combinations thereof) used to
enable the activities described below. Client computer(s) 102 is
also referred to herein as client(s). Client 102 includes a
graphical user interface (GUI) 111. One embodiment of client 102 is
described in greater detail herein with reference to FIG. 3. Client
102 is connected to chat subsystem 108 via communications network
106. Chat subsystem 108 includes one or more servers, such as
server 112, connected to the communications network 106 via network
communication module 122. Chat subsystem 108 may also include user
information database 116, chat database 120.
[0029] Server 112 includes user processing module 124, and
applications 128. The network communications module 122 connects
server 112 to the communication network 106 and enables the receipt
of communications from the communication network 106 and the
provision of communications to the communication network 106 bound
for client 102 or other destinations. Server 112 communicates with
databases such as user information databases 116, and chat database
120 via network communication module 122. For example, the user may
send registration information, such as a username and password, to
server 112, via communications network 122. Optionally, server 112
receives and verifies the login information, thereby enabling
server 112 to associate subsequent data received from client 102
with a particular user record in user information database 116. As
another example, user information processing module 124 may be used
to verify login information and associate chat messages entered by
the user with the user's data record in user information database
116 and/or in chat database 120. In some embodiments, the user may
be identified using a cookie stored on the client 102, or by a user
identifier that is stored by and associated with a browser toolbar
or browser extension. One embodiment of server 112 is described in
greater detail herein with reference to FIG. 2.
[0030] In the case of multiple servers, each server, such as server
112, is coupled to a communications network 106 via a network
communication module 122. The communications network 106 may be the
Internet, but may also be any local area network (LAN) and/or wide
area network (WAN). In some embodiments, server 112 is a Web server
that manages chat messages using appropriate chat protocols.
Alternatively, if server 112 is used within an intranet, it may be
an intranet server.
[0031] Applications 128 include application programs used for
creating and updating inverted indexes associated with the process
of selecting messages, application programs for selecting and
filtering messages from the real-time message streams to obtain
target messages for the respective users, and/or application
programs for managing the rate of sending target messages to the
respective users in the chat system. Applications 128 are described
in greater detail herein with reference to FIG. 2. The user
information processing module 124 assists in accessing, updating
and modifying the user information database 116. The user
information database 116 stores various information associated with
the user including information related to chat messages created by
the user as described in greater detail herein in reference to FIG.
2.
[0032] Chat database 120 stores information on chat messages and
may store global information of chat subsystem 108 such as system
default functions and default values. Chat database 120 is
described in greater detail herein with reference to see FIG.
2.
[0033] In essence, server 112 is configured to manage certain
aspects of chat subsystem 108, including receiving requests from
the user (associated with client 102), sending chat messages to
clients 102 for display and receiving information, such as
messages, user registration information and user preferences from
clients 102.
[0034] In some embodiments, fewer and/or additional modules,
functions or databases are included in chat subsystem 108 and
server 112. The modules shown in chat subsystem 108 and server 112
represent functions performed in a certain embodiments.
[0035] Notwithstanding the discrete blocks in FIG. 1, the figure is
intended to be a functional description of some embodiments of the
invention rather than a structural description of functional
elements in the embodiments. One of ordinary skill in the art will
recognize that an actual implementation might have the functional
elements grouped or split among various components. For example,
user information database 116 may be part of server 112. In some
embodiments, user information database 116 may be implemented using
one or more servers whose primary function is to store and process
user information. Similarly, chat database 120 may be implemented
on one or more servers. Moreover, one or more of the blocks in FIG.
1 may be implemented on one or more servers designed to provide the
described functionality. Although the description herein refers to
certain features implemented in client 102 and certain features
implemented in server 112, the embodiments of the invention are not
limited to such distinctions. For example, features described
herein as being part of server 112 could be implemented in whole or
in part in client 102, and vice versa.
[0036] FIG. 2 is a block diagram illustrating chat subsystem 108,
according to certain embodiments of the invention. Chat subsystem
108 includes one or more processing units (CPU's) 202, an optional
user interface 205, one or more network or other communications
interfaces 204, memory 206, and one or more communication buses 208
for interconnecting these components. The communication buses 208
may include circuitry (sometimes called a chipset) that
interconnects and controls communications between system
components.
[0037] Memory 206 may include high speed random access memory and
may also include non-volatile memory, such as one or more magnetic
or optical disk storage devices. Memory 206 may optionally include
one or more storage devices remotely located from the CPU(s) 202.
Memory 206, or one or more of the storage devices (e.g., one or
more non-volatile storage devices) in memory 206, includes a
computer readable storage medium. In some embodiments, memory 206
or the computer readable storage medium of memory 206 stores the
following programs, modules and data structures, or a subset or
superset thereof: [0038] an operating system 216 that includes
procedures for handling various basic system services and for
performing hardware dependent tasks; [0039] a network communication
module (or instructions) 122 that is used for connecting chat
subsystem 108 to other computers (e.g., clients 102) via one or
more communication network interfaces 204 (wired or wireless) and
one or more communication networks, such as the Internet, other
wide area networks, local area networks, metropolitan area
networks, and so on; [0040] a server 112 for managing certain
aspects of chat subsystem 108; [0041] a user information database
116 for storing information associated with the users, such as
focus specifications 116a, user-entry history 116b, user rate
slider settings 116c, and user thread tracking data 116d. Focus
specifications 116a, user-entry history 116b, user rate slider
settings 116c, and user thread tracking data 116d are described in
greater detail herein with reference to FIG. 4 and FIG. 5; and
[0042] a chat database 120 for storing information related to chat
messages such as selected messages data 120a, filtered message data
120b, feedback results 120c, and advertisement data 120d.
[0043] Selected messages data 120a includes messages selected based
on respective focus specifications for respective users. Filtered
message data 120b includes filtered (target) messages for the
respective users. Feedback results 120c include processed feedback
data from users regarding the chat messages, and advertisement data
120d includes advertisements that are selected for respective
users.
[0044] In some embodiments, server 112 includes the following
non-limiting examples of elements, or a subset of such elements: a
user information processing module 124, and an applications module
128 that includes application programs, such as a chat application
program 218, an inverted indexing application program 222, a
message selection application program 224 for assigning messages to
the respective users, a message filtering application program 226
for obtaining target messages, a message transmission application
program 228 for sending target messages to the user at an
appropriate rate, a popular message selection application program
229 for selecting popular messages for sending to the user, and an
advertisement selection application program 230 for selecting
advertisements for sending to the user. According to certain
embodiments, two or more of above application programs may be
combined. As a non-limiting example, the functions of the above
application programs may be performed by chat application program
218. According to some embodiments, server 112 uses chat
application program 218 to manage various aspects of the chat
subsystem such as coordinating the functions of the inverted
indexing application program 222, the message selection application
program 224, the filtering application program 226, the message
transmission application program 228, user information database 116
and chat database 120. The functions of such application programs
and the chat database 120 are described in greater detail herein
with reference to FIG. 6, FIG. 7, FIG. 8 and FIG. 9. User
information processing module 124 may be used for accessing and
modifying user information database 116. In some embodiments,
server 112 and/or the databases 116 and 120 may include additional
modules.
[0045] FIG. 3 is a block diagram illustrating client 102, according
to certain embodiments of the invention. Client 102 includes one or
more processing units (CPUs) 302, one or more network or other
communications interfaces 304, memory 306, and one or more
communication buses 308 for interconnecting these components.
Client 102 may include a user interface 310, for instance a display
312 with GUI 111 and a keyboard 314. Memory 306 may include high
speed random access memory and may also include non-volatile
memory, such as one or more magnetic or optical storage disks.
Memory 306 may include mass storage that is remotely located from
CPUs 302. Memory 306 may store the following elements, or a subset
or superset of such elements: [0046] An operating system 316 that
includes procedures for handling various basic system services and
for performing hardware dependent tasks; [0047] Client applications
328 such as a client chat application program 330, message
filtering program 331, and a browser application program 332. The
function of client chat application 330 is described in greater
detail herein with reference to FIG. 6 and FIG. 7. The message
filtering program 331 is described in greater detail herein with
reference to FIG. 5; and [0048] Client storage 334 for storing
data, including focus specification 336 associated with the
particular user, rate slider settings 338 selected by the
particular user, user-entry history 340 specific to the particular
user, thread tracking data 342 associated with message threads that
are tracked by the particular user, feedback results 344 for the
particular user, and advertisement data 346 associated with the
particular user. The data in client storage 334 is periodically
pushed to or pulled by the server 112 to update the server's
databases.
[0049] The above identified modules and applications in FIG. 2 and
FIG. 3 correspond to a set of instructions for performing a
function described above. These modules (i.e., sets of
instructions) need not be implemented as separate software
programs, procedures or modules, and thus various subsets of these
modules may be combined or otherwise re-arranged in various
embodiments. In some embodiments, memories 206 and 306 may store a
subset of the modules and data structures identified above.
Furthermore, memories 206 and 306 may store additional modules and
data structures not described above.
[0050] Although FIG. 2 and FIG. 3 show chat subsystem 108 and
client 102 as a number of discrete items, FIG. 2 and FIG. 3 are
intended more as a functional description of the various features
which may be present in chat subsystem 108 and client 102 rather
than as a structural schematic of the embodiments described herein.
In practice, and as recognized by those of ordinary skill in the
art, items shown separately could be combined and some items could
be separated. For example, some items shown separately in FIG. 2
could be implemented on single servers and single items could be
implemented by one or more servers. As another example, some of the
databases shown in either of the figures may be combined while
other databases may be separated into more granular components. The
actual number of servers in chat subsystem 108 and how features are
allocated among them may vary from implementation to
implementation, and may depend in part on the amount of data
traffic that the system handles during peak usage periods as well
as during average usage periods.
[0051] According to certain embodiments, a respective user is
associated with a focus specification, such as focus specification
404 of FIG. 4. The plurality of focus specifications may be stored
as focus specifications 116a in user information database 116, for
example. The user can use his or her focus specification to specify
selection criteria for selecting messages from the real-time
message streams that are of interest to the user. The selected
messages are assigned to the respective user. Assigning messages to
a user means that an association is created between the selected
message and the user. However, once a message is assigned to a user
does not mean that the assigned message is automatically sent to
the user. The messages that are assigned to a user are filtered
using filtering criteria (rate slider data 408 of FIG. 4) that are
controlled by the user to obtain target messages. At least a
portion of the target messages are then displayed to the user.
Whether or not all the target messages are displayed to the user
depends on the volume of target messages and the transmission rate
for sending the target messages to the user and/or the rate of
display of the target messages.
[0052] According to certain embodiments, the user can specify
topics of interest in the focus specification by specifying key
words, natural language expressions (such as string 404-1 of FIG.
4), computer language expressions, Boolean operators, etc., for
example. The system may support specialized pattern matching
language to enable users to specify selection criteria in the form
of high-precision constructs, for example.
[0053] FIG. 4 is a block diagram that illustrates a data structure
400 in user information database such as user information database
116 of FIG. 2, according to some embodiments. Data structure 400
includes user data 402 corresponding to the plurality of users such
as User 1, User 2, . . . , and User P of the chat system. For
example, for a specified user such as User 2, user data 402-2
includes focus specification data 404, user entry history 406, rate
slider data 408, and thread tracking data 410. Focus specification
data 404 includes user specified selection criteria such as strings
404-1, user specified identification of authors 404-2, user
specified feeds 404-3, and user specified blogs 404-4, etc.
According to certain embodiments, each of the user specified
selection may be associated with a set of attributes. For example,
the user specified selection criterion 404-4 is associated with a
set of attributes such as font type 404-4a, font color 404-4b, and
language 404-4c. Optionally, the user specified criterion may also
be associated with a weight 404-4d for use in a weighting function
for obtaining target messages for the specified user. Focus
specifications are used to create an inverted index as described in
greater detail below. User entry history 406 includes words
recently entered by User 2 such as Entry A 406-1, Entry B 406-2, .
. . , Entry N 406-3, etc. User entry history such as user entry
history 406 is used for creating another inverted index as
described in greater detail below. Rate slider data 408 includes
user specified transmission rate slider setting 408-1, user
specified popular slider setting 408-2, user specified topical
slider setting 408-3, and user specified tracked message slider
setting 408-4. For example, the user may move the sliders provided
by the chat system GUI, such as those shown on FIG. 12, to desired
levels. User specified slider settings are used as weighting
functions for obtaining target messages as described in greater
detail below. Thread tracking data 410 includes message threads
that are tracked by a specific user such as User 2. For example,
the tracked threads may be Thread T1 410-1, Thread T2 410-2, . . .
. Thread TZ 410-3, etc. Each tracked thread may be associated with
a set of attributes. As a non-limiting example, Thread TZ 410-3 is
associated with a set of attributes such as font type 410-3a, font
color 410-3b, and language 410-3c. Optionally, the specified
tracked thread may also be associated with a weight 410-3d for use
in obtaining target messages for the specified user. Tracked
threads are described in greater detail below.
[0054] The focus specification may be in the form of a file or data
structure that can be modified by the user at any time. As another
non-limiting example, the focus specification may be presented in a
window display for modification by the user. The user can edit the
text in the focus specification window. The focus specification can
optionally include display attributes associated with the
respective user-specified selection criteria. Display attributes
may include font type (font type 404-4a), font size, font color
(font color 404-4b), style, indentation depth, language (language
404-4c), etc. To illustrate, assume that the user specifies
"pottery" as one of the selection criteria in the focus
specification. Further assume that the user has selected italicized
Ariel font in green, and the "English" language as the display
attributes associated with the selection criterion, "pottery." In
the event that a target message regarding pottery is displayed to
the user, such a message is displayed in English and in green
italicized Ariel font. Thus, at a glance, the user can visually
identify "pottery" related target messages easily when the target
messages are scrolling past in the message display window. In other
words, the user can specify display attributes as visual aids by
associating a topic of interest with a set of user-specified
display attributes.
[0055] Further, the user can specify sources of real-time
information that are of interest to the user in the user's focus
specification. For example, the user may specify a source as
"messages by authors X, Y and Z" (identification of authors 404-2).
Also, the user can specify real-time information sources such as
news feeds, RSS feeds (RSS 404-3), blogs (Blog 404-4), stock ticker
data, TV close caption streams, etc. According to one embodiment,
such real-time information sources are integrated into the chat
system by creating pseudo users to represent such real-time
information sources.
[0056] Also, the user can use the focus specification to exclude
specific sources of real-time information. In other words,
real-time information streams from the excluded sources are not
matched against the user's selection criteria.
[0057] In order to match incoming real-time information streams
against the users' focus specifications, the system creates an
inverted index based on focus specifications of the users in the
chat system and by using inverted indexing program 222, according
to certain embodiments. Such an inverted index is herein referred
to as a focus specification index. The keys of the focus
specification index are the user-specified words/expressions,
user-specified channels (news feeds, blogs, RSS feeds, etc.), and
the user id of the user that originated the user-specified
words/expressions, etc. The focus specification index is
periodically updated to reflect modifications made by users to
their respective focus specifications. Message selection program
224 can use matching functions to match the words that appear in an
incoming real-time information stream against the focus
specification index. Such an incoming stream is assigned to those
users for whom there is a match. The matching functions may include
an appropriate time-dependent decay function. If a user neglects to
specify any selection criteria in the user's focus specification,
the system provides default selection criteria for selecting
messages for assigning to the user. For example, default selection
criteria may be stored in chat database 120.
[0058] Optionally, the system may use inverted indexing program 222
to create a second inverted index based on words recently entered
by the respective users. User-entry history data 116b stores words
recently entered by the respective users. For example, as shown in
FIG. 4, user-entry history 406 stores recently entered words such
as Entries 406-1, 406-2, . . . 406-3, etc., associated with a
particular user. Such an inverted index can be periodically updated
and is herein referred to as a "recent-entry" index. As previously
explained, message selection program 224 can use matching functions
to match the words that appear in an incoming real-time information
stream against both the focus specification index and the
recent-entry index.
[0059] User rate slider data 116c stores settings specified by the
respective user for filtering criteria or filters. Non-limiting
examples of filters include: 1) a transmission rate slider, 2) a
popular slider, 3) a topical slider, and 4) a tracked-message
slider. Such filter settings may be stored as transmission rate
slider setting 408-1, user specified popular slider setting 408-2,
user specified topical slider setting 408-3, and user specified
tracked message slider setting 408-4 as shown in FIG. 4. According
to certain embodiments, the user can use the popular slider,
topical slider, and tracked slider to control the mixing ratios of
popular, topical and tracked target messages, respectively, that
are sent to the user. According to certain embodiments, the
user-specified settings of the respective sliders correspond to
weights in appropriate weighting functions that are used for
scoring a user's assigned messages to obtain target messages. As
the volume of incoming real-time message streams increases, there
may be more assigned messages than a user can view in a practical
fashion. Thus, the system uses one or more user-specified filters
to select high scoring assigned messages for sending as target
messages to the user at a reasonable rate. The user can control the
rate that messages are sent using the message transmission rate
slider. The user can use the popular slider to control the mixing
ratios of messages to include some "popular" messages sent to the
user. Similarly, the user can use the topical slider and
tracked-message slider, for adjusting the mixing ratios of
different types of messages sent to the user. Such sliders are
illustrated in FIG. 12 herein.
[0060] User thread-tracking data 116d stores tracking information
associated with the threads that are tracked by the respective
user. For example, as shown in FIG. 4, the tracking information
identifies the specific threads such as threads 410-1, 410-2, . . .
410-3, etc., tracked by a particular user. The tracking information
can be used to select messages from the tracked thread for
assigning to the user and/or for controlling one or more
thread-tracking features such as display attributes and the display
of anchor messages, as described in greater detail herein with
reference to FIG. 10 and FIG. 11. An anchor message is the first
message of a tracked thread that the user has indicated interest
in. To illustrate, if a user decides to begin tracking the thread
at message X, then message X becomes the anchor message for the
thread of subsequent messages that follow.
[0061] In some embodiments, users can explicitly deselect branches
of a thread tree that do not interest them, and the system can
automatically prune subtrees of the thread tree that do not receive
attention in the form of comments of further selections as
containing interesting messages or that receive deselection actions
from a plurality of other users. This propagates the more
interesting branches of the thread tree and keeps the thread tree
to a manageable size.
[0062] FIG. 5 is a block diagram that illustrates a data structure
500 in a chat database such as chat database 120 of FIG. 2,
according to some embodiments. Data structure 500 includes user
chat data 502 corresponding to the plurality of users such as User
1, User 2, . . . , User P of the chat system. For example, for a
specified user such as User 2, user chat data 502-2 includes
selected messages 504, target (filtered) messages 506, feedback
results 508, and advertisements 510. Selected messages 504, target
(filtered) messages 506, and advertisements 510 may be associated
with display attributes. For example, Message Tm 506-m has
attributes such as font type 506-m1, font color 506-m2, language
506-m3, etc. For purposes of simplicity the display attributes of
selected messages and advertisements are not shown in data
structure 500.
[0063] As described above, selected messages are messages selected
based on the selection criteria specified in the respective focus
specification for a specified user. The selected messages are
associated with the specified user. For example, selected messages
such as Message S1 504-1, . . . , Message Sn 504-n, etc., are
assigned to User 2. The selected messages for User 2 are filtered
using filtering criteria (rate slider data 408) to obtain target or
filtered messages. For example, selected messages 504 are filtered
using filtering criteria based on rate slider data 408 to obtain
target messages such as Message T1 506-1, . . . , Message Tm 506-m,
etc., for User 2. Feedback results 508 include the feedback
received with respect to respective messages authored by User 2.
For example, User 2 may receive feedback such as Feedback 508-1 for
message A, . . . , Feedback 508-2 for Message B, etc. Further, the
chat system may send advertisements such as advertisement A 510-1 .
. . , Advertisement P 510-p, etc., to User 2.
[0064] In other words, the chat system may assign messages to a
respective user based on one or more reasons including: 1) the
message is an advertisement that the system would like to send to
the user, 2) the message belongs to a thread that is explicitly
tracked by the respective user, 3) the message is a popular message
in the chat system (for example, the message is tracked by many
users), and 4) the message matches at least one selection criterion
in the respective user's focus specification. According to certain
embodiments, the weight of the above reasons 2 to 4 are additive
with respect to filtering selected messages to obtain target
messages to send to the respective user.
[0065] FIG. 6 is a high-level flowchart representing some of the
steps for selecting messages to be assigned to a respective user,
according to certain embodiments. It will be appreciated by those
of ordinary skill in the art that one or more of the acts described
may be performed by hardware, software, or a combination thereof,
as may be embodied in one or more computing systems. FIG. 6 is
described with reference to FIG. 2 and FIG. 4. The server builds a
first inverted index (focus specification index) based on the focus
specifications of the plurality of users participating in the chat
system (602). For example, server 112 of FIG. 2 uses inverted
indexing program 222 to build the focus specification index based
on the plurality of focus specifications stored in focus
specifications database 116a. The focus specification index may be
updated as frequently as needed to reflect modifications, if any,
made by respective users and such that, on average, the messages
selected for assignment are of current interest to the respective
user. For example, the system can save "before modification" and
"after modification" copies of the respective user's focus
specification. The system can generate a list of differences based
on the "before modification" and "after modification" copies. The
system can then delete or add entries to the inverted index based
on the generated list of differences. Updates to user-specified
channels (news feeds, blogs, RSS feeds, etc.) may result in
updating associated data structures. For example, data structures
that include lists of users that would like to see "blog A" (404-4)
channel messages is updated if a user made a recent modification in
his focus specification to include "blog A."
[0066] Returning to FIG. 6, the server builds a second inverted
index (recent-entry index) based on words recently entered by the
respective users (604). For example, server 112 of FIG. 2 uses
inverted indexing program 222 to build the recent-entry index based
on the recently entered words stored in user-entry history 406. The
recent-entry index may be updated as frequently as needed to
reflect currently entered words.
[0067] A message from the incoming real-time message streams is
herein referred to as an incoming message. According to certain
embodiments, the chat system attaches to an incoming message one or
more of the following: 1) a time stamp, 2) information on source
language, 3) a link to the parent message if the incoming message
is a reply to another message, 4) a unique identifier for
identifying the message, and 5) the identity of the author.
[0068] The server determines if an incoming message is to be
selected for assignment to the respective users by matching the
words in the incoming message against the focus specification index
to determine which users have specified an interest in the words of
the incoming message (606). For example, server 112 uses message
selection program 224 to determine if an incoming message is to be
selected for assignment to the respective users. The incoming
message is assigned to those users for whom there is a match. The
assigned message includes an indication of the quality of the
match. For example, the selected message can include annotations of
the reasons for selecting the message. The annotations can include
the number of matching words, how unusual were the matching words.
The more unusual the words, the greater the weight.
[0069] According to certain embodiments, server 112 uses message
selection program 224 to match the words in the incoming message
against the recent-entry index (608). The incoming message is
assigned to those users for whom there is a match. The assigned
message includes an indication of the quality of the match.
[0070] The server 112 uses message selection program 224 to
determine which users are tracking the thread to which the incoming
message belongs (610). The incoming message is assigned to those
users who are tracking the thread to which the incoming message
belongs. The assigned message includes a relevance measure. As a
non-limiting example, the relevance measure can include the
distance between the node of the anchor message and the node of the
incoming message. Such a distance is also referred to herein as a
thread length.
[0071] The server 112 uses message selection program 224 to
determine the popularity of the incoming message (612). For
example, one measure of popularity may be determined by the number
of matches the incoming message had when matched against the focus
specification index and the recent-entry index. Another measure of
popularity may be determined by the number of users that are
tracking the thread to which the incoming message belongs. The
popularity of the incoming message may also be determined by
measuring the size of the sub-tree under the incoming message.
Incoming messages that exceed a pre-selected level of popularity
are assigned to the respective users.
[0072] The server 112 uses message selection program 224 to
determine the ancestor messages of the incoming message up to a
pre-determined number of ancestor messages and assigns the incoming
message to the authors of the ancestor messages (614).
[0073] It will be appreciated by those skilled in the art that some
of the above acts described with reference to FIG. 6 need not be
performed in the order described. For example, the acts of matching
the incoming message against the focus specification index and the
recent-entry index as well as the act of determining which users
are tracking the thread of the incoming message may be done
concurrently using a distributed process. In certain embodiments,
the system is designed to be "best-effort", i.e., it provides no
guarantees that any message will reach any user, which enables the
implementers to exploit considerable freedoms when distributing the
system components among many computers.
[0074] As described above with reference to FIG. 6, as the
real-time incoming messages stream into the chat system, various
selection operations are performed on the incoming message to
assign the message to one or more respective users. According to
certain embodiments, the system can perform filtering operations,
described in greater detail with reference to FIG. 7, as the
incoming message is assigned to the respective user. According to
other embodiments, a time slice approach is used for the filtering
operations. For example, assume that the time slice is selected to
be .DELTA.t seconds. Rather than filtering an incoming message as
soon as it is assigned to a user, the filtering operations are
performed once every .DELTA.t seconds. Thus, the filtering
operations are performed on a bundle of assigned messages at a time
for the respective user. The size of the time slice may be
pre-selected or dynamically selected based on the system load. The
more loaded the system, the larger the time slice, for example.
[0075] According to one embodiment, the system can send the
assigned messages to client 102 and allow client 102 to perform the
filtering operations on the bundle of assigned messages. In other
words, client 102 uses message filtering application program 331 to
filter the bundle of assigned messages to obtain target messages
for displaying to the respective user associated with client
102.
[0076] According to certain other embodiments, server 112 performs
the filtering operations by using message filtering application
program 226 to obtain target messages. For purposes of explanation,
FIG. 7 is described by assuming that server 112 performs the
filtering operations.
[0077] FIG. 7 is a high-level flowchart representing some of the
steps for filtering the selected messages for the respective users
in the chat system, according to certain embodiments of the
invention. It will be appreciated by those of ordinary skill in the
art that one or more of the acts described may be performed by
hardware, software, or a combination thereof, as may be embodied in
one or more computing systems. FIG. 7 is described with reference
to FIG. 2 and FIG. 5.
[0078] Server 112 uses either the chat application program 218
and/or the message filtering application program 226 of FIG. 2 to
create a scoring record for a given assigned message (702).
According to certain embodiments, the scoring record associated
with an assigned message includes annotations of the reasons for
selecting the message and/or other relevance measures for selecting
the message. The reasons and relevance measures for selecting a
message is herein also referred to as relevance factors. Each
relevance factor is associated with a value.
[0079] Server 112 uses the message filtering application program
226 to apply appropriate weighting functions to the relevance
factors in the scoring record associated with the respective
assigned message (704). As a non-limiting example, for a given
message, the respective relevance factor value can be multiplied by
appropriate normalizing factors and then multiplied by the
user-specified settings of appropriate filters such as the
transmission rate slider, popular slider, topical slider, and the
tracked-message slider. According to certain embodiments,
appropriate time-dependent decay functions may be applied to one or
more of the relevance factor values to discount the value of a
given relevance factor. Server 112 may provide default values for
any of the filters for which the user has not selected a
setting.
[0080] Server 112 uses the message filtering program 226 to sum the
values of the relevance factors so that the respective assigned
message is associated with a single score, according to certain
embodiments (706). In the case of using time slices, the above
filtering operations are performed on the plurality of messages in
the bundle of assigned messages for a given time slice for the
respective user.
[0081] The scored messages are merged with pending messages, if any
(708). Pending messages are scored messages that are in a queue
waiting for to be sent to the user. The merged set of scored
messages is sorted based on the scores.
[0082] The server uses message transmission program 228 to transmit
the sorted messages at an appropriate transmission rate to client
102 associated with the respective user (710). The messages with
the highest scores are sent first. According to certain
embodiments, messages with scores below a pre-selected score are
discarded. According to certain other embodiments, pending messages
are timed out after a pre-selected period of time.
[0083] According to some embodiments, the chat system may
re-broadcast messages that exceed a pre-selected threshold of
popularity in order to disseminate such messages to a larger
audience. For example, if the chat system detects that message M
receives tracking request that exceed a pre-selected amount and/or
the message receives positive feedback above a pre-selected
threshold, message M is re-broadcast to a set of users who have not
previously received message M. Feedback regarding received target
messages and/or regarding the author of the target messages are
described in greater detail herein with reference to FIG. 10, FIG.
11 and FIG. 12.
[0084] FIG. 8 is a high-level flowchart representing some of the
steps for disseminating popular messages to a larger audience in
the chat system, according to certain embodiments of the invention.
It will be appreciated by those of ordinary skill in the art that
one or more of the acts described may be performed by hardware,
software, or a combination thereof, as may be embodied in one or
more computing systems. At least a portion of target messages is
sent to respective users based on at least the selection criteria
and the filtering criteria of the respective users (802). Feedback
data is received from the respective users regarding the received
target messages and/or regarding the authors of the received target
messages (804). The feedback data is evaluated to identify popular
messages (806). At least a portion of the identified popular
messages are sent to a set of users who have not previously
received the popular messages (808). Feedback data is processed to
provide feedback results to at least some of the respective authors
and to at least some of the users who receive the popular messages
(810).
[0085] According to certain embodiments, messages that are
advertisements that the system would like to send to a respective
user are not subject to the message selection and filtering process
and are automatically sent to the respective user as a high
priority target message. However, according to some other
embodiments, advertising messages may be selected based on the
selection criteria in the user's focus specification.
[0086] FIG. 9 is a high-level flowchart representing some of the
steps for sending advertising messages (advertisements) to a
respective user in the chat system, according to certain
embodiments of the invention. It will be appreciated by those of
ordinary skill in the art that one or more of the acts described
may be performed by hardware, software, or a combination thereof,
as may be embodied in one or more computing systems. The focus
specification of the respective user is evaluated (902). One or
more advertisements are identified based in part on the respective
user's focus specification. Optionally, the respective user's
tracking requests to track messages are monitored in order to
identify advertising messages based on the tracked messages (906).
Optionally, the focus specifications of additional users who are
tracking the same target messages that the respective user is
tracking are evaluated to identify advertising messages based in
part on such focus specifications (908). The identified advertising
messages are sent to the respective user (910).
[0087] FIG. 10 is a schematic illustration of a chat GUI 1000 for
displaying messages to the user, according to certain embodiments
of the invention. Client chat application program 330 manages GUI
1000, according to some embodiments. GUI 1000 includes a scrolling
message window 1002, a message entry area 1024, a reply-to area
1022, and an advertising area 1026. Advertising area 1026 is for
displaying advertising messages such as advertising messages 1028
that are sent to the respective user by the chat system.
Advertising messages may be selected based on selection process as
described herein with reference FIG. 9. The embodiments are not
limited to the features shown in FIG. 10, and thus may vary from
implementation to implementation.
[0088] As a non-limiting example, the scrolling message window 1002
displays target messages 1012 to the user. Incoming target messages
are displayed to the user at a reasonable display rate. Older
messages are scrolled off the message window to make room for newer
messages. According to one embodiment, message 1012 may be preceded
by several user-interface buttons such as: [0089] A tracking-on
button 1004: the user can begin tracking a given message by
clicking on the tracking-on button 1004 that corresponds to the
particular message. According to one embodiment, by clicking on
tracking button 1004 that corresponds to a message that the user is
already tracking, the user can "vote" for such a message as being
highly interesting to the user. [0090] A tracking-off button 1006:
by clicking once on the tracking-off button 1006 that corresponds
to a given message from a tracked thread, the user can stop
tracking subsequent messages in the sub-thread of the given
message. According to one embodiment, by clicking on the
tracking-off button 1006 twice corresponding to a message in a
tracked thread, the user can turn off tracking for the entire
thread. By clicking the tracking-off button 1006 associated with a
message that has not been previously tracked by the user, the user
can indicate that the user does not wish to receive messages that
are similar to the message on which the user clicked. According to
certain embodiments, by clicking the tracking-off button 1006
associated with a message that has not been previously tracked by
the user, the user creates a selection criterion in the user's
focus specification for excluding such messages. [0091] An author
button 1010: author button 1010 identifies the author of a given
message. Associated with the author button 1010 are voting buttons
1010a ("+" button) and 1010b ("-" button), according to certain
embodiments. For example, the user can click on voting button 1010a
once corresponding to a given message, when the user wishes to see
more messages on the topic of the given message by the author of
the given message. As another example, the user can click on voting
button 1010a twice when the user wishes to see more messages by the
author of the given message on any topic. Clicking on voting button
1010a three times can mean that the user wishes to all subsequent
messages by the author of the given message, for example. As yet
another example, the user can click on voting button 1010b once to
indicate that the user does not wish to see any messages from the
corresponding sub-thread, clicking twice to indicate that the
system should ignore the corresponding selection criteria in the
user's focus specification that caused the given message to be
selected, and clicking thrice to indicate that the given message is
spam. [0092] Feedback buttons 1014, 1016, 1018, 1020: various
feedback buttons may be provided to allow a user to express
opinions on the messages such as messages 1012 that scroll through
the scrolling message window 1002. According to some embodiments,
the user can designate a given message as spam by using a spam
feedback button such as feedback button 1020. Non-limiting examples
of feedback buttons include buttons for sentiments such as "good",
"bad", "funny," "gunny," "boring," "redundant," "agree",
"disagree", "funny", "cannot understand", "irrelevant", "spam",
"obscene", "objectionable", "please continue", "interesting",
"uninteresting", etc.
[0093] According to alternate embodiments, instead of preceding a
given message, the user-interface buttons may be semi-transparent
buttons that appear as an overlay on a given message when the
user's mouse hovers over the given message. In another embodiment,
the buttons may appear at the side of scrolling message window
1002. The embodiments are not limited to the user interface buttons
and associated operations described herein. Other appropriate
buttons may used for allowing the user to perform desired
operations with respect to the selection and display of messages.
In certain embodiments, pop-up menus may be used in lieu of or in
addition to user interface buttons.
[0094] According to certain embodiments, the target messages may be
associated with specific display attributes. As a non-limiting
example, when tracking is turned on for a given message, the
messages in the tracked thread change from a lighter washed out
color to a richer tone. As previously described, the user may
specify color, font and style for the various selection criteria
selected by the user in the user's specification. Further,
advertisements may be displayed to the user in the advertising area
1026 using appropriate display attributes to attract the attention
of the user. Similarly, "popular" messages may be displayed to the
user using distinguishing display attributes.
[0095] Message entry area 1024 allows the user to enter a message
or reply to a message that is displayed in the scrolling message
window 1002. Reply-to area 1022 displays the text of the message to
which the user is replying. In one embodiment, the replied-to
message (possibly truncated to fit in the area) is copied here for
verification purposes the moment the user types the first character
of their new message or otherwise indicates that he or she wants to
reply to some message.
[0096] FIG. 11 is an alternate schematic illustration of a chat GUI
for displaying target messages to the user, according to certain
embodiments of the invention. Besides the scrolling message window
1002, reply-to area 1022 message entry area 1024, and advertising
area 1028, GUI 1100 shows anchor messages window 1126, tracked
threads window 1128a-1128n.
[0097] Anchor messages window 1126 displays the anchor messages
selected by the user for tracking message threads. The anchor
messages window 1126 makes it convenient for the user to terminate
tracking one or more message threads. To illustrate, assume that
the user decides to terminate tracking the thread associated with
anchor message J. Anchor messages window 1126 makes it convenient
for the user to terminate tracking such a thread by allowing to
user to delete anchor message J from anchor messages window 1126.
The user may select several threads at a time for deletion. As
another example, the user may close anchor messages window 1126 to
delete all the tracked threads previously selected for tracking by
the user.
[0098] Tracked thread windows 1128 display to the user the target
messages that belong to threads that are tracked by the user. For
example, tracked thread window 1128a displays the target messages
that belong to the thread associated with anchor message J.
Similarly, tracked thread windows 1128b, . . . , 1128n display the
target messages that belong to the threads associated with anchor
message K, . . . , and anchor message P, respectively. For example,
if the user terminates tracking the thread associated with anchor
message J, tracked message window 1128a would close automatically,
according to certain embodiments.
[0099] FIG. 12 is another alternate schematic illustration of a
chat GUI for displaying target messages to the user, according to
certain embodiments of the invention. Besides the scrolling message
window 1002, reply-to area 1022 message entry area 1024,
advertising area 1028, anchor messages window 1126, and tracked
threads windows 1128, GUI 1200 shows a transmission rate slider
1206, a popular slider 1208, a topical slider 1210, a tracked
slider 1212, and a plurality of feedback meters 1226, 1228, 1230
and 1232. Further, GUI 1200 shows feedback meters 1226, 1228, 1230
and 1232. Such feedback meters provide a qualitative measure of
agreement or disagreement and/or amusement, for example, that the
messages authored by the user has generated in the chat community.
Feedback meter 1232 indicates a measure of "spam" votes that are
received in response to the messages authored by the user. GUI 1200
may have other types of feedback meters, in addition to, or in lieu
of the ones shown in GUI 1200. Other types of feedback meters
include meters for expressing sentiments such as "good", "bad",
"funny," "gunny," "boring," "redundant," "agree", "disagree",
"funny", "cannot understand", "irrelevant", "spam", "obscene",
"objectionable", "please continue", "interesting", "uninteresting",
etc. In some embodiments, the set of meters that are displayed are
under the user's control. The message feedback also can be made
available to any user for any indicated message, and not only to
the author of a message. This can be accomplished by the user
selecting some message and (through suitable means) requesting that
the meters display the feedback for that specific message.
[0100] The user can use transmission rate slider 1206 to control
the overall rate of transmission of target messages to the user.
Similarly, the user can use popular slider 1208, topical slider
1210, and tracked slider 1212 to control the mixing ratios of
popular, topical and tracked target messages, respectively, to the
user. Such sliders are also referred to as message fraction
sliders. The user setting for the rate slider 1206, popular slider
1208, topical slider 1210, and the tracked slider 1212 may be
stored in data structure 400 (rate slider 408) as illustrated in
FIG. 4, according to certain embodiments. Note that in some
embodiments the slider settings may be advisory only, and the
system may return a different mixture, as traffic warrants.
[0101] The foregoing description, for purpose of explanation, has
been described with reference to specific embodiments. However, the
illustrative discussions above are not intended to be exhaustive or
to limit the invention to the precise forms disclosed. Many
modifications and variations are possible in view of the above
teachings. The embodiments were chosen and described in order to
best explain the principles of the invention and its practical
applications, to thereby enable others skilled in the art to best
utilize the invention and various embodiments with various
modifications as are suited to the particular use contemplated.
* * * * *