петок, септември 16, 2011

IPTV од странство

Уште малку време остана до полуфиналето, па еве едно кратко упатство за сите што сакаат да гледаат пренос на некој од стриминг сервисите кај нас, а се затворени само за ИП адреси од Македонија.

Потребно ви е:
  1. Една машина во Македонија (со јавна IP адреса A.B.C.D)
  2. На машината инсталиран SSH сервер (openssh-server, некој SSH сервер за Windows)
  3. SSH клиент на вашата машина од која сакате да гледате TV (putty за Windows, ssh за GNU/Linux)
  1. На машината каде сакате да гледате телевизија извршете ја следната наредба: ssh -D 1080 user@A.B.C.D (за Windows: putty.exe -D 1080 user@A.B.C.D)
  2. Во вашиот прелистувач поставете SOCKS5 Proxy. Во Firefox тоа е во Preferences->Advanced->Network->Settings->Manual proxy configuration: Socks server:, Port: 1080.
Отворете махтв :)

понеделник, април 26, 2010

Data gathering

The last post was a month ago... How time flies :)

So, first thing, corpus retrieval. As previously stated, the corpus that i'm using is taken from the Southeast European Times news site. You can either retrieve it manually (wget or htttrack is your friend), or just grab the ready-made version here. Whatever thing you do, make sure that you:
  • Clean up html tags. You can either use regular expressions, or a ready made tool (ex. redirect w3m output).
  • Normalize quotes, hyphens etc (ex. to ", and -- to -)
  • Sentence-split the entire corpus. You can use Europarl's sentence splitter or some other integrated tool like MorphAdorner.
  • You'll probably need to lowercase everything, but keep the original as well.
The Macedonian texts are probably wrongly interpreted, and contain invalid characters. You'll need to replace:
  • Latin o with њ
  • Latin f with ѓ
  • Latin Y with џ
Some texts in Macedonian (and probably other languages as well) are not translated, so you'll have to remove them. In order to identify such texts, a n-gram language classifier would do the trick. You have one in MorphAdorner, separate implementation in libTextCat, or you can type it your self.

Next: tokenization. Again, you have ready tools for it, in MorphAdorner or tokenizer.perl in Europarl's tools.
After XML conversion, the corpus looks like the following:
<div type="article" n="3" xml:id="SETmk.3">


<s xml:id="SETmk.3.1"><w>Македонските</w> <w>партии</w> <w>од</w> <w>опозицијата</w> <w>ја</w> <w>бојкотираа</w> <w>средбата</w> <w>со</w> <w>владата</w> <c>..</c> </s>

<s xml:id="SETmk.3.2"><w>СКОПЈЕ</w> <c>,</c> <w>Македонија</w> <c>-</c> <w>Лидерите</w> <w>на</w> <w>најголемите</w> <w>партии</w> <w>од</w> <w>опозицијата</w> <w>во</w> <w>Македонија</w> <c>,</c> <w>Социјал</w> <w>демократскиот</w> <w>сојуз</w> <w>на</w> <w>Македонија</w> <w>и</w> <w>Демократската</w> <w>унија</w> <w>за</w> <w>интеграција</w> <c>(</c> <w>ДУИ</w> <c>)</c> <c>-</c> <w>Радмила</w> <w>Шекеринска</w> <w>и</w> <w>Али</w> <w>Ахмети</w> <c>-</c> <w>не</w> <w>присуствуваа</w> <w>на</w> <w>работниот</w> <w>појадок</w> <w>со</w> <w>владините</w> <w>лидери</w> <w>и</w> <w>владејачките</w> <w>партии</w> <w>во</w> <w>понеделникот</w> <c>(</c> <w type="dig">25</w> <w>декември</w> <c>)</c> <c>.</c> </s>
Easy so far :)

Depending on the number of texts removed from the corpus, the total token count per language could vary. Initially, the corpus contains around 5.5M tokens per language. My filtered corpus contains 3.6M tokens in Macedonian, and 3.4M tokens in the English version. Of those, 83% (~ 3M) are words, and the rest various punctuation characters.

