Pages

Senin, 30 Juni 2014

Memasukkan BabelNet sebagai dependency di Maven Project

Maven POM

Repository configuration:

<repositories>
<repository>
<id>bippo-nexus-public</id>
<url>http://nexus.bippo.co.id/nexus/content/groups/public/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

Dependencies:

<dependency>
    <groupId>commons-configuration</groupId>
    <artifactId>commons-configuration</artifactId>
    <version>1.10</version>
</dependency>
<dependency>
    <groupId>net.sf.jung</groupId>
    <artifactId>jung-algorithms</artifactId>
    <version>2.0.1</version>
</dependency>
<dependency>
    <groupId>edu.mit</groupId>
    <artifactId>jwi</artifactId>
    <version>2.2.3</version>
</dependency>
<dependency>
    <groupId>net.sourceforge.owlapi</groupId>
    <artifactId>owlapi-distribution</artifactId>
    <version>3.5.0</version>
</dependency>
<dependency>
<groupId>it.uniroma1.lcl</groupId>
<artifactId>jlt</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.jena</groupId>
<artifactId>jena-arq</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<!-- TODO: babelnet needs to be upgraded to Lucene 4.9+ -->
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>2.9.4</version>
</dependency>
<dependency>
<groupId>org.babelnet</groupId>
<artifactId>babelnet-api</artifactId>
<version>2.5</version>
</dependency>

Sample Code

TODO: BabelNet 2.5 belum bisa dipakai untuk WSD. Butuh BabelNet 1.0.1 + path indexes v1.0.1.

Required to run `id.ac.itb.ee.lskk.relexid.core.BabelNetTest`

