Abstract:
This is a method and system for automated calendar event creation from unstructured text, with assisted administration and viewing.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims the benefit of provisional patent application Ser. No. 61/128,579, filed 2008 May 23. 
     
    
     TECHNICAL FIELD 
       [0002]    This invention relates to electronic mail systems, computer based calendar systems, and the Internet. 
       BACKGROUND ART 
       [0003]    Two of the major productivity tools available today on computer systems are electronic mail (email) and calendar applications. Email originated as a pure electronic version of a mail/message delivery system. Calendar applications began as a straight translation of a pen and paper based personal organizer calendar implemented on a computer. Since then, many features have been added onto both applications. A few examples include IMAP4 and improved user-client front ends for email and, for calendars, meeting invites, subscribing to published calendars, and scheduling assistance. With the fast growth of the web, email use has exploded in size and volume—so much so that email systems frequently have trouble organizing and protecting the user from unwanted email messages (spam), and even the sheer volume of valid emails. 
         [0004]    Calendar systems in comparison have remained more closed and proprietary, and while large progress has been made in supplying users of any given calendar sources from which they can subscribe/insert events into their calendar, the management systems of these calendar tools are frequently incompatible (as opposed to universal use of email protocols such as IMAP and POP), and have not kept up with the increase in electronic communication and styles. The majority of modern calendar applications, at their core, are still representations of the basic pen and paper datebook calendar—they have a day view, a week view, a month view, and occasionally a year view, with the ability to have multiple calendar channels overlaid on the same display page. These channels are separate groups of events, which the user can create, find (on the web), and individually enable/disable in their view. Typically, these groups share a specific category (e.g. DVD release dates, or Work vs. Home events), and are rendered in the same color or identifying mark. In U.S. Pat. No. 7,039,598 to Lu (2006), these channels may be entirely separate calendars. Scheduling is the area with the most progress and inventions, examples include U.S. Pat. No. 7,318,040 to Doss et al. (2008), which describes predicting and adjusting future working hours and calendar events for users of electronic calendars, and U.S. Pat. No. 7,411,942 to Croak et al. (2008), which describes a method of reserving appointments over a network. Basic calendar management is the next major area of progress, with examples such as Pat. No. 7,149,810 to Miller et al. (2006), which expand upon management features protecting past events, and recurring events. U.S. Pat. No. 7,325,198 to Adcock et al. (2008) capitalizes on a calendar management interface, and uses a calendar construct and graphical user interface to organize photos—here the utility is about helping view photos taken, as opposed to using images to help base calendar management. 
         [0005]    Although these tools increase user productivity over the absence of any such tool, their usage doesn&#39;t scale well. Faced with large volumes of outside (unstructured) event information through mediums such as email, and even large volumes of internal separate calendar channels or events from which to subscribe, the user must still manually manage a large percentage of their calendar, and, more importantly—the calendar events for the user, in their entirety, more often than not do not represent the user&#39;s true schedule, significantly hindering tools like automatic scheduling that expect the calendar to be precise or exact. Commonly, those entries that are personal in nature (i.e. not pre-published in a ready-made calendar channel, or where the introduction/interest in an event is a personal preference) require the most manual effort. There are a few existing email/calendar systems that auto-fill and assist the user in creating calendar events from unstructured data such as Google Gmail/Calendar or Apple Mail, but none of them take the final step of auto-creating or updating events from information outside the calendar system without any user intervention, and, in all of them, the user is forced to remember to edit/modify that event as new information arrives (e.g. via email). What is lacking is a fully automatic calendar event creation mechanism with provisions in place to dynamically and quickly adjust these events, or how they are viewed, when necessary. 
       SUMMARY OF THE INVENTION 
       [0006]    This is a method for automatic calendar event administration and viewing. In addition to traditional calendar administration techniques, this system includes the ability to automatically add calendar entries directly based on parsing incoming email, and alternate sources (e.g. the Web). Entries are overlaid, positioned, and colored according to their priority (not category), which is both a measure of the importance of this event to the user, as well as a measure of an estimate of the accuracy that the entry is valid (not in error). One email or alternate data source may create multiple calendar entries. Entries are also automatically removed or moved according to new email or new data from alternate sources that pertain to the event created. The user can quickly visually remove unwanted entries by simply moving a slider or single control that sets a filter threshold for events shown based on their priority/validity. Automatic event creation scales easily with large increases in email or alternate source activity and keeps the calendar up to date and full. Global controls such a single slider and values such as an event score allows the user to quickly discard, highlight, or otherwise adjust these events, and assists this automatic system in keeping the user&#39;s calendar relevant. 
         [0007]    In an integrated system, there is no separate calendar event storage—email and calendar are one and the same tools, with each just being a different view of the same data or integrated data. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS  
         [0008]      FIG. 1  is a diagram of the process by which a calendar entries are automatically added or marked and deleted. 
           [0009]      FIG. 2  is a diagram of how calendar entries are dynamically selected for viewing. 
           [0010]      FIG. 3  is a diagram of a process by which calendar entries can be adjusted by the user. 
           [0011]      FIG. 4  is a snapshot of a calendar view with a score slider controlling which events are visible on the calendar. 
       
    
    
     DETAILED DESCRIPTION  
       [0012]    The preferred embodiment of the process by which calendar entries are automatically created or detected is shown in  FIG. 1 . Preferably incoming email, or any other alternate unstructured text (including the web/HTML), is first parsed for any dates, an executive summary, and any relevant text near each date [ 101 ]. Unstructured text is assumed to be any form of text that is not already formatted in a documented calendar format (e.g. vcal) that would make calendar event creation trivial, but it can also be the latter. If no dates or possible dates are found, no calendar event or additional data is created. In the preferred embodiment, partial dates are allowed, with full dates inferred using heuristics. Examples include, but are not limited to: if a day is stated (e.g. Wednesday), the closest upcoming Wednesday&#39;s date is used (no time). If a month day is detected (e.g. the 26 th ) but not the month or year, the current month and year is assumed. In both these examples, additional context also helps set the baseline from which to extrapolate the complete date. One example is the receipt date of the source (e.g. email message) itself. The executive summary can also be created using heuristics—e.g. the subject of the email, or the Title element of a HTML page, or the text near the date if all obvious summary elements are missing, etc. 
         [0013]    If one or more dates are found [ 102 ], a scan is then done to see if this email or source, or the calendar event candidates, are linked to prior sources or calendar entries [ 103 ]. Here, the definition of linked is a statistical measure of correlation or relation to prior sources or entries, but also includes direct links (e.g. the relation is stored directly in a database). Examples of links include, but are not limited to: the source was a reply to an earlier email that contained its own dates/calendar entry candidates, the calendar event candidate is an exact or near duplicate of a currently existing candidate, the source itself appears to be an exact or near duplicate of a prior one, or the calendar event candidate appears to be an exact or near duplicate of popular, frequently discovered entries across multiple users/sources. It should be noted that in another variation of this invention, this check and subsequent actions could be done after scoring, or skipped entirely. If links are found, and new dates are found to be replacements of the old dates (e.g. the new dates have or will have high scores, and the old dates have equal or lower scores) [ 105 ], the old calendar entries are either automatically removed, or their score, if not already low, is set to the minimum. Alternatively, depending on context, the user may be prompted on what to do with the old entries [ 106 ]. If no new dates are found, or they do not appear to be valid replacements for the prior entries, no additional special action is done for this case. 
         [0014]    For all cases, a score is then created for each event candidate based off of each date found, the original text, and any relevant context associated with the text (e.g. prior event creations or other links [ 103 ] [ 104 ]. Scores of any linked calendar entries still existing are also recalculated, if necessary. Examples of score weights include, but are not limited to: the spam level measured for an email message source (measured by any currently existing spam filter technology, including detection of bulk emailings vs. individual), an email source was a reply to a previous email and the date is in the reply vs. the date was found in text copied from the original email (i.e. the score is adjusted as a function of the chronological history and placement within the entire email thread for the date in question), the email is from someone in the user&#39;s preferred contact list, the strength of the date inference (e.g. was the date a full date in the original text in lieu of a partial), and the uniqueness of the date in general (e.g. did the unstructured text include many dates or just one), and the sent to/receive from frequency ratio for that sender in general. 
         [0015]    After these steps, whether or not the text is found to be linked, the final list of calendar entries is pruned to remove redundant entries or entries whose score is below a bottom threshold [ 107 ]. Finally, these entries are created with their score, date, executive summary, links to the original text/email, and links to all relevant and connected calendar entries (e.g. all entries just created from this text, or linked text) [ 108 ]. 
         [0016]    In any system where events are automatically created, it is likely that the user&#39;s calendar will contain far more events than the typical calendar today. It is also possible that errant events could be created (e.g. two separate calendar entry candidates might be created from the same text: one is correct, one is incorrect). In order to retain the benefit of automatic event creation, it is critical that the user have immediate global control, including visualization, over the events on the calendar. 
         [0017]    The first key control for the preferred embodiment of this invention is shown in  FIG. 2  and  FIG. 4 . This diagram shows the event rendering process. For a day view (one day displayed), or week view (one week displayed), month view (month view displayed), or any alternate sized view in time, a dynamic filter is applied to events to be shown based solely on the score of each event and their date. First, the user adjusts a simple single slider or single input box to set a score threshold [ 401 ]. The calendar is then re-rendered, beginning with the retrieval of event candidates [ 201 ]. For each event, if the event&#39;s score (priority) is greater than the set threshold, and if the event&#39;s date is within the range of the current view selected on the calendar [ 202 ], it is rendered [ 203 ]. Otherwise it is not. If the event E is rendered, it is rendered visually behind (and slightly offset) any overlapping events with a score greater than event E&#39;s score, and visually in front of (and slightly offset) any events with a score less than E&#39;s score. If there is enough screen real estate, overlapping events can be rendered next to each other, with the position being denoted by the event outline shadow only. The rendering does not have to be completely behind or in front—visually showing prominence is all that is required. Unless overridden, each event&#39;s background color, or alternatively, the text color, is also dictated by its score. In this process, if the user sets the threshold to the max, the calendar will immediately display only the most important/relevant calendar entries. In the preferred embodiment, these entries represent entries that the user has carefully created or manually marked as important/correct. If the user sets the threshold to the minimum, all discovered entries will be shown. Thresholds set in between render a set of events in between these two. Such a system not only allows the user to quickly visualize and adjust large amounts of calendar events—it also allows them to quickly fill/see possibilities for calendar dates that do not contain important/top score events (e.g. all choice dates/time for a meeting not yet set are rendered, or all event choices for an otherwise empty evening without an important calendar event can be shown). This is in contrast with alternate calendar interfaces, where the user would have to repeatedly click multiple channels on and off to get the event mix they need, or, the events they would like to visualize are not even present since they were not automatically created. 
         [0018]    In order to highlight any new calendar entries, the preferred embodiment of this invention also includes the ability to temporarily highlight—via a different color, border, or border animation—new automatically created entries or entry candidates independent of their score, or rather, temporary increase the score of new calendar entries. This rendering can be done in any manner, but it is preferred that it be complimentary and not mutually exclusive or conflicting in how all other calendar entries are rendered. This allows the user to quickly identify new entries, and take action on them. 
         [0019]    A visual example of a simple calendar system with global threshold control is shown in  FIG. 4 . By adjusting the slider [ 401 ] to the minimum setting, only important events [ 402 ] will be rendered. By adjusting the slider to the maximum, all events will be rendered [ 402 , 403 ]. 
         [0020]    The second key user calendar control for the preferred embodiment of this invention is the ability of the user to quickly adjust or mark a particular event of a set as valid/unique, or perform an alternate action that globally modifies that event and all related events. This is shown in  FIG. 3 . Since it is possible for the automated system to find multiple candidate dates from a source (e.g. someone sent an email with three choices of dates, and later confirmed verbally or via email which was the right date), and not automatically detect that it should remove or adjust a particular entry instead of creating a new one, in this case, the user must adjust their calendar. For a particular group of events that originated all from the same text source, or were linked via the process in  FIG. 1  to other calendar entries, by clicking on any one event (or any other alternate control that references that event) that the user knows is the right date and time of a valid event, or of interest in some other fashion [ 301 ], the user can mark this event as valid/unique, or perform an alternate action across the entire group of events. In doing so, all the other related events are immediately dropped from the calendar without further user intervention [ 302 , 303 ], or, alternatively, adjusted according to the user&#39;s wish (e.g. all events should be raised in priority). The net result is a single user click (on occasion), as opposed to the user repeatedly updating/changing an event with the new information. 
         [0021]    In the preferred embodiment of this invention, the single source of unstructured text that is used as the source for calendar entries is email, as this is a primary source from which users receive calendar-worthy notes from work, friends, or favorite websites that send email updates. In an alternate variation of this invention, other sources could also be linked in and used, which include, but are not limited to: SMS, favorite websites (direct from the site, not via emails), published databases or calendars, or the entire web in general (filtered by high level preferences) 
         [0022]    In the preferred embodiment of this invention, a calendar and email application are an integrated system—there is no separate calendar event storage, or, at a minimum, each application component has full access to the other&#39;s data. One example would be to store additional calendar event data as headers or as separate emails within a specific folder on an IMAP server. Another would be to add additional link and parsed mail information into a traditional calendar event database. This allows for streamlined performance, and a cleaner, integrated interface (e.g. “today&#39;s” unread emails that have no additional date/event information would show up as moving event items in the current day view), assisting in presenting email and calendar data as the same tools, with each just being a different view of the same data or integrated data. 
         [0023]    In an alternate variation, this entire system can be implemented on top of any preexisting calendar system feature set or application that has an api for event manipulation. For example, a current calendar system that uses channels or category to color calendar entries, in lieu of a score, can continue to do so. The additional automatic creation and visualization would apply only to those events automatically created, which could be done per channel or category, or, globally, for example. In another variation, the primary calendar can use background images rendered behind or around the text of each calendar event as the identifying marker for the calendar entry&#39;s category, and keep color as the marker for priority or score. In another variation, the use of background images and color could be reversed. The background images need not be square or of any traditional shape. The background images can also be used simultaneously with color—in one variation, the background images can be skewed in color according to a color chosen for the event&#39;s score if background images are used for category, or for the event&#39;s category if background images are used for score.