Possible to upgrade your account

February 3rd, 2013

uClassify has been around since October 2008, and to date has almost 15000 registered users and nearly 2000 classifiers. All this time the web api has been completely free with no restrictions what so ever (number of calls, classifiers, size of classifiers etc). But lately we have gotten a lot more traffic over our web api. This is of course a lot of fun but it also adds more server cost. Therefore I want to try to introduce payment options for those who can pay but keep it free for the majority of users.

Free, Indie, Professional and Enterprise Accounts

What I want to do is to introduce a pricing model that doesn’t affect the majority of users and hopefully only affects those who can afford to pay.

After analyzing the logs I’ve found only a few percent of the users make more than 1000 calls per day. Therefore I decided to introduce a limit of max 5000 calls per day for free accounts. Keeping in mind that I want it affordable for everyone I introduced both ‘Indie’ and ‘Professional’ accounts. Both with a cap of 100.000 calls per day. The indie account is for smaller companies (<100.000€ yearly revenue). The pricing for an Indie account is initially set to 9€/month and for professional 99€/month.

On top of that there is an option to upgrade to 1.000.000 calls / day for a price of 299€/month for high end users. Also I will offer a free Academic account with 1.000.000 calls / day cap for researchers.

To sum up
Free 5000 calls/day
Indie* 9€/month -> 100.000 calls/day
Professional 99€/month -> 100.000 calls/day
Enterprise 299€/month -> 1.000.000 calls/day
Academic 1.000.000 calls/day

*Indie=For small companies and private persons with yearly revenue < 100.000€

Subscription will be done via Paypal.

What will happen to existing accounts?

If you already have a uClassify account it will be upgraded to an Enterprise account with X months expiry time. All of those who are likely to be affected will be emailed with a heads up. But most of you won’t notice this change.

The system will likely be implemented during the nearest weeks.

I am open to suggestions, if you have feedback or think this sucks please let me know! (contact AT uclassify DOT com)

Sentiment analysis with keyword extraction

January 14th, 2013

Lately we have been getting a lot requests to our sentiment classifier, many are from social media analyst companies. In fact our sentiment analysis is now the most popular classifier at uClassify!

I just wanted to share something that could be usable for you guys. By using our latest Api call, ‘classifyKeywords’ you can see which keywords are the strongest triggers for the positive and negative classes. This could reveal additional valuable information for your clients.

For example, if you use the keyword analysis on a long product review, you could use the keywords to extract the sentences where the product is mentioned in a positive or negative way. Why not highlight it in green or red? Highlighting sentences will give a very good overview for human reviewers.

Here is how an XML request looks like (just swap ‘classify’ for ‘classifyKeywords’):

<?xml version=”1.0″ encoding=”utf-8″ ?>
<uclassify xmlns=”http://api.uclassify.com/1/RequestSchema” version=”1.01″>
<texts>
<textBase64 id=”tweet1″>bm93IHNvbWV0aW1lcyBpIHdvbmRlciB3aGF0</textBase64>
</texts>
<readCalls readApiKey=”YOUR_READ_API_KEY_HERE”>
<classifyKeywords id=”ClassifyKeywords” username=”uClassify” classifierName=”Sentiment” textId=”tweet1″/>
</readCalls>
</uclassify>

You can find more info about ‘classifyKeywords’ here.

The sentiment classifier is described in more detail here.

 

Text Analytics Api Overview

January 6th, 2013

uClassify is an open tool to allow users to create and share classifiers. Todo this uClassify provides three APIs (URL, XML and Local Server), here is a short overview and comparison of those.

URL API

The URL API is simple to use, just send an GET request with an URL to get a response.

For example making a sentiment classification (sign up for a free read api key):
http://uclassify.com/browse/uClassify/Sentiment/ClassifyText?readkey=YOUR_READ_API_KEY_HERE&text=I+love+school&version=1.01

The response will be in XML or alternatively JSON. You can classify a text or let uClassify download an URL for you and classify the content (optionally with or without the HTML).

When to use the URL API
- Want to get up and running quickly
- Low volumes of classifications (can be slow on many requests at once)
- Each text is only run through one classifier (otherwise you should batch with XML API)
- If you only is interested in classifying and not training or other fancy features.

The URL API documentation can be found here.

XML API

With the XML API you can do everything. You can create classifiers, train them, classify, extract keywords and more. Another important feature is that you can batch calls. This means that you can get thousands of, say, tweets or blog posts, classified in one single request as long as the request string is less than 1 MB.

To make an XML request, you simply build an XML string and POST it to:
http://api.uclassify.com/ on port 80.

