The inaptly named Windows RSS Platform is actually part of IE7, not part of Windows, and therefore is available on Windows XP if IE 7 has been installed, as well as on Windows Vista (where IE 7 is included originally). However, having said that, it isn’t just for IE: it includes a complete COM API which is usable from script or the .Net Framework, and the header files are part of the Windows Platform SDK and usable from C/C++.

The RSS Platform is intended to introduce a unified approach to RSS for Windows applications, where all applications use the same RSS feed store, and a service handles downloading the RSS feeds — including enclosures if requested — and normalizes them so applications need not handle parsing all the different feed formats (that is, you only need to parse the Microsoft-normalized RSS 2.0 with extensions).

As a platform for building RSS-based applications, it’s very well done, and well thought out. It’s now ridiculously easy to create an RSS reader, since the platform removes all need to parse XML except in the weirdest situations, and allows all applications to be instantly integrated on the same list of RSS feeds … let me show you …. (more…)

Well, I’ve decided to refer to my SOM Recommender by the initialism SOMR (which for the sake of the argument, I pronounce “sommer” like “summer” but with an o), and I’ve been working on it for about a month. It’s been a busy month outside of working on this project, with end-of-year stuff at work, and of course, the Christmas holiday with family, but I’m basically tracking correctly on my schedule despite that. (more…)

Well, I’ve started taking the “MS Thesis and Project Seminar” course at RIT, which is the first step towards registering my Thesis (or project) with the school and finishing off my degree!

I’m currently nursing two main ideas for projects related to Artificial Intelligence, and this past week I met with Jessica Bayliss to discuss the second idea and started work on a independent study focusing on refining this second idea and determining whether it’s Thesis material or not. The majority of what I did this week, and plan to do over the next week is researching the existing research in the area of Self-Organizing Maps and classifiers, including reviewing my previous research to refresh my memory.

I’ve also created draft documentation of both ideas as posts on my blog. I’ve linked to them below, but these posts posts will change a lot over the next couple of months, and are marked “private” and thus not accessible to the general public … sign up on the front page and drop me a line if you’re really interested.

  1. The first is a project idea for a Learning Notification System which would give more control over computer notifications and alerts to the end user. The primary product is a system akin to GROWL for the Mac, but with multiple levels of alerts, and a learning classification algorithm which allows the computer to intelligently avoid interrupting the user.
  2. The second idea is for a full-blown Thesis, which I’m not really sure I want to attempt. However, this idea for an SOM-based classifier could also be done as a project, and in either case would actually be fairly interesting. It revolves around the idea of building a classification system based on SOM algorithms. Currently there’s many parts to this idea, and it’s really possible that this could be fodder for several project-length experiments.

The basic idea here is to build a classification system based on SOM algorithms which can be used to pick “interesting” articles from sites like delicious, diigo, magnolia, and lilisto (I have a partial list of possible sites here).

There are currently several parts to this idea, and it’s really possible that this could be fodder for several project-length experiments.

The first question

Can I build a classifier which rates documents on how closely they match your interests, based on placing them in a self-organizing map which uses keywords to position the document. I have already built an algorithm which applies GHSOM to the relationship between keywords which were applied to documents, so the task here is mainly to see how useful this information is for mapping additional documents and for classifying them by interest.

The next steps:

  1. Apply the algorithm to individual documents and see where they are placed
  2. Determine the area of the map that represents the user’s interests (either by inference from having them rate documents, or by directly “circling” on the map their area(s) of interest)
  3. Rate documents by their (multi-dimensional) proximity to these areas.

The second question

Is this method more effective when using keywords generated by actual people than when it uses machine-generated keywords. There are many existing document sumarizing and keyword extraction algorithms, and even commercial products (eg: brevity intellexer). One or more of these could be run on the document to extract keywords instead of using the human-generated keywords available on delicious et. al. This would make the algorithm more capable of analyzing “any” documents, and would reduce dependency on the websites mentioned earlier (although this seems important, it may be of limited use, since the intent is to classify interesting documents from an incoming “stream” of documents, and currently my “stream” comes from these same sites where the keywords come from).