1. Extract [BabelNet-API-2.5.zip](http://babelnet.org/download.jsp) to `$HOME/BabelNet-API-2.5`
2. Extract the indexes to $HOME (will create subdirectories inside `$HOME/BabelNet-2.5`. For testing you can use the small indexes only:
   a. babelnet-2.5-APACHE-20-index.tar.bz2
   b. babelnet-2.5-CC-BY-30-index.tar.bz2
   c. babelnet-2.5-CC-BY-NC-SA-30-index.tar.bz2
   d. babelnet-2.5-CECILL-C-index.tar.bz2
3. BabelNet API v1.0.1 + Path indexes v1.0.1:
   a. http://lcl.uniroma1.it/babelnet/data/babelnet-api-1.0.1.tar.gz 
   b. http://lcl.uniroma1.it/babelnet/data/babelnet-1.0.1-core-lucene.tar.bz2
   See [Ciarán Ó Duibhín's article](http://www.smo.uhi.ac.uk/~oduibhin/oideasra/interfaces/winbabelnet.htm) for reason.
4. Edit `$HOME/BabelNet-API-2.5/config/babelnet.var.properties` and set `babelnet.dir` to `${user.home}/BabelNet-2.5`.
5. Edit `$HOME/BabelNet-API-2.5/config/knowledge.var.properties` and set `knowledge.graph.pathIndex` to `${user.home}/BabelNet-1.0.1`. 

(Self-note) Deploy babelnet-api (dan beberapa dependency JARs) ke Maven repository

Download dulu BabelNet Java API.

Lalu extract distribusi BabelNet Java API.

Buat sources.jar :

jar cvf babelnet-api-2.5-sources.jar -C src .

Upload file-file JAR ke Nexus Maven repository:

mvn deploy:deploy-file -Dfile=lib/jlt-1.0.0.jar -DgroupId=it.uniroma1.lcl -DartifactId=jlt -Dversion=1.0.0 -Dpackaging=jar -Durl=http://nexus.bippo.co.id/nexus/content/repositories/soluvas-public-thirdparty/ -DrepositoryId=soluvas-public-thirdparty

mvn deploy:deploy-file -Dfile=babelnet-api-2.5.jar -DgroupId=org.babelnet -DartifactId=babelnet-api -Dversion=2.5 -Dpackaging=jar -Durl=http://nexus.bippo.co.id/nexus/content/repositories/soluvas-public-thirdparty/ -DrepositoryId=soluvas-public-thirdparty

mvn deploy:deploy-file -Dfile=babelnet-api-2.5-sources.jar -DgroupId=org.babelnet -DartifactId=babelnet-api -Dversion=2.5 -Dpackaging=jar -Dclassifier=sources -Durl=http://nexus.bippo.co.id/nexus/content/repositories/soluvas-public-thirdparty/ -DrepositoryId=soluvas-public-thirdparty

(pas deploy sources ini bakal 400 Bad Request tapi nggak papa koq)

OpenCL untuk komputasi matematika numerik di GPU dengan ViennaCL dan JOCL

Prosesor sekarang sudah terintegrasi dengan GPU dan selain mengakselerasi operasi grafis 2D dan 3D, GPU juga dapat digunakan untuk melakukan komputasi matematika numerik umum misalnya kalkulasi matriks dan aljabar linear.

Saya sendiri belum terbayang fungsi apa di Lumen Knowledge Base yang membutuhkan komputasi numerik intensif, namun andaikan membutuhkan bantuan dari GPU, setidaknya artikel ini menjadi pengenalan awal pemakaian teknologi OpenCL.


Ada 2 teknologi komputasi GPU yang umum yaitu OpenCL dan CUDA. OpenCL dapat berjalan pada semua GPU dari Intel, AMD, NVIDIA, termasuk yang biasa digunakan pada mobile device. Sedangkan CUDA hanya didukung oleh kartu grafis NVIDIA, meski kinerjanya lebih cepat dari OpenCL, karena cara kerjanya dengan mengkompilasi source code function yang diinginkan dalam bahasa C ke object binary proprietary CUDA yang dapat langsung dieksekusi oleh prosesor GPU NVIDIA.

Emang seberapa cepat sich OpenCL (GPU) dibandingkan processing di CPU?

In comparison to native Java the speedup to expect is at least 10x up to a couple of 100x depending on the operations u use. 
Untuk arsitektur berbasis OpenCL, 3 library yang dapat dipakai adalah ViennaCL, JOCL, dan MAGMA.

ViennaCL didevelop menggunakan C++ dan tersedia sebagai library C++ maupun Python. ViennaCL tidak tersedia untuk Java, meski ada kemungkinan menggunakan JNA untuk mengakses native library ViennaCL.


Contoh perhitungan perkalian matriks menggunakan PyViennaCL di Python sebagai berikut:

import pyviennacl as p
import numpy as np

# Let's construct some random 1-D and 2-D arrays
v = np.random.rand(5)
w = np.random.rand(5)

f = np.random.rand(5, 5)
g = np.random.rand(5, 5)

# Now transfer them to the compute device
x, y = p.Vector(v), p.Vector(w)
a, b = p.Matrix(f), p.Matrix(g)

# Represent the dot product of x and y
d = x.dot(y) # or p.dot(x, y)

# Compute the dot product and print it
print("Dot product of x and y is %s" % d)

JOCL adalah library OpenCL yang dapat dipakai di Java.


Contoh program sederhana untuk perkalian matriks menggunakan JOCL di Java sebagai berikut. he..he... kelihatan lebih ribet ya daripada PyViennaCL? ;-) Ya, karena "kernel"nya harus kita tulis sendiri dalam bahasa C, tapi sebenarnya sebagian besar code di bawah adalah boilerplate. Sayangnya JOCL tidak menyediakan library siap pakai untuk fungsi-fungsi matematika umum. :(

/**
* The source code of the OpenCL program to execute
*/
private static String programSource =
"__kernel void "+
"sampleKernel(__global const float *a,"+
"             __global const float *b,"+
"             __global float *c)"+
"{"+
"    int gid = get_global_id(0);"+
"    c[gid] = a[gid] * b[gid];"+
"}";


/**
* The entry point of this sample

* @param args Not used
*/
public static void main(String args[])
{
// Create input- and output data 
int n = 10;
float srcArrayA[] = new float[n];
float srcArrayB[] = new float[n];
float dstArray[] = new float[n];
for (int i=0; i<n; i++)
{
srcArrayA[i] = i;
srcArrayB[i] = i;
}
Pointer srcA = Pointer.to(srcArrayA);
Pointer srcB = Pointer.to(srcArrayB);
Pointer dst = Pointer.to(dstArray);

// The platform, device type and device number
// that will be used
final int platformIndex = 0;
final long deviceType = CL_DEVICE_TYPE_ALL;
final int deviceIndex = 0;

// Enable exceptions and subsequently omit error checks in this sample
CL.setExceptionsEnabled(true);

// Obtain the number of platforms
int numPlatformsArray[] = new int[1];
clGetPlatformIDs(0, null, numPlatformsArray);
int numPlatforms = numPlatformsArray[0];

// Obtain a platform ID
cl_platform_id platforms[] = new cl_platform_id[numPlatforms];
clGetPlatformIDs(platforms.length, platforms, null);
cl_platform_id platform = platforms[platformIndex];

// Initialize the context properties
cl_context_properties contextProperties = new cl_context_properties();
contextProperties.addProperty(CL_CONTEXT_PLATFORM, platform);

// Obtain the number of devices for the platform
int numDevicesArray[] = new int[1];
clGetDeviceIDs(platform, deviceType, 0, null, numDevicesArray);
int numDevices = numDevicesArray[0];

// Obtain a device ID 
cl_device_id devices[] = new cl_device_id[numDevices];
clGetDeviceIDs(platform, deviceType, numDevices, devices, null);
cl_device_id device = devices[deviceIndex];

// Create a context for the selected device
cl_context context = clCreateContext(
contextProperties, 1, new cl_device_id[]{device}, 
null, null, null);

// Create a command-queue for the selected device
cl_command_queue commandQueue = 
clCreateCommandQueue(context, device, 0, null);

// Allocate the memory objects for the input- and output data
cl_mem memObjects[] = new cl_mem[3];
memObjects[0] = clCreateBuffer(context, 
CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR,
Sizeof.cl_float * n, srcA, null);
memObjects[1] = clCreateBuffer(context, 
CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR,
Sizeof.cl_float * n, srcB, null);
memObjects[2] = clCreateBuffer(context, 
CL_MEM_READ_WRITE, 
Sizeof.cl_float * n, null, null);

// Create the program from the source code
cl_program program = clCreateProgramWithSource(context,
1, new String[]{ programSource }, null, null);

// Build the program
clBuildProgram(program, 0, null, null, null, null);

// Create the kernel
cl_kernel kernel = clCreateKernel(program, "sampleKernel", null);

// Set the arguments for the kernel
clSetKernelArg(kernel, 0, 
Sizeof.cl_mem, Pointer.to(memObjects[0]));
clSetKernelArg(kernel, 1, 
Sizeof.cl_mem, Pointer.to(memObjects[1]));
clSetKernelArg(kernel, 2, 
Sizeof.cl_mem, Pointer.to(memObjects[2]));

// Set the work-item dimensions
long global_work_size[] = new long[]{n};
long local_work_size[] = new long[]{1};

// Execute the kernel
clEnqueueNDRangeKernel(commandQueue, kernel, 1, null,
global_work_size, local_work_size, 0, null, null);

// Read the output data
clEnqueueReadBuffer(commandQueue, memObjects[2], CL_TRUE, 0,
n * Sizeof.cl_float, dst, 0, null, null);

// Release kernel, program, and memory objects
clReleaseMemObject(memObjects[0]);
clReleaseMemObject(memObjects[1]);
clReleaseMemObject(memObjects[2]);
clReleaseKernel(kernel);
clReleaseProgram(program);
clReleaseCommandQueue(commandQueue);
clReleaseContext(context);

// Verify the result
boolean passed = true;
final float epsilon = 1e-7f;
for (int i=0; i<n; i++)
{
float x = dstArray[i];
float y = srcArrayA[i] * srcArrayB[i];
boolean epsilonEqual = Math.abs(x - y) <= epsilon * Math.abs(x);
if (!epsilonEqual)
{
passed = false;
break;
}
}
System.out.println("Test "+(passed?"PASSED":"FAILED"));
if (n <= 10)
{
System.out.println("Result: "+java.util.Arrays.toString(dstArray));
}
}

MAGMA dikhususkan pada komputasi aljabar linear.

Jumat, 27 Juni 2014

Deployment Architecture Lumen Robot Friend Knowledge Base

Rencananya Lumen Robot Friend Knowledge Base akan dideploy untuk:
  1. appserver Tomcat 7 di Java 8, yang cross platform sehingga dapat dijalankan di Ubuntu 14.04 maupun Windows 8. Juga dapat dideploy di cloud platform seperti Microsoft Azure.
  2. 3 platform client device yaitu Lumen/NAO, Android phone (mungkin support tablet, tapi di luar lingkup), dan Windows 8 netbook/notebook/ultrabook (desktop bisa juga, namun akan lebih repot untuk menggunakan fitur speech recognition & camera).
  3. 5 integrasi social media: Facebook profile/OpenGraph API, Facebook chat (XMPP) API, Twitter API, Google+ API, dan Google Hangouts API.

Komunikasi bidirectional antara client dan server menggunakan protocol yang masih dalam pertimbangan, kandidatnya adalah:
  1. AMQP (Advanced Message Queueing Protocol). Standar messaging realtime yang open.
  2. MQTT (machine-to-machine connectivity protocol). Biasa digunakan untuk project IoT (Internet-of-(every)Thing).
  3. HTTP-JSON. JSON format over request-response-based HTTP.
  4. XMPP (Extensible Messaging and Presence Protocol). Realtime chat protocol yang bisa digunakan untuk custom/proprietary purpose.
Saat ini saya cenderung pada protocol AMQP di broker RabbitMQ, yang kebetulan juga mendukung protocol MQTT dan STOMP over WebSocket (SockJS).

Saat ini server Lumen Knowledge Base menggunakan library Apache Jena sebagai RDF framework dan Apache Jena Fuseki sebagai RDF database.

Beberapa library & teknologi yang dipertimbangkan untuk diintegrasikan sbb:
  1. OpenCog. Menggunakan C++ dan Scheme. Ada beberapa modul yang dapat dipakai. Misalnya MOSES, RelEx, dan PLN. OpenCog masih belum truly cross platform karena masih depend ke libraries di Ubuntu.
  2. Apache Stanbol untuk Solr search engine, content store, entity store, dan content semantic enhancer.
  3. Apache Marmotta untuk Linked Data platform.
Sumber knowledge base yang dalam proses integrasi maupun dalam pertimbangan:
  1. WordNet 3.1 RDF untuk database kata dan synsets dalam bahasa Inggris dan berbagai translasi (termasuk Indonesia). Komponen sudah diintegrasikan sebagai de facto standard untuk data linguistik.
  2. BabelNet untuk word sense disambiguation dan keterhubungan kata untuk 50 bahasa. Komponen ini bisa dipastikan bakal masuk karena saya belum menemukan alternatif yang lebih baik yang juga open source.
  3. DBpedia. Rencananya, konsep-konsep dalam Lumen Knowledge Base secara utama akan menggunakan data DBpedia, yang bersumber dari Wikipedia.
  4. Freebase. Ensiklopedia semantic dari Google sebagai alternatif DBpedia. Menurut saya DBpedia sudah cukup sehingga tidak perlu Freebase.
  5. OpenCyc. Knowledge base common sense. Meski rilis terbaru Juni 2012, karena nampaknya datanya lebih valid/akurat dibandingkan dengan ConceptNet 5, kesimpulan sementara saya memilih OpenCyc yang akan saya integrasikan.
  6. ConceptNet 5. Mirip dengan OpenCyc namun lebih up-to-date dan crowdsourced. Namun, dari hasil sampling sesaat, ada data-data ConceptNet yang kurang masuk akal.
  7. YAGO2s. Knowledge base keterhubungan konsep berdasarkan DBpedia yang divalidasi secara manual. Format TURTLE, 2.2 GB compressed, 18.5 GB uncompressed. Saya belum meneliti lebih lanjut apa bedanya atau kelebihannya dibandingkan DBpedia maupun OpenCyc.
  8. SUMO (Suggested Upper Merged Ontology), dalam format SUO-KIF (Standard Upper Ontology Knowledge Interchange Format). Ukuran SUMO dalam format OWL/XML 35 MB. Sepertinya ini berupa ontology bukan data, yang sudah digunakan oleh DBpedia dan WordNet, tapi perlu saya telaah lebih lanjut.

Senin, 23 Juni 2014

Diagram visual berbasis category theory untuk analisa kalimat bahasa Indonesia

Salah satu masalah yang cukup sulit dalam natural language processing (NLP) adalah word sense disambiguation. Memilah arti (sense) yang dimaksud pembicara dari sebuah kata, berdasarkan konteks kalimat maupun pembicaraan.

Contoh: gajah (elephant-n) dapat berarti:

  1. binatang gajah (102506148-n) dalam konteks umum
  2. simbol partai Republik (106894712-n) dalam konteks politik
  3. buah gajah (102847294-n) dalam konteks permainan catur
Diagram visual berbasis category theory yang dikembangkan oleh Bob Coecke, dapat membantu menyelesaikan masalah ini:


Sederhananya, setiap kata/sense diberikan beberapa link yang dapat dihubungkan dengan sense lain yang memiliki link dengan kategori tertentu. Dalam contoh kasus di atas saya dapat mendeklarasikan (pseudo DSL):

menunggang
  -> Animal
102506148-n
  <- Animal

Dengan informasi tersebut, maka untuk verb menunggang, keterhubungannya untuk kata gajah-n adalah dengan sense 102506148-n (binatang gajah).

Metode ini juga tujuan awalnya digunakan untuk memvisualisasikan formula quantum theory.

Referensi:

Sabtu, 21 Juni 2014

Mengenali adjective (kata sifat) dan adjective satelite dalam kalimat bahasa Indonesia

relex-id grammar relationship extractor sekarang dapat mengenali kata sifat (adjective) dan adjective satellite (apa yach bahasa Indonesianya? sepertinya di bahasa Indonesia dianggap sebagai kata sifat juga) dalam kalimat yang diberikan.



Contoh output yang mengandung kata sifat untuk input "Hati ibu lembut."

Sentence structure:
(S (NP (NP mother-n) heart-n) (AP kind-a) . )

Sentence in English:
Mother heart kind.

Sentence in Indonesian:
Kebaikan hati ibu penyayang.


Dalam contoh di atas, mother-n adalah possessive noun (tapi ini belum dimodelkan). kind-a adalah adjective.

relex-id juga sudah dapat mengenali kalimat dengan 4 kata berisi pronoun, noun, verb, dan adjective satellite, misalnya "Aku menyayangi unta jingga."

Sentence structure:
(S (PP i) (VP love-v (NP (SP orange-s) camel-n)) . )

Sentence in English:
I love orange camel.


Sentence in Indonesian:
Aku sayang unta jingga.


Uji coba lainnya untuk kalimat "Aku menginginkan tas biru." :

Sentence structure:
(S (PP i) (VP want-v (NP (SP blue-s) bag-n)) . )

Sentence in English:
I want blue bag.


Sentence in Indonesian:
Aku hendak tas biru.


Contoh-contoh kalimat di atas sengaja saya pilih agar hasilnya "agak masuk akal", karena database WordNet berisi 155287 synsets dan di relex-id belum ada penentuan relevance score synsets yang cocok untuk sebuah kata. Jadi yang dipilih adalah synset pertama yang match, terkadang membuat hasilnya jadi agak janggal.

Untuk saat ini saya sudah cukup senang dengan progress relex-id :) , dan relatif usable untuk dilanjutkan ke tahap selanjutnya yaitu penyempurnaan grammatical relationship extractor dan semantic relationship extractor.

Lex rules yang digunakan adalah sebagai berikut:

<?xml version="1.0" encoding="ASCII"?>
<relexid:LexRules xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:relexid="http://relexid/1.0"
xsi:schemaLocation="http://relexid/1.0 relexid.ecore">
<rules>
<replacements xsi:type="relexid:ResourceReplacement"
partOfSpeech="noun" captureGroup="1">
<replacements xsi:type="relexid:ResourceReplacement"
partOfSpeech="noun" captureGroup="2" />
</replacements>
<replacements xsi:type="relexid:ResourceReplacement"
partOfSpeech="adjective" captureGroup="3" />
<matchers xsi:type="relexid:PartOfSpeechMatcher"
partOfSpeech="noun" />
<matchers xsi:type="relexid:PartOfSpeechMatcher"
partOfSpeech="noun" />
<matchers xsi:type="relexid:PartOfSpeechMatcher"
partOfSpeech="adjective" />
</rules>
<rules>
<replacements xsi:type="relexid:ResourceReplacement"
partOfSpeech="noun" captureGroup="1">
<replacements xsi:type="relexid:ResourceReplacement"
partOfSpeech="adjective_satellite" captureGroup="2" />
</replacements>
<matchers xsi:type="relexid:PartOfSpeechMatcher"
partOfSpeech="noun" />
<matchers xsi:type="relexid:PartOfSpeechMatcher"
partOfSpeech="adjective_satellite" />
</rules>
<rules>
<replacements xsi:type="relexid:PronounReplacement"
partOfSpeech="pronoun" />
<replacements xsi:type="relexid:ResourceReplacement"
partOfSpeech="verb" captureGroup="2">
<replacements xsi:type="relexid:PronounReplacement"
partOfSpeech="pronoun" person="second" case="object" />
</replacements>
<matchers xsi:type="relexid:LiteralMatcher">
<literals>aku</literals>
</matchers>
<matchers xsi:type="relexid:PartOfSpeechMatcher"
partOfSpeech="verb" />
<matchers xsi:type="relexid:LiteralMatcher">
<literals>kamu</literals>
</matchers>
</rules>
<rules>
<replacements xsi:type="relexid:PronounReplacement"
partOfSpeech="pronoun" />
<replacements xsi:type="relexid:ResourceReplacement"
partOfSpeech="verb" captureGroup="2">
<replacements xsi:type="relexid:RecognizedReplacement"
capturingGroup="3" />
</replacements>
<matchers xsi:type="relexid:LiteralMatcher">
<literals>aku</literals>
</matchers>
<matchers xsi:type="relexid:PartOfSpeechMatcher"
partOfSpeech="verb" />
<matchers xsi:type="relexid:RecognizedMatcher" partOfSpeech="noun" />
</rules>
<rules>
<replacements xsi:type="relexid:PronounReplacement"
partOfSpeech="pronoun" />
<replacements xsi:type="relexid:ResourceReplacement"
partOfSpeech="verb" captureGroup="2">
<replacements xsi:type="relexid:ResourceReplacement"
partOfSpeech="noun" captureGroup="3" />
</replacements>
<matchers xsi:type="relexid:LiteralMatcher">
<literals>aku</literals>
</matchers>
<matchers xsi:type="relexid:PartOfSpeechMatcher"
partOfSpeech="verb" />
<matchers xsi:type="relexid:PartOfSpeechMatcher"
partOfSpeech="noun" />
</rules>
<rules>
<replacements xsi:type="relexid:PunctuationReplacement" />
<matchers xsi:type="relexid:LiteralMatcher">
<literals>.</literals>
</matchers>
</rules>
</relexid:LexRules>


Log:

20:25:06.293 [main] INFO  id.ac.itb.ee.lskk.relexid.core.RelEx - Initializing WordNet 3.1 TDB database at /home/ceefour/wn31_tdb
20:25:06.552 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Loading LexRules from class id.ac.itb.ee.lskk.relexid.core.RelExTest > lumen.LexRules.xmi
20:25:06.786 [main] INFO  o.soluvas.commons.OnDemandXmiLoader - Loading XMI: lumen.LexRules.xmi from id.ac.itb.ee.lskk.relexid.core.RelExTest
20:25:06.854 [main] INFO  o.soluvas.commons.OnDemandXmiLoader - Loaded id.ac.itb.ee.lskk.relexid.core.impl.LexRulesImpl object from file:/home/ceefour/git/relex-id/core/target/classes/id/ac/itb/ee/lskk/relexid/core/lumen.LexRules.xmi
20:25:06.856 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Loading RelationRules from class id.ac.itb.ee.lskk.relexid.core.RelExTest > lumen.RelationRules.xmi
20:25:06.856 [main] INFO  o.soluvas.commons.OnDemandXmiLoader - Loading XMI: lumen.RelationRules.xmi from id.ac.itb.ee.lskk.relexid.core.RelExTest
20:25:06.860 [main] INFO  o.soluvas.commons.OnDemandXmiLoader - Loaded id.ac.itb.ee.lskk.relexid.core.impl.RelationRulesImpl object from file:/home/ceefour/git/relex-id/core/target/classes/id/ac/itb/ee/lskk/relexid/core/lumen.RelationRules.xmi
20:25:06.861 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Tokens: [Hati,  , ibu,  , lembut, .]
20:25:06.862 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - 4 walls for ['Hati', ' ', 'ibu', ' ', 'lembut', '.'] » [0, 2, 4, 5]
20:25:06.987 [main] WARN  i.a.i.e.l.r.c.i.PartOfSpeechMatcherImpl - PartOfSpeech matcher for noun 'Hati' chose the first sense wn31:104632183-n but matched 9 senses: [wn31:104632183-n, wn31:104864721-n, wn31:105392877-n, wn31:105929717-n, wn31:105927857-n, wn31:107667661-n, wn31:107667514-n, wn31:113888525-n, wn31:114158105-n]
20:25:06.996 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}104632183-n] for #0: 'Hati'
20:25:07.004 [main] WARN  i.a.i.e.l.r.c.i.PartOfSpeechMatcherImpl - PartOfSpeech matcher for noun 'ibu' chose the first sense wn31:105843616-n but matched 5 senses: [wn31:105843616-n, wn31:110352574-n, wn31:110297825-n, wn31:110352098-n, wn31:110352666-n]
20:25:07.004 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}105843616-n] for #2: 'ibu'
20:25:07.027 [main] WARN  i.a.i.e.l.r.c.i.PartOfSpeechMatcherImpl - PartOfSpeech matcher for adjective 'lembut' chose the first sense wn31:301374976-a but matched 11 senses: [wn31:301374976-a, wn31:300228210-a, wn31:300644180-a, wn31:301156249-a, wn31:300709335-a, wn31:301510813-a, wn31:301159626-a, wn31:302455719-a, wn31:302244586-a, wn31:302457962-a, wn31:301160432-a]
20:25:07.028 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «adjective» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}301374976-a] for #4: 'lembut'
20:25:07.035 [main] INFO  id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» MATCH for [0‥4]: ['Hati', ' ', 'ibu', ' ', 'lembut']
20:25:07.047 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Replacing with 2 parts at index #0: [(NP (NP mother-n) heart-n), (AP kind-a)]
20:25:07.048 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - 1 walls for [(NP (NP mother-n) heart-n), (AP kind-a), '.'] » [2]
20:25:07.048 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Resetting rule iterator due to matching rule
20:25:07.051 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #2: '.'
20:25:07.051 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of [(NP (NP mother-n) heart-n), (AP kind-a), '.']
20:25:07.055 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #2: '.'
20:25:07.055 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» NOT match for any sublist of [(NP (NP mother-n) heart-n), (AP kind-a), '.']
20:25:07.056 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» NOT match for #2: '.'
20:25:07.056 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb 'kamu'» NOT match for any sublist of [(NP (NP mother-n) heart-n), (AP kind-a), '.']
20:25:07.056 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» NOT match for #2: '.'
20:25:07.056 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb +noun» NOT match for any sublist of [(NP (NP mother-n) heart-n), (AP kind-a), '.']
20:25:07.056 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» NOT match for #2: '.'
20:25:07.056 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb noun» NOT match for any sublist of [(NP (NP mother-n) heart-n), (AP kind-a), '.']
20:25:07.056 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'.'» MATCH 1 [null] for #2: '.'
20:25:07.057 [main] INFO  id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'.'» MATCH for [2‥2]: ['.']
20:25:07.058 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Replacing with 1 parts at index #2: [.]
20:25:07.058 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - 0 walls for [(NP (NP mother-n) heart-n), (AP kind-a), .] » []
20:25:07.058 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 0 for matchers [pronoun, verb] against [(NP (NP mother-n) heart-n), (AP kind-a)]
20:25:07.058 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 0 for matchers [pronoun, verb] against [(AP kind-a), .]
20:25:07.059 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 0 for matchers [pronoun, verb] against [(NP (NP mother-n) heart-n), (AP kind-a)]
20:25:07.059 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 0 for matchers [pronoun, verb] against [(AP kind-a), .]
20:25:07.059 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Deduced 0 relations from 3 parts [(NP (NP mother-n) heart-n), (AP kind-a), .] >> []
20:25:07.059 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Deduced 0 relations for sentence 'null': []
20:25:07.059 [main] INFO  i.a.i.ee.lskk.relexid.core.RelExTest - Sentence structure: (S (NP (NP mother-n) heart-n) (AP kind-a) . )
20:25:07.073 [main] INFO  i.a.i.ee.lskk.relexid.core.RelExTest - Sentence in English: Mother heart kind.
20:25:07.109 [main] INFO  i.a.i.ee.lskk.relexid.core.RelExTest - Sentence in Indonesian: Kebaikan hati ibu penyayang.