Here is how you batch two calls into one request:

<?XML version="1.0" encoding="utf-8" ?>
<uclassify xmlns="http://api.uclassify.com/1/RequestSchema" version="1.01">
  <texts>
    <textBase64 id="UnknownFantasyText1">SXcgYklRdHFEYXEgYklsZW5namFq</textBase64>
    <textBase64 id="UnknownFantasyText2">UGFkb2wgcmFpZCwgYXRoYW4gaGVuZGFk</textBase64>
  </texts>
  <readCalls readAPIKey="YOUR_READ_API_KEY_HERE">
    <classify id="Classify1" classifierName="FantasyLanguage" textId="UnknownFantasyText1"/>
    <classify id="Classify2" classifierName="FantasyLanguage" textId="UnknownFantasyText2"/>
  </readCalls>
</uclassify>

When to use the XML API
- Gain performance by batching multiple calls into one request
- Need access to the full API (classifier creation, training, keywords etc)
- This is the recommended way

You can find the complete documentation here.

Local Server

As a final option you can run a local classification server. This is for users who have huge amounts of data to process.

The API is pretty much the same as the XML API except that no authentication is needed.

When to use a local classification server
- You have huge amounts of data to process
- CPU performance is very important (you don’t have to share CPU cycles with other uClassify users)
- Install the server in your own data centre, to avoid any network lag to uclassify.com
- Have full control over the server

You can find more info here and the technical server manual.

Keywords API

December 31st, 2011

With the keywords API you can extract relevant/discriminating words from texts, this opens up a lot of possibilities for developers. Keywords can be used to for tag clouds and answer questions such as why a text is classified into a class. Compared to ordinary tag clouds they bring an extra angle as they are not the overall keywords but only for a certain genre. For example you can find out what parts of a text makes it manly using the gender classifier at the same time running it through the mood classifier and finding out keywords that indicate happy parts.

After having tested the keyword API for a while I’ve just made it public in the XML API now. It works exactly like the classify API but  you will get back a list of keywords for each class as well.

In short this is how a call can look:

<?xml version="1.0" encoding="utf-8" ?>
<uclassify xmlns="http://api.uclassify.com/1/RequestSchema" version="1.01">
  <texts>
    <textBase64 id="UnknownText1">bm93IHNvbWV0aW1lcyBpIHdvbmRlciB3aGF0</textBase64>
  </texts>
  <readCalls readApiKey="YOUR_READ_API_KEY_HERE">
    <classifyKeywords id="ClassifyKeywords" classifierName="MySpamClassifier" textId="UnknownText1"/>
  </readCalls>
</uclassify>

Example response:

<?xml version="1.0" encoding="utf-8" ?>
<uclassify xmlns="http://api.uclassify.com/1/ResponseSchema" version="1.01">
  <status success="true" statusCode="2000"/>
  <readCalls>
    <classifyKeywords id="ClassifyKeywords">
      <classification textCoverage="0.96">
        <class className="Legitimate" p="0.12"/>
        <class className="Spam" p="0.88"/>
      </classification>
      <keywords>
        <class className="Legitimate">uclassify jon computer urlai</class>
        <class className="Spam">viagra cheap pills</class>
      </keywords>
    </classifyKeywords>
  </readCalls>
</uclassify>

More info is available in the XML API documentation.

Happy new years!

Classifier Visualization

November 29th, 2011

I’m currently working on a new keywords API for uClassify. This will allow users to get information about what words that are good discriminators for certain classes. To test this API I spent last weekend to built a visualization application for urlai.com.

Here is a screenshot how the visualization prototype show data:

 

I would very much like to get some feedback on this, you can try it here, please comment below.

 

Sentiment API

March 22nd, 2011

sentiment
Understanding if a text is positive or negative is easy for humans, but a lot harder for computers. We can “read between the lines”, get jokes and identify irony. Computers aren’t quite there yet but the gap is quickly closing in.

Our contribution is a free Sentiment API that can help users to do market research, brand surveys and see trends around their campaigns. The API will not only reveal if a document is positive or negative, it will also indicate how positive or negative it is.

Demo

You can try it directly here and get your own API by signing up.

Dataset credits

The Amazon reviews dataset have been collected and formatted by Mark Dredze at the John Hopkins University. Many thanks for sharing!

Mattias Östmar has manually built the Mood classifier with his sweat and tears, thanks for letting me use it for this classifier. A big hug! (he really likes hugs)

Techy description

The API is available in XML and REST, with XML/JSON responses.

