Panduan Instalasi SMT Moses (Bahasa Indonesia)

Ade Naufal
Artificial Intelligence Indonesia
4 min readApr 22, 2019

Bagi Anda yang belum tahu itu apa, Moses adalah sistem mesin penerjemah berbasis statistik (statistical machine translation system) yang dapat memudahkan kita untuk melatih model penerjemahan secara otomatis untuk pasangan bahasa apa pun.

Sebelum menginstal Moses ini, yang penting Anda sudah menyediakan sekumpulan teks yang sudah diterjemahkan (yang nantinya akan disebut sebagai parallel corpus). Setelah Anda mempunyai model latih, maka algoritma pencarian yang sangkil akan menemukan probablitas penerjemahan tertinggi di antara jumlah pilihan, secara eksponensial, yang ada.

Saya bingung dengan panduan instalasi sistem SMT Moses yang tersedia di Internet ini, lah. Mana saya makin bingung karena semua panduannya hanya ada dalam bahasa Inggris. Tapi tetap saja saya tidak menyerah dengan mencoba lagi dan lagi. Sudah kesekian kali saya coba menginstal Moses (tentunya menggunakan IRSTLM), tetap saja gagal. Namun kali ini, dengan menggunakan model bahasa bawaan Moses, yaitu KenLM, maka saya sudah berhasil menginstalnya. Sekalian aja saya bagikan pengalaman instalnya dalam bentuk panduan di tulisan ini.

Panduan ini tentu juga menyediakan instalasi dengan IRSTLM, namun saat ini masih gagal. Bagi Anda yang sudah berhasil menginstal Moses dengan IRSTLM, Anda bisa bagi pengalaman menginstal di komentar ya. Nanti akan saya perbaharui.

Harap ikuti panduan ini secara berurut, dimulai dari awal hingga akhir. Untuk panduan kali ini, saya menggunakan Ubuntu versi 18.04.2 LTS (Bionic Beaver). Selamat mencoba.

  • Login biasa. Pastikan akun yang Anda pakai punya akses rw (read/write). Saya tidak menyarankan hal ini karena akan mengganggu jalannya instalasi, namun jika tidak ada akses rw, Anda bisa pakai command sudo su (untuk Ubuntu).
  • Bikin folder utama smt:
mkdir smt
cd smt
  • Instal dependency yang dibutuhkan:

Untuk Debian:

su
apt-get install git subversion make libtool gcc g++ libboost-dev tcl-dev tk-dev zlib1g-dev libbz2-dev python-dev libicu-dev libunistring-dev

Untuk Ubuntu:

sudo apt-get install g++ git subversion automake libtool zlib1g-dev libboost-all-dev libbz2-dev liblzma-dev python-dev graphviz imagemagick make cmake libgoogle-perftools-dev autoconf doxygen

Untuk Fedora/Redhat/CenOS/Scientific Linux:

su
yum install git subversion make automake cmake libtool gcc-c++ zlib-devel python-devel bzip2 devel boost-devel ImageMagick cpan expat-devel
yum install git cpan XML::Twig
yum install cpan Sort::Naturally

Untuk OSX, instalasi sama seperti Linux. OSX dapat langsung menggunakan compiler C/C++ clang yang terinstansiasi dalam OSX.

Sedangkan untuk pengguna Windows (terutama Win10), dapat menginstal Ubuntu 16.04 di sini, lalu cara menginstal sama seperti cara Ubuntu.

  • Clone Moses dan GIZA++ pakai git:
git clone https://github.com/moses-smt/mosesdecoder.git
git clone https://github.com/moses-smt/giza-pp.git
  • Instal GIZA++:
cd giza-pp
make
  • Copy file binary GIZA++ ke folder mosesdecoder:
cd ../mosesdecoder  
mkdir tools
cp ../giza-pp/GIZA++-v2/GIZA++ ../giza-pp/GIZA++-v2/snt2cooc.out ../giza-pp/mkcls-v2/mkcls tools
cd ..
cd ..
  • (Opsional) Instal IRSTLM 5.80.08:
    — Download dari SourceForge, lalu ekstrak dalam direktori smt.
    — Pindahkan folder yang telah diekstrak dengan membuat folder baru bernama irstlm:
mkdir irstlm 
cd irstlm
(pindahkan folder 'irstlm-5.80.08' ke 'irstlm')
cd irstlm-5.80.08
cd trunk
./regenerate-makefiles.sh
./configure --prefix=nama_user/smt/irstlm (ganti nama_user dengan nama akun OS Anda di unix)
make install
cd ..
cd ..
cd ..

Tidak perlu menginstal IRSTLM jika tidak membutuhkan n-gram di atas 7. Tapi kalau butuh, silakan coba IRSTLM. Kalau misalkan error saat menginstal IRSTLM, silakan perbaiki dengan mengikuti acuan ini.

  • Instal Boost 1.64 (proses ini memakan waktu cukup lama):
wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.gz  
tar zxvf boost_1_64_0.tar.gz
cd boost_1_64_0/
./bootstrap.sh
./b2 --layout=system link=static install || echo FAILURE
cd ..
  • Instal cmph-2.0:
wget http://www.achrafothman.net/aslsmt/tools/cmph_2.0.orig.tar.gz  
tar zxvf cmph_2.0.orig.tar.gz
cd cmph-2.0/
./configure
make
make install
cd ..
  • Instal xmlrpc-c :
wget http://www.achrafothman.net/aslsmt/tools/xmlrpc-c_1.33.17.orig.tar.gz
tar zxvf xmlrpc-c_1.33.17.orig.tar.gz
cd xmlrpc-c-1.33.17/
./configure
make
make install
cd ..
  • Instal Moses (proses ini memakan waktu cukup lama):
cd mosesdecoder
make -f contrib/Makefiles/install-dependencies.gmake

Kalau ingin pakai IRSTLM, Anda bisa pakai command berikut:

./bjam --with-boost=../boost_1_64_0 --with-cmph=../cmph-2.0 --with-irstlm=../irstlm

Jika tidak, Anda bisa pakai command ini saja:

./bjam --with-boost=../boost_1_64_0 --with-cmph=../cmph-2.0

Kalau Anda mau coba bikin server Moses pakai xmlrpc-c, bisa coba command ini:

./bjam --with-boost=../boost_1_64_0 --with-cmph=../cmph-2.0 --with-xmlrpc-c=../xmlrpc-c-1.33.17
  • Sukses? Coba tes:
cd mosesdecoder
wget http://www.statmt.org/moses/download/sample-models.tgz
tar xzf sample-models.tgz
cd sample-models
/home/nama_user/smt/mosesdecoder/bin/moses -f phrase-model/moses.ini < phrase-model/in > out

Ganti nama_user dengan nama username akun OS Anda.

Jika semuanya berjalan dengan lancar, maka kalimat “das ist ein kleines haus” (dalam file in) akan keluar dengan terjemahan "this is a small house" (dalam file out).

Perlu dicatat bahwa file konfigurasi moses.ini dalam setiap direktori diset menggunakan model bahasa KenLM secara default. Kalau Anda ingin menggunaka model bahasa IRSTLM, maka suntinglah entri model bahasa di moses.ini, ganti KENLM dengan IRSTLM. Anda juga dapat mencompile menggunakan ./bjam --with-irstlm, ditambah dengan lokasi direktori IRSTLM.

Moses juga mendukung model bahasa SRILM dan RandLM. Cek di sini untuk informasi lebih lanjut.

  • Tes Chart Decoder:
/home/nama_user/smt/mosesdecoder/bin/moses -f string-to-tree/moses.ini < string-to-tree/in > out.stt
/home/nama_user/smt/mosesdecoder/bin/moses -f tree-to-tree/moses.ini < tree-to-tree/in.xml > out.ttt

Ganti nama_user dengan nama username akun OS Anda.

Hasil yang seharusnya keluar adalah sbb:

this is a small house

Selamat! Anda telah berhasil menginstal Moses. Silakan lanjut dengan membangun baseline sistem translasi.

Sumber

--

--

Ade Naufal
Artificial Intelligence Indonesia

Sedang giat menyelami Machine Learning dan Natural Language Processing.