NLTK Cheat Sheet

I am currently reading Natural Language Processing with Python, an excellent introduction into Computational Linguistics. Below a list of technical terms:

Bigram = “In the”, “the beginning”, “beginning god” “god created” “created earth”
Lexical Entry
Lemma + Gloss = Headword + Sense definition
Wordlist Corpora = (sophisticated) wordlist
Stopwords = high frequency words such as to, in, a.
Swadesh wordlists = Lists ca. 200 common words

Holy Macro!

Wir entbehren leicht das Beten,
Doch das Fluchen ist vonnöten,
Wenn man gegen Feinde rennt –
Himmel-Herrgott-Sakrament!

Nicht zum Lieben, nein zum Hassen,
Sollt ihr uns den Herrgott lassen,
Weil man sonst nicht fluchen könnt –
Himmel-Herrgott-Sakrament!

[Heinrich Heine]

MySQL Cheat Sheet

Connecting to a DB:

mysql -u username -p database_name
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 222
Server version: 5.1.44 Source distribution
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

Simple Query

mysql> SELECT * FROM LANGUAGE;
+----+---------+------+----------------+
| id | version | code | with_phonetics |
+----+---------+------+----------------+
|  1 |       0 | Cn   |               |
|  2 |       0 | En   |                |
|  3 |       0 | Jp   |               |
|  4 |       0 | De   |                |
+----+---------+------+----------------+
4 rows in set (0.38 sec)

Creating a New Database

mysql> CREATE DATABASE new_name_db;
Query OK, 1 row affected (0.07 sec)

Creating a New User

mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass'; 

Granting User Rights

mysql>GRANT ALL PRIVILEGES ON  mydbname.*  TO  someuser;

Changing to Another Database

mysql> USE new_name_db;
Database changed
mysql>

Deleting a Database

mysql> DROP DATABASE some_db; Query OK, 1 row affected (0.00 sec)
mysql>

Database Dump

mysqldump -u root -p dbname > filename

Import a Dump

mysql -u username-p password database_name < filename.sql

Altering a Table

ALTER TABLE some_table MODIFY some_number FLOAT(11) NOT NULL DEFAULT 0;

Grails, MySQL and Encoding Problem

I recently installed MAMP (MySQL 5.5, PHP) on Mac OS for using MySQL together with Grails. Strangely, the Chinese and Japanese character input didn’t work as expected, something that I had never experienced problems with when working in Grails.

After having wasted the better part of an afternoon I finally found out that the problem occurred contrary to my initial suspicion not inside of the new Grails 1.4 release but between Grails and the MySQL database server. Adding useUnicode=true&characterEncoding=UTF8 to the connection URL did the trick, like so:

jdbc:mysql://localhost:8889/test_db?useUnicode=true&characterEncoding=UTF8

Problem with Grails Integration Test in IntelliJ IDEA

I tried to test a Grails Service with an Integration Test in my beloved IDEA IDE – sometimes it worked as expected, sometimes the service was not injected and the test failed with a Null Pointer Exception.

It took me a while to figure out that the problem is related to the Run /Debug configuration. When IDEA applies a Run/Debug configuration in which the Integration Test is assigned to the Unit Tests Configuration, the Test is treated exaclty us such and consequently the Service is not injected.

The solution to the problem is therefore to make sure that your Integration Test is running inside the Grails Configuration in IDEA.

Grails and the Burning-Image Plugin on Windows

The Grails part is straight forward as documented. As for the Windows environment make sure that you have the jmagick.dll in your <JDK>/jre/bin directory and the jmagick.jar in the <JDK>/jre/lib directory.  Also make sure that the core_rl_magick_.dll is installed on your system. You can do so by downloading and installing an ImageMagick version that contains the dlls, e.g. ImageMagick-6.3.9-0-Q16-windows-dll.exe.

Grails and smartgwt

To set up a grails and smartgwt project basically follow this great tutorial by Peter Ledbrook.
The equally useful tutorial by Josip goes one step further.

1) Create a grails project

2) Install the gwt plugin

3) Install the smartgwt plugin

4) Create a module

5) Fill in the entry point: Create the DataSource and Form Classes. Attention: If you use Josips tutorial make sure that in the function

initEditForm()
the formWindow.setHeaderControls(HeaderControls.HEADER_LABEL, closeControl); methode is called first thing before any of the other formWindow.set(..) methods, otherwise you get am IlegalStateException.
Check if the url to the controller that are called from within your RestDataSource are correct.

6) Inherit from smartgwt

7) Generate the gsp page that holds the gwt client and move it from the web-app to the grails-app/view directory.

8) Remove the grails main.css from the layout/main.gsp  page

9) Add

<script>var isomorphicDir = "gwt/org.example.SmartButton/sc/"</script> to the main.gsp page but leave gwt/ as is!

10) Alter the url mapping so that the gsp page holding the gwt client is loaded by default.

11)  Run the compile gwt module command

12)  Fire up grails and fire up the gwt-client

Grails and GWT in IntelliJ’s IDEA: Not a valid GWT installation Error

The other day I treated myself to a license of IntelliJ’s IDEA and I am loving it especially when working with Grails projects.

When I started toying around with the GWT plugin for Grails however, I ran into trouble because apparently the GWT_HOME environment variable that I defined for the bash shell is not visible to IDEA which results in a nasty ERROR: null is not a valid GWT installation show stopper – among others.

To solve the problem I created the file ~/.MacOSX/environment.plist and edited it so that it looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>GWT_HOME</key>
<string>/usr/share/gwt</string>
</dict>
</plist>

In IDEA’s Run Debug configuration make sure that the include parent environment variables option is selected.
In this way any environment variable defined in the file environment.plist is passed to applications that are started from the finder such as IDEA.

Instead of defining GWT_HOME for the finder I could have added it to IDEA’s Run / Debug Configurations but the downside to this solution is that any script triggered by Run Target that depends on environment variables such as run-gwt-client would fall flat again.

Grails 1.3.6 Bug in jquery Tag: Page Reqeuest Instead of AJAX Call

There is a bug in Grails 1.3.6 that prevents (at least) the remoteLink to work correctly. Instead of calling the specified controller closure as an AJAX call, a normal page request is conducted resulting in a futile attempt to display a page on the part of the server.

Downloading the latest Grails 1.3.7-SNAPSHOT release solved the problem for me.