Embodiments of the invention are generally directed toward generating calendar events in a calendar application, and more specifically toward automatically generating calendar events from a text input.
Technologies for searching interesting patterns in a text input presented by a computer to a user are well-known. U.S. Patent Application No. 2008/0243841, assigned to the same entity as the instant application, is one example of a document describing such a technology.
Manual input of a calendar event, for example, by keyboard and mouse, presents a user with a dialog box that has various distinct fields, such as location, subject, date, time, etc. The user needs to navigate each of these fields to provide, according to the type of interface for that field, information describing the calendar event.
In one embodiment, a text input is received in a calendar context. The text input is processed with a context-neutral extraction process to generate a first set of elements and with a calendar-specific extraction process to generate a second set of elements. A calendar event is created from the first set of elements and the second set of elements and the event is displayed on a display device without confirming the elements of the calendar event with a user.
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements.
Various embodiments and aspects of the inventions will be described with reference to details discussed below, and the accompanying drawings will illustrate the various embodiments. The following description and drawings are illustrative of the invention and are not to be construed as limiting the invention. Numerous specific details are described to provide a thorough understanding of various embodiments of the present invention. However, in certain instances, well-known or conventional details are not described in order to provide a concise discussion of embodiments of the present inventions.
Reference in the specification to one embodiment or an embodiment means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearance of the phrase “in one embodiment” in various places in the specification do not necessarily refer to the same embodiment. The term “click” may refer to an input from a pointing device such as a mouse or a trackball. The term “click” may also refer to one or more user inputs on a touch screen or touch pad, including multiple simultaneous touches on the touch screen and various gestures on the touch screen. The term “click” may refer to a modified user input including input from multiple input devices, such as a touch screen, a pointing device, a keyboard, a microphone, etc. The term “keyboard” may refer to a physical keyboard with mechanical and/or electrical keys, or a portion of a touch screen or touch pad permanently or temporarily assigned for use as keystroke acquiring region. The term “drag” may refer to a combination of holding down a button on a pointing device and moving the pointing device. The term “drag” may also refer to holding one or more fingers down on a touch-sensitive surface and dragging the one or more fingers across the service. The term “drag” may refer to a combination of sustained touch inputs combined with input from another input device, including, but not limited to, one or more of the following: an accelerometer, a light sensor, and a button.
Calendar applications are used to schedule and manage events occurring over time. For example, a user may use a calendar application to keep track of upcoming meetings at work. The user may use another calendar to keep track of social appointments. In order to use the calendar application to manage these various calendar events, the events are input into the calendar through various means. The user may manually input the events, or the user may receive an email attachment that represents an event. The event may also be described in plain text in an email, and data detection techniques may be used to extract details of the event from the email.
Manually inputting a calendar event generally utilizes a dialog box which includes different fields, such as date, duration, subject, location, invitees, start time, the calendar to which the event belongs (e.g., work, social, etc.), and other elements. Each of these fields may use a different type of interface for receiving user input. For example, the subject of the event may be a text field, while the calendar selection may be a drop down menu, while start time may be a specialized interface separated into hour, minute, day, month, etc. To input a new calendar event the user types, clicks, and otherwise manipulates the fields in the dialog box.
Many events may be more easily and naturally expressed in plain text by the user. For example,
Turning to
In other embodiments, dialog box 143 is not displayed after the text input session is complete. Instead, calendar event 165 is displayed in the calendar based on the original user input and text input. This reduces the cost in time and effort to the user to input the calendar event.
At block 205, the method receives a text input in a calendar context from a user. The text input may be typed by the user using a keyboard or touch interface. The user may select a day box in a month view of a calendar and clicked a button to display a text input field as illustrated in
At block 210, the method extracts calendar data from the text input. The text input may include elements such as date, location, time, duration, subject, etc. Calendar data may be extracted in one or more phases, as described below in conjunction with
At block 215, the method creates a new calendar event using the extracted calendar data. At block 220, the method displays the new calendar event without prompting the user for confirmation of the extracted calendar data. For example, in
Not confirming the results enhances the risk of an error in the newly created calendar event. However, it enhances the user's efficiency, since the user does not need to review the contents of the dialog box or dismiss the dialog box before continuing to use the calendaring program. The risk of an error is reduced by the calendar application context. Generally, data extraction is performed on textual data originating in different contexts, such as an email program or a voicemail. In these situations, some or all of the text input may be in one or more different contexts other than calendaring.
For example, an email may include a work context, a lunch invitation context, and a joke context, all in the same textual data. This increases the risk of error in the data extraction, since data extraction for calendaring purposes may see similar syntactic patterns in other contexts, but the resulting extraction would be semantically flawed (e.g., mistaking an element in the joke context for an element in the calendar context). This risk is reduced in automatic calendar event generation, since the text input is received from a user in the calendaring context. Since the user is generating the text input with the intention of creating a new calendar event, and the calendar application is performing the extraction assuming the calendar context, the risk that a calendar-like pattern from a non-calendar context will be confused for a calendar pattern is reduced.
Turning now to
The method at block 305 initiates the text input session in response to the user input that includes at least one of a time, date, and duration of a calendar event. Examples of a user input specifying calendar data are illustrated in
In one embodiment, the user input causes a preliminary calendar event to be displayed in the calendar program. For example, if a user double-clicks on a region of the display corresponding to a particular day, the calendar program may display an unnamed calendar event with a default duration occurring on that day. Event 610 of
At block 310, the method receives a text input describing the calendar event. The text input may have originated from a keyboard coupled to a data processing system performing the method. Alternatively, a different source, such as a touch pad, may have provided the text input.
At block 315, the method extracts at least one of a time, date, and duration of the calendar event from the text input. For example, if the text input were “lunch on November 10th,” the extracted date would be November 10.
At block 320, the method resolves a conflict between data from the user input and data extracted from the text input by selecting data extracted from the text input. For example, if the user input indicated November 8, but the date extracted from the text input was November 10, the method would set the date of the calendar event to November 10 in this embodiment. Resolving conflicts provides an example of how text input in a calendar application context reduces the likelihood of mischaracterized patterns during data extraction. If the text input could have originated from contexts other than calendaring, the date may not be relevant to the calendar event. Since this text input is received from a user using a calendar program to input a calendar event, the likelihood that a date in the text input is wrong is reduced. Different embodiments of the invention utilize different conflict resolution rules to resolve conflicts between user input data and text input data.
At block 325, the method displays the calendar event in the calendar application without prompting the user for confirmation of the data in the calendar event. At block 325, the method displays the calendar event in its completed form, incorporating the elements extracted from text input. As a result of the conflict resolution performed at block 320, the resulting calendar event may need to be displayed on a different part of the calendar application interface. For example, if the unnamed calendar event was created on November 10, and the text input included a date of December 24, displaying the resulting calendar event would require, in this embodiment, changing the display of the calendar program from November to December. In some embodiments, this change may be performed using an animation which provides the user a smooth transition. That is, rather than abruptly re-drawing the calendar program interface to show December, an animation may be displayed in which the new calendar event glides from its original location to its new location, including an animated change of months.
Turning now to
In one embodiment, the user may be required to initiate a text input session in the calendar program before dragging the text over. In another embodiment, when the user drags the selected text over a certain part or any part of a calendar program window, the calendar program automatically initiates a text input session allowing the user to drop the text. Dropping the text in the calendar window may end the text input session as well, or the text input session may remain active allowing the user to add to or modify the dropped text.
At block 410, the method extracts data describing a calendar event from the selected text. At block 415, the method displays a calendar event created from the extracted data without prompting the user for confirmation of the extracted data.
In one embodiment, dragging the text over the calendar application display causes a temporary event to be displayed by the calendar program. For example, if the user hovers the text over a region of the calendar display corresponding to a certain hour on a certain day, the calendar program may display the temporary event with a default duration at the location of the hovering text. The temporary event may be partially transparent while the text is hovering, and become solid if the user releases the text. If elements extracted from the selected text conflict with the elements determined from the hover location, the calendar program may use the extracted elements from the selected text. If the elements determined from the hover location are missing from the selected text (e.g., user hovers over the “10 am” row, but the text input does not include a time), then the missing element can be merged into the temporary event and reflected in its display location.
In another embodiment, dragging selected text over the calendar may cause the calendar to automatically extract elements describing a calendar event from the selected text and display a temporary event corresponding to the elements extracted from the hovering text. This may include a transition animation described above. For example, if the calendar program is currently displaying the month of November, and the elements extracted from the selected text being dragged over the calendar program describe a calendar event occurring in December, the calendar program may animate a transition to the month of December and then display the temporary calendar event at the extracted time and date.
In yet another embodiment, the user drags the selected text over to the calendar program and releases the selected text. In response, the calendar program performs the element extraction, animates a transition to the proper timeframe (if necessary), and then displays the calendar event at the extracted time and date. If certain elements cannot be extracted, such as the time of day, the calendar program may display the event at a default time. In addition, the calendar program may display a visual indication adjacent or within the displayed calendar event indicating to the user that the displayed time is a default time.
Turning now to
At block 515, the method extracts a location of the calendar event from the remaining text using a second extraction process. Dialog box 143 of
At block 520, the method extracts a subject of the calendar event from the remaining text input using the second extraction process. Subject extraction may be very basic: all elements of the text input not recognized as elements of the calendar event at blocks 510 and 515 become part of the subject. In other embodiments, more analysis is performed. Dialog box 143 of
In one embodiment, elements extracted using the first process may conflict with elements extracted using the second process, similarly to conflicts between elements associated with a user input and elements generally extracted from the text input, which are described below in conjunction with
In one embodiment, the second extraction process may extract other types of calendar elements. For example, the second process may extract a recurring element from the text input, such as “every other Tuesday” and include that in the calendar event. The second process might also extract attendees/invitees: “meet with Bob.”
In calendar applications that allow a user to have multiple calendars, the second process might extract a destination calendar for the calendar event. For example, if the user wanted to create a calendar event on his work calendar, the text input might be “work: meet with Bob at 3:30 pm on Tuesday,” causing a new calendar event to be created on the user's work calendar to meet with Bob at 3:30 pm on Tuesday for a default period of time at a default location. The second process may also extract other attributes of calendar events, such as whether the event is private (i.e., hidden from other viewers of the user's calendar); how to reflect the event on the user's calendar (e.g., busy, out of the office, free, etc.); whether the event is an all-day event; whether the event has an alarm associated with it; whether the event has any file attachments; whether the event has a URL associated with it; and any notes regarding the event that aren't part of the subject.
Turning now to
For example, if the user wanted to input a calendar event that occurred in February 2012 and the calendar program currently displayed November 2009, it may be easier for the user to rely on the automatic event generation to relocate the calendar event and transition the calendar interface to February 2012. As described in above with respect to the method of conflict resolution, one embodiment of the invention replaces a date associated with the user input with a different date extracted from the text input.
In one scenario, the user double-clicked in the November 12 column at the 10 am row because the calendar event to be input occurs at that time, and in response the calendar interface displays an unnamed calendar event. In this scenario, the default duration of an event is 90 minutes. In another scenario, the user randomly clicked on the display because the calendar event the user will describe in the text input is in a different week on calendar. In both these cases, the method of conflict resolution described above would override time and/or date if elements extracted from the text input differed.
However, in a third scenario, the user double-clicks in the November 12 column and at the 10 am row, which creates an unnamed calendar event in the calendar interface. In this scenario, the default duration of an event is 30 minutes, rather than 90 minutes as in the first scenario. The user resizes the displayed calendar event to give it a duration of one and a half hours, overriding the default. By interacting with the default calendar event a second time in the calendar interface, the user confirms that the date and time associated with the user input is correct. In this scenario, an embodiment of the conflict resolution method described above would not override the event elements associated with the user input that created the unnamed calendar event.
In other embodiments, if the user input includes more than one user action and the more than one user action is used to confirm the calendar elements associated with the user input, the second extraction process may be configured to modify its extraction. For example, if the user input confirms an event on November 10, but the text input includes a date of December 4, the second extraction process may include the date “December 4” as part of the subject. The user input might confirm a meeting at 10 am on November 10 for 1 hour, while the text input may be “Meet with Bob in my office to discuss the December 4 release date.” The second extraction process, using the confirmation from the user input, may determine that the subject of the meeting is “Discuss the December 4 release date,” since the confirmed user input has eliminated December 4 as a meeting date. In another embodiment, only the modified duration is considered to be confirmed, and elements extracted from the text input would override the time and date.
As shown in
The mass storage 811 is typically a magnetic hard drive or a magnetic optical drive or an optical drive or a DVD RAM or a flash memory or other types of memory systems which maintain data (e.g., large amounts of data) even after power is removed from the system. Typically, the mass storage 811 will also be a random access memory although this is not required. While
A display controller and display device 907 provide a visual user interface for the user; this digital interface may include a graphical user interface which is similar to that shown on a Macintosh computer when running OS X operating system software. The system 900 also includes one or more wireless transceivers 903 to communicate with another data processing system, such as the system 800 of
The data processing system 900 also includes one or more input devices 913 which are provided to allow a user to provide input to the system. These input devices may be a keypad or a keyboard or a touch panel or a multi touch panel. The data processing system 900 also includes an optional input/output device 915 which may be a connector for a dock. It will be appreciated that one or more buses, not shown, may be used to interconnect the various components as is well known in the art. The data processing system shown in
In the foregoing specification, automatic event generation has been described with reference to specific exemplary embodiments thereof. It will be evident that various modifications may be made thereto without departing from the broader spirit and scope of the invention as set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.