• Tidak ada hasil yang ditemukan

Implementasi Algortima Manber Pada Persamaan Makna Bahasa Indonesia dan Melayu Berbasis Android

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algortima Manber Pada Persamaan Makna Bahasa Indonesia dan Melayu Berbasis Android"

Copied!
13
0
0

Teks penuh

(1)

LAMPIRAN

LISTING PROGRAM

1. Program Manber

package com.agus.sinonimindomelayu.algo;

import com.agus.sinonimindomelayu.adapter.DictionaryItem; import com.agus.sinonimindomelayu.adapter.ResultItem; import java.util.ArrayList;

import java.util.List; public class Manber {

public static final int N = 2;

public static final int PRIME_BASE = 2; public static final double MIN_MANBER = 65; public static Word countHash(Word word){

for (int i = 0; i < word.getNgram().length; i++){ char text[] = word.getNgram()[i].toCharArray(); int hash = 0;

for (int j = 0; j < text.length; j++){

(2)

}

word.getHash().add(hash); }

return word; }

public static ArrayList<Integer> union(ArrayList<Integer> set1, ArrayList<Integer> set2){

ArrayList<Integer> temp = (ArrayList)set1.clone(); for (Integer num : set2) {

if (temp.indexOf(num) == -1){ temp.add(num);

} }

return temp; }

public static ArrayList<Integer> intersection(ArrayList<Integer> set1, ArrayList<Integer> set2)

{

ArrayList<Integer> set = new ArrayList<Integer>(); for (Integer num: set2) {

if (set1.contains(num)){ set.add(num);

} }

return set; }

public static List<ResultItem> process(Word uji, List<DictionaryItem> data){

ArrayList<ResultItem> result = new ArrayList<ResultItem>(); for (DictionaryItem item: data) {

ResultItem resultItem = new ResultItem(); resultItem.setDataUji(uji);

resultItem.setTeks(item);

Word dataBanding = new Word(item.getMelayu()); dataBanding.setNGramValue(Manber.N);

countHash(dataBanding);

resultItem.setDataBanding(dataBanding); resultItem.setMamberValue(((double)

intersection(uji.getHash(), dataBanding.getHash()).size()

/ union(uji.getHash(),

dataBanding.getHash()).size()) * 100);

if (resultItem.getMamberValue() >= Manber.MIN_MANBER){ result.add(resultItem);

} }

return result; }

(3)

2. Program N-Gram

package com.agus.sinonimindomelayu.algo; import java.io.Serializable;

import java.util.ArrayList;

public class Word implements Serializable{ private String text;

private String[] ngram;

private ArrayList<Integer> hash; public Word(){

this.text = "";

this.hash = new ArrayList<Integer>(); }

public Word(String text){ this.text = text;

this.hash = new ArrayList<Integer>(); }

public void setText(String text) { this.text = text;

}

public String getText() { return text;

}

public void setHash(ArrayList<Integer> hash) { this.hash = hash;

}

public ArrayList<Integer> getHash() { return hash;

}

public void setNgram(String[] ngram) { this.ngram = ngram;

}

public String[] getNgram() { return ngram;

}

public void setNGramValue(int N){ if (this.text.length() > 0){

this.ngram = new String[this.text.length() - (N -1)]; for (int i = 0; i < this.ngram.length; i++){

this.ngram[i] = this.text.substring(i, i + N); }

} } }

(4)

package com.agus.sinonimindomelayu.activity; import android.content.Intent;

import android.support.v7.app.AppCompatActivity; import android.os.Bundle;

import android.support.v7.widget.Toolbar; import android.text.TextUtils;

import android.view.KeyEvent; import android.view.Menu;

import android.view.MenuInflater; import android.view.MenuItem; import android.view.View;

import android.widget.AdapterView; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast;

import com.agus.sinonimindomelayu.R;

import com.agus.sinonimindomelayu.adapter.DictionaryItem; import com.agus.sinonimindomelayu.adapter.ResultAdapter; import com.agus.sinonimindomelayu.adapter.ResultItem; import com.agus.sinonimindomelayu.algo.Manber;

import com.agus.sinonimindomelayu.algo.Word;

import com.agus.sinonimindomelayu.helper.AssetsHelper; import com.google.gson.Gson;

import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type;

import java.util.ArrayList; import java.util.List;

public class MainActivity extends ParentActivity { private ListView listView;

private ResultAdapter adapter;

private List<ResultItem> dictionaryItemList; private List<DictionaryItem> dataSource; private EditText txt_cari;

private Button btn_cari;

private TextView lbl_running_time; private TextView lbl_not_found; public MainActivity() {

super(R.layout.activity_main); }

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

initComponent();

dictionaryItemList = new ArrayList<ResultItem>(); dataSource = new ArrayList<DictionaryItem>();

Type listType = new

TypeToken<ArrayList<DictionaryItem>>(){}.getType();

dataSource = new

(5)

adapter = new ResultAdapter(this, R.layout.result_item, dictionaryItemList);

listView = (ListView)findViewById(R.id.list_result); listView.setAdapter(adapter);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {

Intent intent = new Intent(MainActivity.this, DetailProcessActivity.class);

intent.putExtra("result", dictionaryItemList.get(position));

startActivity(intent); }

});