* Edit: added link to libTextCat, as mentioned by Unhammer.

четврток, март 25, 2010

The battle for fourth

After the depressive result against Man Utd, finally something nice - Aston Villa failed to win against Sunderland, and Manchester City lost against Everton, both at home! This weekend we have a game against Sunderland, and I hope only for the best. Acquilani would be my pick again, Liverpool has actually won all games when he's started (sadly, only 4).

On the SMT side, I'm finally reaching BLEU scores for my 10folds on the SETimes corpus. MK-EN is about 56, and EN-MK is approximately 57. They top my original expectations, and I haven't even finished the MERT process (which is taking ages to complete). The results are high because most texts are direct translations from English to Macedonian, so I'll try to complete a new test set, taken from some other (similar) source.

понеделник, март 15, 2010


So, tonight we have a game on... Liverpool - Portsmouth. This should be an *easy* game considering league positions and player quality, but this is not a normal season, and the Reds play like crap, constantly.

Still, my money would be on a 2-0 victory. I'd like to see Acquilani getting some more time on the pitch instead of Lucas or even Gerrard, who has been disastrous, but with Benitez, you never know.

Post-match update: 4-1, excellent result, and supposedly fine performance.

недела, март 14, 2010

So, what am I working on?

That seems like a logical place to start with. For a while now I've been experimenting with Moses, a statistical machine translation system. My aim is to train a satisfactory Macedonian-English (and vice versa) MT system. The most notable (and probably only) SMT system including Macedonian is Google Translate, but since they don't publish they corpora/engine, we'll have to manage with something else :) Francis Tyers is also working on a similar set, we'll probably continue doing something together.

So, first thing first, what is Statistical Machine Translation? To put things simply, SMT works by "learning patters of translation" from a parallel text between the source and target language (i.e. parallel corpora), and from those pattern is able to generate the most probable translation for a sentence in the source language. It is not an easy task, takes up lots of computing power and memory, but is quite satisfactory when its done :)
Theoretically, in order to create a system for translating text from one language to another using SMT, you only need parallel corpora. Probably the best freely available parallel corpora is JRC-Acquis. It contains 22 languages, including all languages spoken in the European Union. Unfortunately, Macedonian is not in that group yet.

The Macedonian-English parallel corpora that I'm using for my experiments is generated from the Southeast European Times online newspaper. It is significantly smaller compared to JRC-Acquis, but will be enough for testing purposes. Francis has published the entire corpora on his web site, including alignments between 10 languages. Since a some of the Macedonian articles in SETimes are not translated, I had stripped them.

Moses is the core of a SMT system, but along the way we use many other tools. Initially, I will just list all of those tools, and in the following posts I'll go through each of them in detail.
  1. Corpus retrieval: wget :)
  2. Corpus filtering, parsing etc - my own tools, messy code, dont know if it'll be published.
  3. Part of speech tagging - SVMTool, TreeTagger, Apertium, T'n'T, MBT etc.
  4. Sentence alignment - I'm using HunAlign, but Vanilla should be ok too.
  5. Word alignment - any GIZA++ derivative like giza-pp.
  6. Language modelling toolkits - I'm using IRTSLM, other popular options are SRILM and RandLM.
  7. SMT decoder - the already mentioned Moses.
  8. Optimisations - various scripts included in Moses.
  9. Scoring - for now, BLEU, NIST.
Since many of the processes, especially word alignment, decoding and optimisation (minimum error rate training) are slow, they are run on a grid cluster, part of SEE-GRID. Ten-fold validation is even a bigger bugger, so running everything at home is not an option :)

That'll be enough for now, next time I'll cover something more on the SETimes corpus and sentence alignment.

понеделник, март 08, 2010

Back again

Since my old blog platform is down, I'll be dropping my thoughts here. Expect something about free software, machine translation, music, football etc.

For starters, the new Gorillaz album sound great so far :)