U.S. patent application number 11/171064 was filed with the patent office on 2007-12-06 for freeform digital ink revisions.
This patent application is currently assigned to Microsoft Corporation. Invention is credited to David M. Bargeron.
Application Number | 20070283240 11/171064 |
Document ID | / |
Family ID | 35458001 |
Filed Date | 2007-12-06 |
United States Patent
Application |
20070283240 |
Kind Code |
A9 |
Bargeron; David M. |
December 6, 2007 |
Freeform digital ink revisions
Abstract
A computer-implemented system for digital ink revisions is
provided. The system comprises an annotation module that recognizes
a handwritten annotation in an image of a document. The system
further comprises a command module that executes a command
associated with the recognized handwritten annotation. Methods for
using the system are also provided.
Inventors: |
Bargeron; David M.;
(Seattle, WA) |
Correspondence
Address: |
AMIN. TUROCY & CALVIN, LLP
24TH FLOOR, NATIONAL CITY CENTER
1900 EAST NINTH STREET
CLEVELAND
OH
44114
US
|
Assignee: |
Microsoft Corporation
Redmond
WA
|
Prior
Publication: |
|
Document Identifier |
Publication Date |
|
US 20070022371 A1 |
January 25, 2007 |
|
|
Family ID: |
35458001 |
Appl. No.: |
11/171064 |
Filed: |
June 30, 2005 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
10934306 |
Sep 3, 2004 |
|
|
|
11171064 |
Jun 30, 2005 |
|
|
|
Current U.S.
Class: |
715/230 ;
715/268 |
Current CPC
Class: |
G06F 40/171 20200101;
G06K 2209/01 20130101; G06F 40/103 20200101; G06F 3/04883 20130101;
G06K 9/2054 20130101 |
Class at
Publication: |
715/512 |
International
Class: |
G06F 17/00 20060101
G06F017/00 |
Claims
1. A computer-implemented system for digital ink revisions,
comprising: an annotation module that recognizes a handwritten
annotation in an image of a document; and a command module that
executes a command associated with the recognized handwritten
annotation.
2. The system of claim 1, the annotation module differentiates
between an executable handwritten annotation and a non-executable
handwritten annotation.
3. The system of claim 2, the command module selectively enables
execution of the executable handwritten annotation.
4. The system of claim 3, further comprising a layout manager that
adjusts a layout of the document based at least in part upon the
executed command.
5. The system of claim 4, the layout manager selectively adjusts
the layout of at least a section of the document.
6. The system of claim 5, the section of the document is at least
one of a line, a paragraph, a page, a frame, a user-defined
section, and an entire document.
7. The system of claim 6, further comprising an undo module that
enables undoing a performed command.
8. The system of claim 7, the undo module enables undoing performed
commands in a non-linear fashion.
9. A computer-implemented method for digital ink revisions,
comprising: recognizing a handwritten annotation in an image of a
document; and executing a command associated with the handwritten
annotation.
10. The computer-implemented method of claim 9, further comprising
determining whether a handwritten annotation is executable.
11. The computer-implemented method of claim 10, further comprising
selectively enabling execution of the executable handwritten
annotation.
12. The computer-implemented method of claim 11, further comprising
adjusting a layout of the document based at least in part upon
executing the command associated with the handwritten
annotation.
13. The computer-implemented method of claim 12, further comprising
undoing the executed command associated with the handwritten
annotation.
14. The computer-implemented method of claim 13, undoing the
executed command associated with the handwritten annotation
includes selecting the executed command from a non-linear group of
commands.
15. A computer-implemented system for digital ink revisions,
comprising: means for recognizing a handwritten annotation in an
image of a document; and means for executing a command associated
with the handwritten annotation.
16. The computer-implemented system of claim 15, further comprising
means for determining whether a handwritten annotation is
executable.
17. The computer-implemented system of claim 16, further comprising
means for selectively enabling execution of the executable
handwritten annotation.
18. The computer-implemented system of claim 17, further comprising
means for adjusting a layout of the document based at least in part
upon executing the command associated with the handwritten
annotation.
19. The computer-implemented system of claim 18, further comprising
means for undoing the executed command associated with the
handwritten annotation.
20. The computer-implemented system of claim 19, means for undoing
the executed command associated with the handwritten annotation
includes means for selecting the executed command from a non-linear
group of commands.
Description
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is related to co-pending U.S. application
Ser. No. ______, entitled, "LIFTING INK ANNOTATIONS FROM PAPER",
filed on Jun. 23, 2005, co-pending U.S. patent application Ser. No.
10/758,370, entitled, "IMAGE-BASED DOCUMENT INDEXING AND
RETRIEVAL", filed on Jan. 15, 2004, co-pending U.S. patent
application Ser. No. 10/934,306, entitled, "FREEFORM DIGITAL INK
ANNOTATION RECOGNITION", filed on Sep. 3, 2004, and co-pending U.S.
patent application Ser. No. 11/095,393, entitled, "SYSTEMS AND
METHODS FOR DETECTING TEXT", filed on Mar. 31, 2005.
BACKGROUND
[0002] Advancements in computing and communications technology have
significantly altered business practices regarding document
creation and use. A great many, if not most, documents are created,
used, and stored in electronic formats. Such use typically includes
annotation and editing functions. In current systems, annotations
and edits can be performed using common input devices such as a
keyboard and a mouse. Other devices, such a pen-based input devices
can also be used.
[0003] Some existing systems allow a user to make freeform digital
ink annotations on a document, and to store such annotations with
the document in a variety of ways. For example, the annotations may
be treated as a separate layer of graphics over the content of a
document, or they may be treated as graphics that are integrated in
a graphical representation of the content of the document.
[0004] Digital ink annotations or revision markings in electronic
documents used by such systems are not truly integrated with the
actual document contents with which the annotations or revisions
are associated, however. Current systems limit the ability of a
user to modify a document's content with digital ink annotations or
revision markings, and none to our knowledge support the ability to
take action based on a user's digital ink annotations.
SUMMARY
[0005] The following presents a simplified summary in order to
provide a basic understanding. This summary is not an extensive
overview. It is neither intended to identify key/critical elements
nor to delineate scope. Its sole purpose is to present some
concepts in a simplified form as a prelude to the more detailed
description later presented. Additionally, section headings used
herein are provided merely for convenience and should not be taken
as limiting in any way.
[0006] An electronic annotation module accesses a freeform digital
ink annotation from a document. The annotation is sent to a command
module that determines whether the annotation is associated with a
command. If so, the command module executes the command on the
document. Layout and flow of the document are affected, and the
effects of execution of the command are presented for
examination.
[0007] A command module selectively executes commands associated
with an annotation on a document. Layout of the document is
affected by the execution of the command. The granularity at which
commands upon the electronic copy of the document and layout and
flow of the electronic copy of the document can be selectively
controlled.
[0008] A command module selectively executes commands associated
with an annotation on a document. Executed commands can be undone
or redone in a non-linear fashion by selecting a command from among
a group of available commands. Executed commands can be undone or
redone individually without having to undo or redo other commands
that were executed after or before the selected command. Layout and
flow of the electronic copy of the document are affected based upon
the undone or redone command and results of the undo or redo action
are presented for examination.
[0009] The disclosed and described components and methods comprise
the features hereinafter described and particularly pointed out in
the claims. The following description and the annexed drawings set
forth in detail certain illustrative aspects. These aspects are
indicative, however, of but a few of the various ways in which the
disclosed components and methods can be employed. Specific
implementations of the disclosed and described components and
methods can include some, many, or all of such components, methods
and their equivalents. Variations of the specific implementations
and examples presented herein will become apparent from the
following detailed description when considered in conjunction with
the drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0010] FIG. 1 is a system block diagram of an annotation command
system
[0011] FIG. 2 is a system block diagram of an annotation command
and layout system.
[0012] FIG. 3 is a block diagram of a map of undo commands
[0013] FIG. 4 is a system block diagram of an annotation lifting
system.
[0014] FIG. 5 is a flow diagram depicting a general processing
flow.
[0015] FIG. 6 is a flow diagram depicting a general processing
flow.
[0016] FIG. 7 is a flow diagram depicting a general processing
flow.
[0017] FIG. 8 is a flow diagram depicting a general processing
flow.
[0018] FIG. 9 is a flow diagram depicting a general processing
flow.
[0019] FIG. 10 is a schematic block diagram of a sample-computing
environment.
[0020] FIG. 11 is an exemplary environment for implementation.
DETAILED DESCRIPTION
[0021] As used in this application, the terms "component,"
"system," "module," and the like are intended to refer to a
computer-related entity, such as hardware, software (for instance,
in execution), and/or firmware. For example, a component can be a
process running on a processor, a processor, an object, an
executable, a program, and/or a computer. Also, both an application
running on a server and the server can be components. One or more
components can reside within a process and a component can be
localized on one computer and/or distributed between two or more
computers.
[0022] Disclosed components and methods are described with
reference to the drawings, wherein like reference numerals are used
to refer to like elements throughout. In the following description,
for purposes of explanation, numerous specific details are set
forth in order to provide a thorough understanding of the disclosed
subject matter. It may be evident, however, that certain of these
specific details can be omitted or combined with others in a
specific implementation. In other instances, certain structures and
devices are shown in block diagram form in order to facilitate
description. Additionally, although specific examples set forth may
use terminology that is consistent with client/server architectures
or may even be examples of client/server implementations, skilled
artisans will appreciate that the roles of client and server may be
reversed, that the disclosed and described components and methods
are not limited to client/server architectures and may be readily
adapted for use in other architectures, specifically including
peer-to-peer (P2P) architectures, without departing from the spirit
or scope of the disclosed and described components and methods.
Further, it should be noted that although specific examples
presented herein include or reference specific components, an
implementation of the components and methods disclosed and
described herein is not necessarily limited to those specific
components and can be employed in other contexts as well.
Artificial intelligence based systems (for example, explicitly
and/or implicitly trained classifiers) can be employed in
connection with performing inference and/or probabilistic
determinations and/or statistical-based determinations as in
accordance with one or more aspects of the subject invention as
described hereinafter. As used herein, the term "inference" refers
generally to the process of reasoning about or inferring states of
the system, environment, and/or user from a set of observations as
captured via events and/or data. Inference can be employed to
identify a specific context or action, or can generate a
probability distribution over states, for example. The inference
can be probabilistic--that is, the computation of a probability
distribution over states of interest based on a consideration of
data and events. Inference can also refer to techniques employed
for composing higher-level events from a set of events and/or data.
Such inference results in the construction of new events or actions
from a set of observed events and/or stored event data, whether or
not the events are correlated in close temporal proximity, and
whether the events and data come from one or several event and data
sources. Various classification schemes and/or systems for example,
support vector machines, neural networks, expert systems, Bayesian
belief networks, fuzzy logic, and data fusion engines, among
others, can be employed in connection with performing automatic
and/or inferred action in connection with the subject
invention.
[0023] Furthermore, the present invention may be implemented as a
method, apparatus, or article of manufacture using standard
programming and/or engineering techniques to produce software,
firmware, hardware, or any combination thereof to control a
computer to implement the disclosed invention. The term "article of
manufacture" as used herein is intended to encompass a computer
program accessible from any computer-readable device, carrier, or
media. For example, computer readable media can include but are not
limited to magnetic storage devices, for example, hard disk, floppy
disk, and magnetic strips, among others, optical disks such as
compact disks (CDs) and digital versatile disks (DVDs), among
others, smart cards, and flash memory devices like, card, stick,
and key drives, among others. Additionally it should be appreciated
that a carrier wave can be employed to carry computer-readable
electronic data such as those used in transmitting and receiving
electronic mail or in accessing a network such as the Internet or a
local area network (LAN). Of course, those skilled in the art will
recognize many minor modifications may be made to this
configuration.
[0024] FIG. 1 is a system block diagram of an annotation command
system 100 in accordance with an aspect of the disclosed invention.
The annotation command system uses an image 110 of a document that
includes handwritten annotations. Such annotations can be
interlineations, revision marks, marks for emphasis such as
underlining, circling, or highlighting, margin notes, or other
annotations. Although some annotations can be little more than mere
doodles, other annotations, for example, revision marks, indicate
that some action concerning text of the document is to be taken.
For instance, a strikeout mark placed through a word indicates that
the word is to be deleted. A caret ( ) placed in the typewritten
text and accompanied by handwritten text indicates that the
handwritten text is to be inserted at the position of the caret. A
paragraph mark ( ) indicates that a new paragraph is to begin at
the position the mark was placed. Many other symbols can be used to
indicate an action to be taken.
[0025] In a computing environment, such marks that indicate actions
to be taken can be treated as an implied command that the computer
can execute. The annotation and command system 100 can recognize
annotations generally using the annotation module 120. Within a set
of recognized annotations, the annotation module can identify and
separate out an individual annotation 130. A command module 140
accesses the annotation 130 to determine whether the annotation 130
is of a class of annotations that are treated as implied commands.
Such implied command annotations can be predefined, such as
well-known revision marks, or can be a newly created symbol that a
user can associate with a command to execute when the newly created
symbol is recognized as an annotation.
[0026] The command module 140 can execute a command or commands
associated with the annotation 130 to revise an electronic copy of
the document 150. Such revisions alter the content of the document
and consequently its appearance. Contents of electronic documents
flow in the sense that text or other content is rearranged when
content is added, moved, or deleted within the document. Generally,
there are multiple levels of granularity for flow. At a line level,
contents of a line can be rearranged based upon changes to items in
the line. A level above the line level is a paragraph level.
Similarly, when contents of a paragraph are altered, layout of the
paragraph may be altered. Flow concepts can also be applied at the
levels of sections and entire documents. Contents can be pushed
onto preceding or succeeding levels at each level of granularity or
a sum of additions can negate effects of deletions (or vice-versa)
resulting in no change in flow. Depending upon specific alterations
made at each level of granularity, a change may or may not cause
contents to reflow within or between granularity levels.
[0027] In another possible implementation, the image 110 of a
document can instead be an electronic version of the document that
includes electronic annotations. Such a document can be created in
a wide variety of ways. Among those ways specifically contemplated
is through use of a tablet computing device that allows a user to
make pen- or stylus-based input on a document. The annotation
module 120 can access the document 110 and identify an annotation
130 in the document 110. The command module 140 can act upon the
annotation 130 and execute a command associated with the annotation
130. A modified version 150 of the document 110 can thereby be
produced.
[0028] FIG. 2 is a system block diagram of an annotation command
and layout system 200 in accordance with an aspect of the
invention. The annotation command and layout system 200 includes an
electronic document 210 that includes a number of annotations 220,
230, 240. Annotations 220, 230 are clearly implied commands to
delete and insert text, respectively. Annotation 240 is a highlight
annotation. Highlighting can be can be interpreted in multiple
ways. The annotation can be interpreted first as not falling within
the class of annotations that are implied commands. If interpreted
as an implied command, multiple commands can be mapped to
highlighting. For example, if interpreted as a command to emphasize
text, such emphasis can be added by applying underlining, bold
typeface, italic typeface, changing case to all capital letters, or
another way. Highlighting can also be interpreted as indicating the
highlighted text is important and should be indexed for quick
retrieval later.
[0029] In the case of ambiguous annotations such as highlighting,
at least two approaches are possible. First, a user can predefine a
meaning for the annotation. Alternatively, the user can choose an
appropriate command at a time when the ambiguous annotation is
encountered, such as by choosing a command from a list of available
commands.
[0030] A command module 250 interacts with the electronic document
210 and a selection control 260. The selection control can provide
an ability to selectively execute commands associated with
annotations. For example, a first instance of a strikeout
annotation can be executed by the command module 250 but a second
instance could be ignored. Similarly, the selection control can
provide an ability to disable execution of a single command
altogether, only when a specific command is followed by a second
specified command, or at occurrence of some other user-specified
scenario. For instance, a user can decide that highlighting a
sentence indicates that it should be indexed for quick retrieval
later; and that highlighting and underlining a sentence means that
the sentence should be copied and inserted into a database.
[0031] The electronic document 210 can also be accessed by a layout
manager 280. The layout manager 280 can reposition elements of the
electronic document in response to occurrences of certain events,
for instance, execution of commands associated with annotations.
The layout manager 280 also interacts with a granularity control
290. The granularity control 290 provides an ability to exert
control over layout behavior at various levels of granularity. For
example, a user can fix a granularity level at the paragraph level
such that content can reflow at lower levels of granularity but
that structures of paragraphs will not be affected. Other
granularity-based controls can be employed as well.
[0032] The command module 250 can also interact with the
granularity control 290. For example, a user can adjust granularity
for commands issued. For example, a user could indicate that the
command module is not to execute commands unless execution of the
command will have layout effects only at or below a certain
granularity level, such as the line level. Alternatively, the user
could indicate that a command should be executed at a specific
granularity level, such as applying a typeface to an entire
paragraph instead of a single word as indicated by an annotation.
Other scenarios are possible as well.
[0033] The command module 250 also interacts with an undo module
270. Typically, undo commands are linearly or temporally arranged
and chained together in the sense that in order to undo a command
that was executed in the past, a user also must undo all commands
that followed the desired command. The undo module 270 is
non-linear. A user can select any previously-executed command and
undo that single command without undoing commands that followed in
time. Correspondingly, a user can immediately see an effect on
layout of the electronic document 210 when a specific command is
undone without losing effects of subsequent commands.
[0034] FIG. 3 is a block diagram of a map 300 of undo commands in
accordance with another aspect of the invention. The undo module
270 (FIG. 2) can provide non-linear undo capabilities by storing
actions to be undone in an undirected graph or map of actions, such
as the map 300. The map 300 includes a group of actions 310. Each
action is uniquely identified (depicted by a subscripted number) so
that a user can identify a specific action to be undone.
[0035] When a user creates a new annotation, other annotations that
depend from that new annotation for correct behavior can be linked
to the new annotation. Linking can occur at a time when the new
annotation is interpreted as a command, regardless of whether the
command is executed and placed in the map 300.
[0036] For example, a user can make an annotation by crossing out a
word in a sentence. The user can make a second annotation by
crossing out the entire sentence. The annotation representing the
word cross-out depends from the second annotation crossing out the
entire sentence in the sense that if the second annotation is
executed as a command, thereby striking the sentence from the
document, the first annotation does not have any effect.
[0037] As another example, the user can make an annotation by
highlighting a sentence. The user can make a second annotation by
crossing out part of the same sentence. The annotation representing
the highlighting depends from the annotation representing the
cross-out in the sense that if the cross-out is executed and that
part of the sentence is deleted from the document, then the
highlight only highlights the remaining portion of the sentence.
Generally, commands that can alter content of the document can be
depended upon. Any command can depend on another command, including
commands that can alter content of the document.
[0038] When an action 310 is undone, the action 310 is removed from
the undo map and added to a similar redo map (not shown). The redo
map shares the attribute of non-linearity for flexibility in
choosing commands. Similarly, when an action is redone, the action
is removed from the redo map and added back to the undo map.
[0039] The value of the above-described system is better
appreciated by understanding the importance of recognizable
annotations. While the vision of the paperless office remains a
future goal, many technologies including high-resolution displays,
advances in digital typography, and the rapid proliferation of
networked information systems are contributing to a better
electronic reading experience for users today. One important area
of enabling research is digital document annotation. Digital
annotations persist across document versions and can be easily
searched, shared, and analyzed in ways that paper annotations
cannot.
[0040] With reference to FIGS. 4-9, flowcharts in accordance to
various aspects of the invention are presented. While, for purposes
of simplicity of explanation, the one or more methodologies shown
herein, for example, in the form of a flow chart, are shown and
described as a series of acts, it is to be understood and
appreciated that the subject invention is not limited by the order
of acts, as some acts may, in accordance with the subject
invention, occur in a different order and/or concurrently with
other acts from that shown and described herein. For example, those
skilled in the art will understand and appreciate that a
methodology could alternatively be represented as a series of
interrelated states or events, such as in a state diagram.
Moreover, not all illustrated acts may be required to implement a
methodology in accordance with the subject invention.
[0041] FIG. 4 is a flow diagram depicting a general processing
method 400 that can be used in conjunction with various components
disclosed or described herein. Processing of the method 400 begins
at START block 405 and continues to process block 410. At process
block 410 a document that includes annotations is obtained. Such a
document can be preexisting on a computing system or can be created
specifically for use with the method 400.
[0042] At process block 415, each annotation in the document is
analyzed to determine whether the annotation is executable in the
sense that it represents a command to be performed on the document.
Processing continues at decision block 420 where a determination is
made whether the analyzed annotation is to be executed, such as in
response to an instruction from a user. If yes, a command
associated with the annotation is executed at process block 425. If
the determination is no, processing returns to process block 415
where another annotation is analyzed. It is contemplated that some
mechanism for avoiding infinite processing loops can be employed at
an appropriate place in the method 400.
[0043] Processing of the method 400 continues at process block 430
where dependencies for the annotation are determined. At process
block 435, the annotation is placed in an undo map. Processing
continues at process block 440 where the document is reflowed.
Processing terminates at END block 445.
[0044] FIG. 5 is a flow diagram depicting a general processing flow
500 that can be used in conjunction with various components
disclosed or described herein. Processing begins at START block 505
and continues to process block 510. At process block 510 an image
of a document including annotations is obtained. At process block
515, annotations are lifted from the image of the document.
Processing continues at decision block 520 where a determination is
made whether lifted annotations are executable. If yes, an
associated command can be executed at process block 525. If no,
processing continues at process block 1030 where the annotation is
linked to an electronic copy of the document. Processing from
either process block 525 or 530 continues at process block 535
where the electronic copy of the document is reflowed. Processing
terminates at END block 540.
[0045] FIG. 6 is a flow diagram depicting a general processing flow
600 that can be used in conjunction with various components
disclosed or described herein. Processing begins at START block
605. At process block 610, an annotation command is executed.
Processing continues to process block 615 where an electronic
document is reflowed based upon the executed command. At decision
block 620, a determination is made whether an undo command has been
received. If yes, processing continues to process block 625 where a
command to undo is selected. The selected command is reversed at
process block 630. Processing continues to process block 635 where
the electronic document is reflowed based upon the undone command.
Processing terminates at END block 640. Similarly, if the
determination made at decision block 620 is no, processing
terminates at END block 640.
[0046] FIG. 7 is a flow diagram depicting a general processing flow
700 that can be used in conjunction with various components
disclosed or described herein. Processing begins at START block 705
and continues to process block 710. At process block 710 an
electronic version of a document is created. Processing continues
to process block 715 where a baseline reference image is generated.
At process block 720 an image of a document that includes
annotations is obtained. Processing continues to process block 725
where the baseline reference image is compared with the images of
the document that includes annotations.
[0047] Annotations of the document are identified at process block
730. At process block 735, annotations are segmented. Processing
continues at process block 740 where segmented annotations are
encapsulated in objects. At process block 745, the objects are
linked to an electronic version of the document. Processing
concludes at END block 750.
[0048] FIG. 8 is a flow diagram depicting a general processing flow
800 that can be used in conjunction with various components
disclosed or described herein. Processing begins at START block 805
and continues to process block 810. At process block 810 an
electronic version image of a document that includes annotations is
obtained. Processing continues to process block 815 where
preprocessing of the image occurs. At decision block 1420 a
determination is made whether an unannotated version of the
document exists. If no, processing continues at process block 825
where the document is analyzed for printed text. At process block
830 the printed text is removed.
[0049] If the determination made at process block 820 is yes,
processing continues at process block 835 where the unannotated
image of the document is used to subtract text from the annotated
image. Processing continues from either process block 830 or
process block 835 at process block 840 where annotations are
obtained. At process block 845 strokes of annotations are joined.
Processing continues at process block 850 where the annotations are
digitized. The digitized annotations are linked to the electronic
document at process block 855. Processing concludes at END block
860.
[0050] FIG. 9 is a flow diagram depicting a general processing flow
900 that can be used in conjunction with various components
disclosed or described herein. Processing begins at START block 905
and continues to process block 910. At process block 910 an
electronic version image of a document that includes annotations is
obtained. Processing continues to process block 915 where
preprocessing of the image occurs. At process block 920 the
preprocessed image is sent to a search engine. At decision block
925 a determination is made whether an original unannotated version
of the document can be located. If no, processing continues at
process block 930 where the document is processed to remove printed
text. If yes, processing continues at process block 935 where the
located original is used to subtract printed text from the
annotated image. Processing continues from either process block 930
or 935 at process block 940 where annotations are obtained. At
process block 945 the annotations are digitized. Processing
concludes at END block 950.
[0051] The components and methods disclosed and described herein,
for example in connection with identification tasks, handwriting
analysis tasks, and searching tasks, among others, can employ
various artificial intelligence-based schemes for carrying out
various tasks. For example, analysis of annotations or mapping of
annotations to commands can be facilitated by using an automatic
classifier system and process. Moreover, when more than one
annotation is present or when such annotations potentially
interfere with each other, an automatic classifier system can be
used to manage the annotations and prevent such interference.
[0052] A classifier is a function that maps an input attribute
vector, X=(x.sub.1, x.sub.2, x.sub.3, x.sub.4, . . . x.sub.n), to a
confidence that the input belongs to a class, that is,
f(X)=confidence (class). Such classification can employ a
probabilistic and/or statistical-based analysis (for example,
factoring into the analysis utilities and costs) to prognose or
infer an action that a user desires to be automatically performed.
In the case of software component replacement systems, for example,
attributes can be file descriptors such as filenames, signatures,
hash functions, upgrade codes, compatibility codes, version
numbers, build numbers, release dates, or other data-specific
attributes derived from the device driver files and the classes are
categories or areas of interest, for example, descriptors of other
device drivers that the device driver can update.
[0053] A support vector machine (SVM) is an example of a classifier
that can be employed. The SVM operates by finding a hypersurface in
the space of possible inputs, which hypersurface attempts to split
the triggering criteria from the non-triggering events.
Intuitively, this makes the classification correct for testing data
that is near, but not identical to, training data. Other directed
and undirected model classification approaches include, e.g., naive
Bayes, Bayesian networks, decision trees, and probabilistic
classification models providing different patterns of independence
can be employed. Classification as used herein also is inclusive of
statistical regression that is utilized to develop models of
priority.
[0054] As will be readily appreciated from the subject
specification, the subject invention can employ classifiers that
are explicitly trained (for example, by a generic training data) as
well as implicitly trained (for example, by observing user
behavior, receiving extrinsic information). For example, SVM's are
configured by a learning or training phase within a classifier
constructor and feature selection module. Thus, the classifier(s)
can be used to automatically perform a number of functions,
including but not limited to determining whether a device should be
sent data.
[0055] In order to provide additional context for implementing
various aspects of the subject invention, FIGS. 10-11 and the
following discussion is intended to provide a brief, general
description of a suitable computing environment within which
various aspects of the subject invention may be implemented. While
the invention has been described above in the general context of
computer-executable instructions of a computer program that runs on
a local computer and/or remote computer, those skilled in the art
will recognize that the invention also may be implemented in
combination with other program modules. Generally, program modules
include routines, programs, components, data structures, etc. that
perform particular tasks and/or implement particular abstract data
types.
[0056] Moreover, those skilled in the art will appreciate that the
inventive methods may be practiced with other computer system
configurations, including single-processor or multi-processor
computer systems, minicomputers, mainframe computers, as well as
personal computers, hand-held computing devices,
microprocessor-based and/or programmable consumer electronics, and
the like, each of which may operatively communicate with one or
more associated devices. The illustrated aspects of the invention
may also be practiced in distributed computing environments where
certain tasks are performed by remote processing devices that are
linked through a communications network. However, some, if not all,
aspects of the invention may be practiced on stand-alone computers.
In a distributed computing environment, program modules may be
located in local and/or remote memory storage devices.
[0057] FIG. 10 is a schematic block diagram of a sample-computing
environment 10 00 with which the subject invention can interact.
The system 1000 includes one or more client(s) 1010. The client(s)
1010 can be hardware and/or software (e.g., threads, processes,
computing devices). The system 1000 also includes one or more
server(s) 1020. The server(s) 1020 can be hardware and/or software
(e.g., threads, processes, computing devices). The servers 1020 can
house threads or processes to perform transformations by employing
the subject invention, for example.
[0058] One possible means of communication between a client 1010
and a server 1020 can be in the form of a data packet adapted to be
transmitted between two or more computer processes. The system 1000
includes a communication framework 1040 that can be employed to
facilitate communications between the client(s) 1010 and the
server(s) 1020. The client(s) 1010 are operably connected to one or
more client data store(s) 1050 that can be employed to store
information local to the client(s) 1010. Similarly, the server(s)
1020 are operably connected to one or more server data store(s)
1030 that can be employed to store information local to the servers
1040.
[0059] With reference to FIG. 11, an exemplary environment 1100 for
implementing various aspects of the invention includes a computer
1112. The computer 1112 includes a processing unit 1114, a system
memory 1116, and a system bus 1118. The system bus 1118 couples
system components including, but not limited to, the system memory
1116 to the processing unit 1114. The processing unit 1114 can be
any of various available processors. Dual microprocessors and other
multiprocessor architectures also can be employed as the processing
unit 1114.
[0060] The system bus 1118 can be any of several types of bus
structure(s) including the memory bus or memory controller, a
peripheral bus or external bus, and/or a local bus using any
variety of available bus architectures including, but not limited
to, Industrial Standard Architecture (ISA), Micro-Channel
Architecture (MSA), Extended ISA (EISA), Intelligent Drive
Electronics (IDE), VESA Local Bus (VLB), Peripheral Component
Interconnect (PCI), Card Bus, Universal Serial Bus (USB), Advanced
Graphics Port (AGP), Personal Computer Memory Card International
Association bus (PCMCIA), Firewire (IEEE 1394), and Small Computer
Systems Interface (SCSI).
[0061] The system memory 1116 includes volatile memory 1120 and
nonvolatile memory 1122. The basic input/output system (BIOS),
containing the basic routines to transfer information between
elements within the computer 1112, such as during start-up, is
stored in nonvolatile memory 1122. By way of illustration, and not
limitation, nonvolatile memory 1122 can include read only memory
(ROM), programmable ROM (PROM), electrically programmable ROM
(EPROM), electrically erasable ROM (EEPROM), or flash memory.
Volatile memory 1120 includes random access memory (RAM), which
acts as external cache memory. By way of illustration and not
limitation, RAM is available in many forms such as synchronous RAM
(SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data
rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM
(SLDRAM), and direct Rambus RAM (DRRAM).
[0062] Computer 1112 also includes removable/non-removable,
volatile/non-volatile computer storage media. For example, FIG. 11
illustrates a disk storage 1124. The disk storage 1124 includes,
but is not limited to, devices like a magnetic disk drive, floppy
disk drive, tape drive, Jaz drive, Zip drive, LS-100 drive, flash
memory card, or memory stick. In addition, disk storage 1124 can
include storage media separately or in combination with other
storage media including, but not limited to, an optical disk drive
such as a compact disk ROM device (CD-ROM), CD recordable drive
(CD-R Drive), CD rewritable drive (CD-RW Drive) or a digital
versatile disk ROM drive (DVD-ROM). To facilitate connection of the
disk storage devices 1124 to the system bus 1118, a removable or
non-removable interface is typically used such as interface
1126.
[0063] It is to be appreciated that FIG. 11 describes software that
acts as an intermediary between users and the basic computer
resources described in the suitable operating environment 1100.
Such software includes an operating system 1128. The operating
system 1128, which can be stored on the disk storage 1124, acts to
control and allocate resources of the computer system 1112. System
applications 1130 take advantage of the management of resources by
operating system 1128 through program modules 1132 and program data
1134 stored either in system memory 1116 or on disk storage 1124.
It is to be appreciated that the subject invention can be
implemented with various operating systems or combinations of
operating systems.
[0064] A user enters commands or information into the computer 1112
through input device(s) 1136. The input devices 1136 include, but
are not limited to, a pointing device such as a mouse, trackball,
stylus, touch pad, keyboard, microphone, joystick, game pad,
satellite dish, scanner, TV tuner card, digital camera, digital
video camera, web camera, and the like. These and other input
devices connect to the processing unit 1114 through the system bus
1118 via interface port(s) 1138. Interface port(s) 1138 include,
for example, a serial port, a parallel port, a game port, and a
universal serial bus (USB). Output device(s) 1140 use some of the
same type of ports as input device(s) 1136. Thus, for example, a
USB port may be used to provide input to computer 1112, and to
output information from computer 1112 to an output device 1140.
Output adapter 1142 is provided to illustrate that there are some
output devices 1140 like monitors, speakers, and printers, among
other output devices 1140, which require special adapters. The
output adapters 1142 include, by way of illustration and not
limitation, video and sound cards that provide a means of
connection between the output device 1140 and the system bus 1118.
It should be noted that other devices and/or systems of devices
provide both input and output capabilities such as remote
computer(s) 1144.
[0065] Computer 1112 can operate in a networked environment using
logical connections to one or more remote computers, such as remote
computer(s) 1144. The remote computer(s) 1144 can be a personal
computer, a server, a router, a network PC, a workstation, a
microprocessor based appliance, a peer device or other common
network node and the like, and typically includes many or all of
the elements described relative to computer 1112. For purposes of
brevity, only a memory storage device 1146 is illustrated with
remote computer(s) 1144. Remote computer(s) 1144 is logically
connected to computer 1112 through a network interface 1148 and
then physically connected via communication connection 1150.
Network interface 1148 encompasses wire and/or wireless
communication networks such as local-area networks (LAN) and
wide-area networks (WAN). LAN technologies include Fiber
Distributed Data Interface (FDDI), Copper Distributed Data
Interface (CDDI), Ethernet, Token Ring and the like. WAN
technologies include, but are not limited to, point-to-point links,
circuit switching networks like Integrated Services Digital
Networks (ISDN) and variations thereon, packet switching networks,
and Digital Subscriber Lines (DSL).
[0066] Communication connection(s) 1150 refers to the
hardware/software employed to connect the network interface 1148 to
the bus 1118. While communication connection 1150 is shown for
illustrative clarity inside computer 1112, it can also be external
to computer 1112. The hardware/software necessary for connection to
the network interface 1148 includes, for exemplary purposes only,
internal and external technologies such as, modems including
regular telephone grade modems, cable modems and DSL modems, ISDN
adapters, and Ethernet cards.
[0067] What has been described above includes examples of the
subject invention. It is, of course, not possible to describe every
conceivable combination of components or methodologies for purposes
of describing the subject invention, but one of ordinary skill in
the art may recognize that many further combinations and
permutations of the subject invention are possible. Accordingly,
the subject invention is intended to embrace all such alterations,
modifications, and variations that fall within the spirit and scope
of the appended claims.
[0068] In particular and in regard to the various functions
performed by the above described components, devices, circuits,
systems and the like, the terms (including a reference to a
"means") used to describe such components are intended to
correspond, unless otherwise indicated, to any component which
performs the specified function of the described component (e.g., a
functional equivalent), even though not structurally equivalent to
the disclosed structure, which performs the function in the herein
illustrated exemplary aspects of the invention. In this regard, it
will also be recognized that the invention includes a system as
well as a computer-readable medium having computer-executable
instructions for performing the acts and/or events of the various
methods of the invention.
[0069] In addition, while a particular feature of the invention may
have been disclosed with respect to only one of several
implementations, such feature may be combined with one or more
other features of the other implementations as may be desired and
advantageous for any given or particular application. Furthermore,
to the extent that the terms "includes," and "including" and
variants thereof are used in either the detailed description or the
claims, these terms are intended to be inclusive in a manner
similar to the term "comprising."
* * * * *