setTitle("Sinonim Indonesia-Melayu"); }

@Override

public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu);

return true; }

@Override

public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) {

case R.id.about:

Intent intent = new Intent(this, AboutActivity.class); startActivity(intent);

default:

return super.onOptionsItemSelected(item); }

}

private void initComponent(){

txt_cari = (EditText)findViewById(R.id.txt_cari); btn_cari = (Button)findViewById(R.id.btn_cari);

lbl_running_time =

(TextView)findViewById(R.id.txt_running_time);

lbl_not_found = (TextView)findViewById(R.id.lbl_not_found); btn_cari.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) { search();

} });

txt_cari.setOnKeyListener(new View.OnKeyListener() { @Override

public boolean onKey(View view, int keyCode, KeyEvent keyEvent) {

(6)

search(); return true; }

}

return false; }

}); }

private void search(){

if(!TextUtils.isEmpty(txt_cari.getText().toString())){

String text = txt_cari.getText().toString().toLowerCase(); long startTime = System.nanoTime();

// here your code

Word teksUji = new Word(text); teksUji.setNGramValue(Manber.N); Manber.countHash(teksUji);

dictionaryItemList = Manber.process(teksUji, dataSource); long endTime = System.nanoTime();

adapter.setData(dictionaryItemList); if (dictionaryItemList.size() <= 0)

lbl_not_found.setVisibility(View.VISIBLE); else

lbl_not_found.setVisibility(View.GONE);

lbl_running_time.setText("Running Time : " + ((float)(endTime - startTime) / 1000000) + " ms");

} } }

4. Program Detail Proses

package com.agus.sinonimindomelayu.activity; import android.os.Bundle;

import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar;

import android.view.View;

import android.widget.TextView; import android.widget.Toast;

import com.agus.sinonimindomelayu.R;

import com.agus.sinonimindomelayu.adapter.ResultItem; import com.agus.sinonimindomelayu.algo.Manber;

import java.util.Arrays;

public class DetailProcessActivity extends ParentActivity { private TextView txt_uji_ngram;

private TextView txt_uji_hash; private TextView txt_banding_ngram; private TextView txt_banding_hash; private TextView txt_intersection; private TextView txt_union;

(7)

public DetailProcessActivity() {

super(R.layout.activity_detail_process, true); }

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

ResultItem result = (ResultItem)

getIntent().getSerializableExtra("result");

txt_uji_ngram = (TextView)findViewById(R.id.txt_uji_ngram); txt_uji_hash = (TextView)findViewById(R.id.txt_uji_hash);

txt_banding_ngram =

(TextView)findViewById(R.id.txt_banding_ngram);

txt_banding_hash =

(TextView)findViewById(R.id.txt_banding_hash);

txt_intersection =

(TextView)findViewById(R.id.txt_intersection);

txt_union = (TextView)findViewById(R.id.txt_union);

txt_manber_value =

(TextView)findViewById(R.id.txt_manber_value);

txt_uji_ngram.setText(Arrays.toString(result.getDataUji().getNgram())) ;

txt_uji_hash.setText(Arrays.toString(result.getDataUji().getHash().toA rray()));

txt_banding_ngram.setText(Arrays.toString(result.getDataBanding().getN gram()));

txt_banding_hash.setText(Arrays.toString(result.getDataBanding().getHa sh().toArray()));

txt_intersection.setText(Integer.toString(Manber.intersection(result.g etDataUji().getHash(), result.getDataBanding().getHash()).size()));

txt_union.setText(Integer.toString(Manber.union(result.getDataUji().ge tHash(), result.getDataBanding().getHash()).size()));

txt_manber_value.setText(Double.toString(result.getMamberValue())); }

}