20:41:07.783 [main] INFO  id.ac.itb.ee.lskk.relexid.core.RelEx - Initializing WordNet 3.1 TDB database at /home/ceefour/wn31_tdb
20:41:08.070 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Loading LexRules from class id.ac.itb.ee.lskk.relexid.core.RelExTest > lumen.LexRules.xmi
20:41:08.327 [main] INFO  o.soluvas.commons.OnDemandXmiLoader - Loading XMI: lumen.LexRules.xmi from id.ac.itb.ee.lskk.relexid.core.RelExTest
20:41:08.515 [main] INFO  o.soluvas.commons.OnDemandXmiLoader - Loaded id.ac.itb.ee.lskk.relexid.core.impl.LexRulesImpl object from file:/home/ceefour/git/relex-id/core/target/classes/id/ac/itb/ee/lskk/relexid/core/lumen.LexRules.xmi
20:41:08.517 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Loading RelationRules from class id.ac.itb.ee.lskk.relexid.core.RelExTest > lumen.RelationRules.xmi
20:41:08.517 [main] INFO  o.soluvas.commons.OnDemandXmiLoader - Loading XMI: lumen.RelationRules.xmi from id.ac.itb.ee.lskk.relexid.core.RelExTest
20:41:08.522 [main] INFO  o.soluvas.commons.OnDemandXmiLoader - Loaded id.ac.itb.ee.lskk.relexid.core.impl.RelationRulesImpl object from file:/home/ceefour/git/relex-id/core/target/classes/id/ac/itb/ee/lskk/relexid/core/lumen.RelationRules.xmi
20:41:08.522 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Tokens: [Aku,  , menyayangi,  , unta,  , jingga, .]
20:41:08.523 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - 5 walls for ['Aku', ' ', 'menyayangi', ' ', 'unta', ' ', 'jingga', '.'] » [0, 2, 4, 6, 7]
20:41:08.643 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #0: 'Aku'
20:41:08.643 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', 'unta', ' ', 'jingga', '.']
20:41:08.655 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #2: 'menyayangi'
20:41:08.655 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', 'unta', ' ', 'jingga', '.']
20:41:08.672 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}102439767-n] for #4: 'unta'
20:41:08.684 [main] WARN  i.a.i.e.l.r.c.i.PartOfSpeechMatcherImpl - PartOfSpeech matcher for noun 'jingga' chose the first sense wn31:104972356-n but matched 2 senses: [wn31:104972356-n, wn31:115015777-n]
20:41:08.691 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}104972356-n] for #6: 'jingga'
20:41:08.695 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «adjective» NOT match for #7: '.'
20:41:08.696 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', 'unta', ' ', 'jingga', '.']
20:41:08.699 [main] WARN  i.a.i.e.l.r.c.i.PartOfSpeechMatcherImpl - PartOfSpeech matcher for noun 'jingga' chose the first sense wn31:104972356-n but matched 2 senses: [wn31:104972356-n, wn31:115015777-n]
20:41:08.700 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}104972356-n] for #6: 'jingga'
20:41:08.703 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #7: '.'
20:41:08.704 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', 'unta', ' ', 'jingga', '.']
20:41:08.707 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #7: '.'
20:41:08.707 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', 'unta', ' ', 'jingga', '.']
20:41:08.710 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #0: 'Aku'
20:41:08.711 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', 'unta', ' ', 'jingga', '.']
20:41:08.714 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #2: 'menyayangi'
20:41:08.715 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', 'unta', ' ', 'jingga', '.']
20:41:08.718 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}102439767-n] for #4: 'unta'
20:41:08.723 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «adjective_satellite» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}300379954-s] for #6: 'jingga'
20:41:08.731 [main] INFO  id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» MATCH for [4‥6]: ['unta', ' ', 'jingga']
20:41:08.742 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Replacing with 1 parts at index #4: [(NP (SP orange-s) camel-n)]
20:41:08.742 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - 3 walls for ['Aku', ' ', 'menyayangi', ' ', (NP (SP orange-s) camel-n), '.'] » [0, 2, 5]
20:41:08.742 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Resetting rule iterator due to matching rule
20:41:08.745 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #0: 'Aku'
20:41:08.745 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', (NP (SP orange-s) camel-n), '.']
20:41:08.750 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #2: 'menyayangi'
20:41:08.750 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', (NP (SP orange-s) camel-n), '.']
20:41:08.753 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #5: '.'
20:41:08.753 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', (NP (SP orange-s) camel-n), '.']
20:41:08.756 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #0: 'Aku'
20:41:08.756 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', (NP (SP orange-s) camel-n), '.']
20:41:08.760 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #2: 'menyayangi'
20:41:08.760 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', (NP (SP orange-s) camel-n), '.']
20:41:08.763 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #5: '.'
20:41:08.763 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', (NP (SP orange-s) camel-n), '.']
20:41:08.764 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» MATCH 1 [null] for #0: 'Aku'
20:41:08.774 [main] WARN  i.a.i.e.l.r.c.i.PartOfSpeechMatcherImpl - PartOfSpeech matcher for verb 'menyayangi' chose the first sense wn31:201779085-v but matched 3 senses: [wn31:201779085-v, wn31:201779456-v, wn31:201781131-v]
20:41:08.774 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «verb» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}201779085-v] for #2: 'menyayangi'
20:41:08.774 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'kamu'» NOT match for #4: (NP (SP orange-s) camel-n)
20:41:08.774 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb 'kamu'» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', (NP (SP orange-s) camel-n), '.']
20:41:08.774 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» NOT match for #2: 'menyayangi'
20:41:08.774 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb 'kamu'» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', (NP (SP orange-s) camel-n), '.']
20:41:08.774 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» NOT match for #5: '.'
20:41:08.774 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb 'kamu'» NOT match for any sublist of ['Aku', ' ', 'menyayangi', ' ', (NP (SP orange-s) camel-n), '.']
20:41:08.774 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» MATCH 1 [null] for #0: 'Aku'
20:41:08.778 [main] WARN  i.a.i.e.l.r.c.i.PartOfSpeechMatcherImpl - PartOfSpeech matcher for verb 'menyayangi' chose the first sense wn31:201779085-v but matched 3 senses: [wn31:201779085-v, wn31:201779456-v, wn31:201781131-v]
20:41:08.778 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «verb» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}201779085-v] for #2: 'menyayangi'
20:41:08.778 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «+noun» MATCH 1 [(NP (SP orange-s) camel-n)] for #4: (NP (SP orange-s) camel-n)
20:41:08.778 [main] INFO  id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb +noun» MATCH for [0‥4]: ['Aku', ' ', 'menyayangi', ' ', (NP (SP orange-s) camel-n)]
20:41:08.799 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Replacing with 2 parts at index #0: [(PP i), (VP love-v (NP (SP orange-s) camel-n))]
20:41:08.799 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - 1 walls for [(PP i), (VP love-v (NP (SP orange-s) camel-n)), '.'] » [2]
20:41:08.799 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Resetting rule iterator due to matching rule
20:41:08.802 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #2: '.'
20:41:08.802 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of [(PP i), (VP love-v (NP (SP orange-s) camel-n)), '.']
20:41:08.805 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #2: '.'
20:41:08.805 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» NOT match for any sublist of [(PP i), (VP love-v (NP (SP orange-s) camel-n)), '.']
20:41:08.805 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» NOT match for #2: '.'
20:41:08.805 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb 'kamu'» NOT match for any sublist of [(PP i), (VP love-v (NP (SP orange-s) camel-n)), '.']
20:41:08.805 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» NOT match for #2: '.'
20:41:08.805 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb +noun» NOT match for any sublist of [(PP i), (VP love-v (NP (SP orange-s) camel-n)), '.']
20:41:08.805 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» NOT match for #2: '.'
20:41:08.805 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb noun» NOT match for any sublist of [(PP i), (VP love-v (NP (SP orange-s) camel-n)), '.']
20:41:08.805 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'.'» MATCH 1 [null] for #2: '.'
20:41:08.806 [main] INFO  id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'.'» MATCH for [2‥2]: ['.']
20:41:08.807 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Replacing with 1 parts at index #2: [.]
20:41:08.807 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - 0 walls for [(PP i), (VP love-v (NP (SP orange-s) camel-n)), .] » []
20:41:08.807 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcher pronoun matches (PP i)
20:41:08.807 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 0 for matchers [pronoun] against [(NP (SP orange-s) camel-n)]
20:41:08.807 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 1 for matchers [pronoun, verb] against [(PP i), (VP love-v (NP (SP orange-s) camel-n))]
20:41:08.807 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 0 for matchers [pronoun, verb] against [(VP love-v (NP (SP orange-s) camel-n)), .]
20:41:08.807 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcher pronoun matches (PP i)
20:41:08.807 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcher noun matches (NP (SP orange-s) camel-n)
20:41:08.807 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 1 for matchers [noun] against [(NP (SP orange-s) camel-n)]
20:41:08.807 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcher verb matches (VP love-v (NP (SP orange-s) camel-n))
20:41:08.807 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 2 for matchers [pronoun, verb] against [(PP i), (VP love-v (NP (SP orange-s) camel-n))]
20:41:08.807 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Relation rule [pronoun verb => _subj(2, 1) || _obj(2, 2/1)] matches 0..1 [(PP i), (VP love-v (NP (SP orange-s) camel-n))]
20:41:08.809 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 0 for matchers [pronoun, verb] against [(VP love-v (NP (SP orange-s) camel-n)), .]
20:41:08.809 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Deduced 2 relations from 3 parts [(PP i), (VP love-v (NP (SP orange-s) camel-n)), .] >> [_subj(wn31:201779085-v, I), _obj(wn31:201779085-v, wn31:102439767-n)]
20:41:08.809 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Deduced 2 relations for sentence 'null': [_subj(wn31:201779085-v, I), _obj(wn31:201779085-v, wn31:102439767-n)]
20:41:08.809 [main] INFO  i.a.i.ee.lskk.relexid.core.RelExTest - Sentence structure: (S (PP i) (VP love-v (NP (SP orange-s) camel-n)) . )
20:41:08.821 [main] INFO  i.a.i.ee.lskk.relexid.core.RelExTest - Sentence in English: I love orange camel.