The sentiment classifier is based on circa 40000 Amazon reviews from 25 different product genres. Documents from the genres are merged into one classifier with two classes, positive and negative.

On top of this I’ve integrated the Mood classifier, my hope is that it will help to capture some more emotional traits in texts, also it complements the Amazon training data since it is taken from another domain (obvious difference is that it contains swear words).

The expected accuracy is about 78% (macro-precision: 77% and macro-recall: 77%) running 10-fold cross validation.

Image by Anna Gathu.

New look

March 20th, 2011

I’m very happy to announce that we have just given the uClassify.com homepage a new look (obviously). It’s a lot brighter than the old and we hope you like it. A big thank you to Anna Gathu who designed it.

There are no changes to the functionality except that public classifiers are now sorted on the total number of calls so classifiers that are more commonly used are shown first. Language detection is our most popular classifier which has classified over 5 million documents.

Let us know how you like the new style.

uClassify Server Indie license

January 18th, 2011

First to clarify: this doesn’t affect our free web api. The priced licenses found under products applies to users that need to run local uClassify server for reasons such performance and security.

Indie developers

We are now offering a new server license for independent developers and smaller companies (<€100.000 in annual revenue). The price is only €99/year for the first 20 to sign up, after this the price will double to €199/year. Our hope is to help more companies to solve a hard problem. The uClassify classification server is highly scalable, robust and accurate. Try it out for yourself!

There is also a new professional license available, see products for more information.

API change: Moved textCoverage into ApiVersion 1.01

January 15th, 2011

The last release of the API introduced a new feature called textCoverage. This release was a bit premature and supposed to go into the API version 1.01 in order not to break any of our users response parsers.

If you have not changed anything in your parser during the last couple of days this should not affect you. If anyone was quick enough to start using the textCoverage under version ’1.00′ this change means that it will disappear from the responses and then you need to bump the version to 1.01. I am really sorry about that.

Bumping xml version

For xml just chage the version number from ’1.00′ to ’1.01′: <uclassify xmlns=”http://api.uclassify.com/1/RequestSchema” version=”1.01“>

Bumping the url API version

Here you need to add a new paramter, ‘version’ and set it to the version: http://uclassify.com/browse/uClassify/Text Language/ClassifyUrl?readkey=YOUR_READ_API_KEY_HERE&url=http%3a%2f%2fblog.uclassify.com&version=1.01

You can read more about version handling here.

I am really sorry for any disturbance this may have caused. Let me know if you need any support with this.

uClassify Corpus Tool BETA

January 10th, 2011

With the uClassify Corpus Tool you will be able to build and test classifiers locally without any programming involved. It’s included in the distribution of the uClassify server. You can download the server evaluation version here.

Classifier representation

This tool is really simple to use. To represent a classifier simply create a directory on your hard drive with the name of the classifier. Then create sub directories for each class belonging to this classifier.

For example:
c:corpussentiment (classifier ‘sentiment’ directory)
c:corpussentimentpositive (class ‘positive’ belonging to classifier ‘sentiment’)
c:corpussentimentnegative (class ‘negative’ belonging to classifier ‘sentiment’)

Now you just fill each class directory with documents belonging the that class. For example put positive Amazon reviews in the ‘c:corpussentimentpositive’ and negative reviews in the ‘c:corpussentimentnegative’ folder.

Testing a classifier

To test this classifier you run the uClassify Corpus Tool:
uclassifytool.exe -test c:corpussentiment

This will output some basic metrics on the performance such as accuracy, macro precision, macro recall and the f1 measure between precision and recall. Also some per class statistics are shown.

In order to calculate custom metrics on a classifier you can export a confusion matrix with the the flag ‘-outcm’. This will allow you to calculate a lot of other measurements on the classifier. You may also output per class (one vs all) statistics with the ‘-outpc’ flag.

Building a classifier

To build a classifier:
uclassifytool.exe -build c:corpussentiment

This will create a binary that the uClassify server can read. It’s basically a frequency distribution with some additional information. The resulting file will be called ‘sentiment.dat’ and placed in the root dir of the classifier (in this case ‘c:corpussentimentsentiment.dat’).

Now you can just copy this file to your local uClassify server classifier directory.

Public data sets

There are hundreds of public data sets that you can test the classifier on. You can just download them, unzip and put their documents in a directory structure that the uClassify Corpus Tool understands. To mention a few:

Future

For now the .dat files can only be used by your own local uClassify server, however, we are looking into ways to make it possible to upload .dat classifier files to the uclassify.com to be used via the web api.

uClassify Tool Screenshot