The next steps:

  1. Create a collection of documents with their human-generated keywords
  2. Run machine summarizing algorithms on these documents
  3. Compare the resulting mappings for relevancy ( what is the metric here? )

Additional questions

The most important open question (to me) is whether this idea is original enough to work as a thesis at RIT (as opposed to becoming a project). If it’s not, I’m leaning toward working on a different project which is somewhat more interesting to me.

However, there are several other open questions:

  • Is GHSOM better than a non-hierarchical growing SOM, or even a simple SOM algorithm for this task? (Instinctively, it seems that the key requirement is that the map size must be inferred, and thus that a growing algorithm is required, but the hierarchy may be uneccessary).
  • How does this system using free keywords (anything can be a keyword, including the user-name of the person who creates the keywords) compare to a system which has set categories. It seems that the classification would have much less adapting to do in a situation where categories are limited, since in the current system new keywords are constantly being added to the database and the algorithm must infer a user’s interest in these new keywords.

There are many opportunities for the use of AI in improving mainstream user interfaces. One particular area where little has been done is in the way our computers “alert” us of problems or information that we may need to know. Current operating systems provide little or no way for the user to control this, making no attempts to filter the information presented to the user (intelligently or otherwise), leaving the burden of optimizing notifications and alerts to the individual applications.

Individual application developers, on the other hand, only have control over the way their specific application interacts with the user, and perceive that providing less alerts than other apps, or providing them in a way that is less intrusive than the norm, will be seen by users as inconsistent, and could be considered annoying or even “buggy” by end users. Furthermore, providing sophisticated means for the user to determine what alerts or notifications they see is of little use on a per-application basis for most applications, so few developers have made any efforts in this regard, other than developers of email and instant messaging or news readers applications.

To illustrate the current state of the art, and show where it is lacking, take Outlook 2003, an example many will be familiar with. Outlook allows you to have sounds play or alerts pop up based on rules you create which are applied to incoming email, but it is not context aware, so is not able, for instance, to avoid playing sounds when you are in a meeting, nor can it choose to use sound alerts instead of popups when the screensaver is engaged. Outlook also lacks any form of learning or intelligence, so it can only perform these notifications based on specific rules the user has created: if you have a rule to be notified when you recieve an email from your manager, it’s based on the email address, and will not activate if, for instance, your manager emails you from home.

We propose a way to give more control to the end user by building a notification system with multiple types of alerts, and allowing the user to control which applications and indeed, which specific notifications are allowed to use which types of alerts. Further, we propose that the operating system itself could ease the burden on end users by building “smart” filters based on machine learning algorithms, which can adapt to individual user’s prefferences and help create adaptive rules for rating the importance and urgency of incoming messages to determine which notifications a user wants to see. Lastly, we propose a contextual awareness system which will modify the ratings of messages based on information about the current state of the user, whether that be in a meeting, playing a game, away from the computer but still in the room, or even out of the office, but available by phone.

We intend to provide a baseline implementation of this as a replacement for the Windows “system notification tray.” This will be implemented using the Windows Shell Exchanger toolkit which allows multiple system tray applications to run at the same time, and thus allows our app to run over Explorer, GeoShell or other third-party shells. We will, of course, implement additional APIs for delevopers of third party apps (beyond that of the system tray) which would include additional information for the filters … but we will endeavor to allow users to create rules for any application that currently uses the default Windows system tray notification area. Our implementation will provide multiple levels of alerts, starting with no notification at all, and progressing through just changing icons, and through sound alerts, and “toast” windows to modal popups and even email, SMS, and pager notification.

Our implementation will also include bayesian? learning filters based on an implementation from POPFile? which allows us to automatically categorize different alert or notification messages based on content, source, and source-assigned alert levels. While this learning system is expected to have only rudimentary success on current system tray applications, we provide a sample application in the form of a calendar app? which uses multiple “levels” of alerts as provided in our system’s API, and will do user testing which we expect will prove that when the system has this full information, it is able to substantially reduce user irritation by prompting the user less frequently and less intrusively than current systems. (more…)