5. Program Koneksi

package com.agus.sinonimindomelayu.activity; import android.os.Bundle;

import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar;

(8)

import com.agus.sinonimindomelayu.R;

public class ParentActivity extends AppCompatActivity { protected Toolbar toolbar;

protected Boolean enableBackButton; protected int resLayoutId;

protected int resToolbarColor;

public ParentActivity(int resLayoutId){ this.enableBackButton = false; this.resLayoutId = resLayoutId; }

public ParentActivity(int resLayoutId, Boolean enableBackButton){ this.enableBackButton = enableBackButton;

this.resLayoutId = resLayoutId; }

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(this.resLayoutId);

toolbar = (Toolbar) findViewById(R.id.tool_bar); if (toolbar != null){

toolbar.setFitsSystemWindows(true); setSupportActionBar(toolbar);

if (this.enableBackButton) {

getSupportActionBar().setDisplayHomeAsUpEnabled(true); }

} }

@Override

public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub

int id = item.getItemId(); switch (id) {

case android.R.id.home: onBackPressed(); return true; default:

return super.onOptionsItemSelected(item); }

}

@Override

public void setTitle(CharSequence title) { getSupportActionBar().setTitle(title); }

}

6. Program Splash Screen

package com.agus.sinonimindomelayu.activity; import android.content.Intent;

import android.os.Handler;

(9)

import com.agus.sinonimindomelayu.R;

public class SplashScreenActivity extends AppCompatActivity { @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_splash_screen); new Handler().postDelayed(new Runnable() {

@Override

public void run() {

// This method will be executed once the timer is over // Start your app main activity

Intent i = new Intent(SplashScreenActivity.this, MainActivity.class);

startActivity(i); finish();

} }, 1000); }

}

7. Program Menu About

package com.agus.sinonimindomelayu.activity; import android.support.v7.app.AppCompatActivity; import android.os.Bundle;

import com.agus.sinonimindomelayu.R;

public class AboutActivity extends AppCompatActivity { @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_about); }

}

8. Program Item Kamus

package com.agus.sinonimindomelayu.adapter; import java.io.Serializable;