20:41:08.859 [main] INFO  i.a.i.ee.lskk.relexid.core.RelExTest - Sentence in Indonesian: Aku sayang unta jingga.

20:43:30.797 [main] INFO  id.ac.itb.ee.lskk.relexid.core.RelEx - Initializing WordNet 3.1 TDB database at /home/ceefour/wn31_tdb
20:43:31.082 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Loading LexRules from class id.ac.itb.ee.lskk.relexid.core.RelExTest > lumen.LexRules.xmi
20:43:31.319 [main] INFO  o.soluvas.commons.OnDemandXmiLoader - Loading XMI: lumen.LexRules.xmi from id.ac.itb.ee.lskk.relexid.core.RelExTest
20:43:31.390 [main] INFO  o.soluvas.commons.OnDemandXmiLoader - Loaded id.ac.itb.ee.lskk.relexid.core.impl.LexRulesImpl object from file:/home/ceefour/git/relex-id/core/target/classes/id/ac/itb/ee/lskk/relexid/core/lumen.LexRules.xmi
20:43:31.391 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Loading RelationRules from class id.ac.itb.ee.lskk.relexid.core.RelExTest > lumen.RelationRules.xmi
20:43:31.392 [main] INFO  o.soluvas.commons.OnDemandXmiLoader - Loading XMI: lumen.RelationRules.xmi from id.ac.itb.ee.lskk.relexid.core.RelExTest
20:43:31.396 [main] INFO  o.soluvas.commons.OnDemandXmiLoader - Loaded id.ac.itb.ee.lskk.relexid.core.impl.RelationRulesImpl object from file:/home/ceefour/git/relex-id/core/target/classes/id/ac/itb/ee/lskk/relexid/core/lumen.RelationRules.xmi
20:43:31.397 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Tokens: [Aku,  , menginginkan,  , tas,  , biru, .]
20:43:31.398 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - 5 walls for ['Aku', ' ', 'menginginkan', ' ', 'tas', ' ', 'biru', '.'] » [0, 2, 4, 6, 7]
20:43:31.523 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #0: 'Aku'
20:43:31.523 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', 'tas', ' ', 'biru', '.']
20:43:31.537 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #2: 'menginginkan'
20:43:31.537 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', 'tas', ' ', 'biru', '.']
20:43:31.557 [main] WARN  i.a.i.e.l.r.c.i.PartOfSpeechMatcherImpl - PartOfSpeech matcher for noun 'tas' chose the first sense wn31:102776042-n but matched 6 senses: [wn31:102776042-n, wn31:104129919-n, wn31:102776843-n, wn31:104144300-n, wn31:102801040-n, wn31:113786779-n]
20:43:31.561 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}102776042-n] for #4: 'tas'
20:43:31.571 [main] WARN  i.a.i.e.l.r.c.i.PartOfSpeechMatcherImpl - PartOfSpeech matcher for noun 'biru' chose the first sense wn31:104976072-n but matched 4 senses: [wn31:104976072-n, wn31:108497858-n, wn31:109247473-n, wn31:115011152-n]
20:43:31.571 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}104976072-n] for #6: 'biru'
20:43:31.575 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «adjective» NOT match for #7: '.'
20:43:31.576 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', 'tas', ' ', 'biru', '.']
20:43:31.580 [main] WARN  i.a.i.e.l.r.c.i.PartOfSpeechMatcherImpl - PartOfSpeech matcher for noun 'biru' chose the first sense wn31:104976072-n but matched 4 senses: [wn31:104976072-n, wn31:108497858-n, wn31:109247473-n, wn31:115011152-n]
20:43:31.580 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}104976072-n] for #6: 'biru'
20:43:31.583 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #7: '.'
20:43:31.583 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', 'tas', ' ', 'biru', '.']
20:43:31.587 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #7: '.'
20:43:31.587 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', 'tas', ' ', 'biru', '.']
20:43:31.590 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #0: 'Aku'
20:43:31.591 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', 'tas', ' ', 'biru', '.']
20:43:31.596 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #2: 'menginginkan'
20:43:31.596 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', 'tas', ' ', 'biru', '.']
20:43:31.600 [main] WARN  i.a.i.e.l.r.c.i.PartOfSpeechMatcherImpl - PartOfSpeech matcher for noun 'tas' chose the first sense wn31:102776042-n but matched 6 senses: [wn31:102776042-n, wn31:104129919-n, wn31:102776843-n, wn31:104144300-n, wn31:102801040-n, wn31:113786779-n]
20:43:31.600 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}102776042-n] for #4: 'tas'
20:43:31.604 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «adjective_satellite» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}300371931-s] for #6: 'biru'
20:43:31.612 [main] INFO  id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» MATCH for [4‥6]: ['tas', ' ', 'biru']
20:43:31.620 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Replacing with 1 parts at index #4: [(NP (SP blue-s) bag-n)]
20:43:31.621 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - 3 walls for ['Aku', ' ', 'menginginkan', ' ', (NP (SP blue-s) bag-n), '.'] » [0, 2, 5]
20:43:31.621 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Resetting rule iterator due to matching rule
20:43:31.624 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #0: 'Aku'
20:43:31.625 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', (NP (SP blue-s) bag-n), '.']
20:43:31.632 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #2: 'menginginkan'
20:43:31.632 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', (NP (SP blue-s) bag-n), '.']
20:43:31.635 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #5: '.'
20:43:31.635 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', (NP (SP blue-s) bag-n), '.']
20:43:31.638 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #0: 'Aku'
20:43:31.638 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', (NP (SP blue-s) bag-n), '.']
20:43:31.642 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #2: 'menginginkan'
20:43:31.642 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', (NP (SP blue-s) bag-n), '.']
20:43:31.646 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #5: '.'
20:43:31.646 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', (NP (SP blue-s) bag-n), '.']
20:43:31.646 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» MATCH 1 [null] for #0: 'Aku'
20:43:31.652 [main] WARN  i.a.i.e.l.r.c.i.PartOfSpeechMatcherImpl - PartOfSpeech matcher for verb 'menginginkan' chose the first sense wn31:200711034-v but matched 11 senses: [wn31:200711034-v, wn31:201191258-v, wn31:201828281-v, wn31:201830665-v, wn31:201828474-v, wn31:201828678-v, wn31:201831006-v, wn31:201830126-v, wn31:201832198-v, wn31:201829904-v, wn31:201831174-v]
20:43:31.652 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «verb» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}200711034-v] for #2: 'menginginkan'
20:43:31.652 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'kamu'» NOT match for #4: (NP (SP blue-s) bag-n)
20:43:31.652 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb 'kamu'» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', (NP (SP blue-s) bag-n), '.']
20:43:31.652 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» NOT match for #2: 'menginginkan'
20:43:31.652 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb 'kamu'» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', (NP (SP blue-s) bag-n), '.']
20:43:31.653 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» NOT match for #5: '.'
20:43:31.653 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb 'kamu'» NOT match for any sublist of ['Aku', ' ', 'menginginkan', ' ', (NP (SP blue-s) bag-n), '.']
20:43:31.653 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» MATCH 1 [null] for #0: 'Aku'
20:43:31.657 [main] WARN  i.a.i.e.l.r.c.i.PartOfSpeechMatcherImpl - PartOfSpeech matcher for verb 'menginginkan' chose the first sense wn31:200711034-v but matched 11 senses: [wn31:200711034-v, wn31:201191258-v, wn31:201828281-v, wn31:201830665-v, wn31:201828474-v, wn31:201828678-v, wn31:201831006-v, wn31:201830126-v, wn31:201832198-v, wn31:201829904-v, wn31:201831174-v]
20:43:31.658 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «verb» MATCH 1 [{http://wordnet-rdf.princeton.edu/wn31/}200711034-v] for #2: 'menginginkan'
20:43:31.658 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «+noun» MATCH 1 [(NP (SP blue-s) bag-n)] for #4: (NP (SP blue-s) bag-n)
20:43:31.658 [main] INFO  id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb +noun» MATCH for [0‥4]: ['Aku', ' ', 'menginginkan', ' ', (NP (SP blue-s) bag-n)]
20:43:31.665 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Replacing with 2 parts at index #0: [(PP i), (VP want-v (NP (SP blue-s) bag-n))]
20:43:31.665 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - 1 walls for [(PP i), (VP want-v (NP (SP blue-s) bag-n)), '.'] » [2]
20:43:31.665 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Resetting rule iterator due to matching rule
20:43:31.668 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #2: '.'
20:43:31.668 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun noun adjective» NOT match for any sublist of [(PP i), (VP want-v (NP (SP blue-s) bag-n)), '.']
20:43:31.671 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «noun» NOT match for #2: '.'
20:43:31.671 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «noun adjective_satellite» NOT match for any sublist of [(PP i), (VP want-v (NP (SP blue-s) bag-n)), '.']
20:43:31.671 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» NOT match for #2: '.'
20:43:31.671 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb 'kamu'» NOT match for any sublist of [(PP i), (VP want-v (NP (SP blue-s) bag-n)), '.']
20:43:31.671 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» NOT match for #2: '.'
20:43:31.671 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb +noun» NOT match for any sublist of [(PP i), (VP want-v (NP (SP blue-s) bag-n)), '.']
20:43:31.671 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'aku'» NOT match for #2: '.'
20:43:31.671 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'aku' verb noun» NOT match for any sublist of [(PP i), (VP want-v (NP (SP blue-s) bag-n)), '.']
20:43:31.672 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx -   Lex «'.'» MATCH 1 [null] for #2: '.'
20:43:31.672 [main] INFO  id.ac.itb.ee.lskk.relexid.core.RelEx - Rule «'.'» MATCH for [2‥2]: ['.']
20:43:31.673 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Replacing with 1 parts at index #2: [.]
20:43:31.673 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - 0 walls for [(PP i), (VP want-v (NP (SP blue-s) bag-n)), .] » []
20:43:31.673 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcher pronoun matches (PP i)
20:43:31.673 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 0 for matchers [pronoun] against [(NP (SP blue-s) bag-n)]
20:43:31.673 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 1 for matchers [pronoun, verb] against [(PP i), (VP want-v (NP (SP blue-s) bag-n))]
20:43:31.673 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 0 for matchers [pronoun, verb] against [(VP want-v (NP (SP blue-s) bag-n)), .]
20:43:31.674 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcher pronoun matches (PP i)
20:43:31.674 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcher noun matches (NP (SP blue-s) bag-n)
20:43:31.674 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 1 for matchers [noun] against [(NP (SP blue-s) bag-n)]
20:43:31.674 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcher verb matches (VP want-v (NP (SP blue-s) bag-n))
20:43:31.674 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 2 for matchers [pronoun, verb] against [(PP i), (VP want-v (NP (SP blue-s) bag-n))]
20:43:31.674 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Relation rule [pronoun verb => _subj(2, 1) || _obj(2, 2/1)] matches 0..1 [(PP i), (VP want-v (NP (SP blue-s) bag-n))]
20:43:31.675 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Matcheds 0 for matchers [pronoun, verb] against [(VP want-v (NP (SP blue-s) bag-n)), .]
20:43:31.675 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Deduced 2 relations from 3 parts [(PP i), (VP want-v (NP (SP blue-s) bag-n)), .] >> [_subj(wn31:200711034-v, I), _obj(wn31:200711034-v, wn31:102776042-n)]
20:43:31.675 [main] DEBUG id.ac.itb.ee.lskk.relexid.core.RelEx - Deduced 2 relations for sentence 'null': [_subj(wn31:200711034-v, I), _obj(wn31:200711034-v, wn31:102776042-n)]
20:43:31.675 [main] INFO  i.a.i.ee.lskk.relexid.core.RelExTest - Sentence structure: (S (PP i) (VP want-v (NP (SP blue-s) bag-n)) . )
20:43:31.688 [main] INFO  i.a.i.ee.lskk.relexid.core.RelExTest - Sentence in English: I want blue bag.

20:43:31.724 [main] INFO  i.a.i.ee.lskk.relexid.core.RelExTest - Sentence in Indonesian: Aku hendak tas biru.