public class DictionaryItem implements Serializable{ private String melayu;

private String makna; public DictionaryItem(){ this.melayu = ""; this.makna = ""; }

public DictionaryItem(String melayu, String makna) {

(10)

public void setMelayu(String melayu) { this.melayu = melayu;

}

public String getMelayu() { return melayu;

}

public void setMakna(String makna) { this.makna = makna;

}

public String getMakna() { return makna;

} }

9. Program Result Adapter

package com.agus.sinonimindomelayu.adapter; import android.app.Activity;

import android.content.Context; import android.view.LayoutInflater; import android.view.View;

import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import com.agus.sinonimindomelayu.R; import java.util.List;

public class ResultAdapter extends ArrayAdapter<ResultItem> { private Context context;

private List<ResultItem> resultItems; private int resource;

private View view;

public ResultAdapter(Context context, int resource, List<ResultItem> objects) {

super(context, resource, objects); this.context = context;

this.resultItems = objects; this.resource = resource; }

public void setData(List<ResultItem> data){ resultItems.clear();

resultItems = data;

this.notifyDataSetChanged(); }

@Override

public int getCount() {

return resultItems.size(); }

@Override

public View getView(int position, View convertView, ViewGroup parent) {

(11)

LayoutInflater inflater =

ResultItem item = resultItems.get(position);

holder.melayu.setText(item.getTeks().getMelayu()); holder.makna.setText(item.getTeks().getMakna()); return view;

10. Program Result Item

package com.agus.sinonimindomelayu.adapter; import com.agus.sinonimindomelayu.algo.Word; import java.io.Serializable;

public class ResultItem implements Serializable{ private Word dataUji;

private Word dataBanding; private double mamberValue; private DictionaryItem teks; public ResultItem(){

dataUji = new Word(); dataBanding = new Word(); teks = new DictionaryItem(); }

public void setDataUji(Word dataUji) { this.dataUji = dataUji;

}

public Word getDataUji() { return dataUji;

}

public void setDataBanding(Word dataBanding) { this.dataBanding = dataBanding;

}

public Word getDataBanding() { return dataBanding;

}

public void setMamberValue(double mamberValue) { this.mamberValue = mamberValue;

}

public double getMamberValue() { return mamberValue;

}

(12)

}

public DictionaryItem getTeks() { return teks;

} }

LAMPIRAN B: CURRICULUM VITAE

I. Data Pribadi

1. Nama

:

Agus Manur

2. Tempat dan Tanggal Lahir

:

Medan, 25 Agustus 1993

3. Jenis Kelamin

:

Laki-laki

4. Agama

:

Islam

5. Status Pernikahan

:

Lajang

6. Warga Negara

:

Indonesia

7. Alamat

:

Jalan. Brigjend katamso Gg. SetiaBaru,

Medan

8. Nomor Telepon / HP

:

08116081448

9. e-mail

:

agusmanur@gmail.com

10. Kode Pos

:

20125

II. Pendidikan Formal

:

Periode

(Tahun)

(13)

1999

- 2005

SD Negeri 0608098

-

SD

2005

- 2008

SMP Negeri 36 Medan

-

SMP

2008

- 2011

SMK Multi Karya Medan

Teknik Mesin

SMK

2011

- 2014

D-III Teknik Informatika USU

Teknik Informatika

D-III

III. Pendidikan Non Formal / Training – Seminar

Tahun

Lembaga / Instansi

Keterampilan

2012

Telkom - Webmedia

Pelatihan Networking, PABX, CCTV

2011

Ukmi Ad-dakwah USU

Pelatihan Motivasi Kepemimpinan

2013

TI USU

Pelatihan SPSS

2013

TI USU

Pelatihan Seminar Ubuntu

2011

TI USU

Seminar Android dan cloud computing

IV. Riwayat Pengalaman Kerja/ Magang

Periode

Instansi / Perusahaan

Posisi

2011

-

2012

PLN

Unit

Induk

Pembangunan II Medan

Magang Bag. Keuangan dan SDM

2013

-

2014

International

Education

Centre (IEC)

IT Support

2014

-

2014

Pan Pacific (InterPan)

Financial Consultant

2014

-

2017

SMK Multi Karya Medan

Guru Produktif

2015

-

2017

SMK Bimsa

Guru Komputer

V. Kemampuan Bidang Komputer

Bidang

Keterampilan

Hardware Computer

Install

Operating

System,Format

Dan

Partisi

Hardisk,Seting Internet Dan Modem

Software Graphic

Adobe Photoshop,Corel Draw

Software Editing

Adobe Premiere 1.5, Uled Video Studio 8

Software Animasi

Macromedia Flash

Software

pengetikan

dan

Presentasi

Ms .Office ( word, Excel, Power point, Acces)

Programming

C++, Ms. Visual Basic 6.0, MySQL, PHP

V. Penguasaan Bahasa

1. Bahasa Indonesia

2. Bahasa Inggris

Referensi

Dokumen terkait

Oleh karena rasanya yang pahit, hanya sebagian orang saja yang mengkonsumsi daunnya, sebagian besar yang lain memilih untuk tidak mengkonsumsinya. Padahal kita

Tujuan penelitian ini dilakukan adalah untuk menentukan kadar air dan besar bilangan penyabunan dalam minyak kelapa serta menentukan apakah kadar air dan bilangan penyabunan

The main objectives of this study are the (1) measurement and mapping of the spatial distribution of the deformation rates in the study area; (2) analysis of

Sistem penilaian dengan system KPI, selain dapat mengukur kinerja orang per orang, juga bisa dilakukan untuk melakukan pengukuran kinerja secara kelompok, baik itu

Pada tahap pelaksanaan, kegiatan pembelajaran dibagi menjadi tiga bagian yaitu kegiatan awal, kegiatan inti dan kegiatan penutup. Pada kegiatan awal dimulai dengan

Tujuan penelitian ini adalah Menganalisa hubungan depresi dengan kadar [9] gula darah acak pada penderita Diabetes Mellitus tipe 2 di Ruang Dahlia RSUD Jombang.. Desain penelitian

ROM terdiri dari fleksi dan ekstensi siku, pronasi dan supinasi lengan bawah, fleksi bahu, adduksi, dan abduksi bahu, rotasi bahu, ekstensi jari jari tangan, inversi dan iversi

Berdasarkan hasil analisis dan penelitian, dapat dikatakan bahwa beban kerja dan produktivitas para karyawan yang ada di Apotek ini sudah sangat tinggi, hal ini