Slide 1

Slide 1 text

AI & NLP pada @begobet AI & NLP pada @begobet AI & NLP pada @begobet AI & NLP pada @begobet AI & NLP pada @begobet

Slide 2

Slide 2 text

2001: A Space Odyssey

Slide 3

Slide 3 text

HAL 9000

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

natural language processing

Slide 9

Slide 9 text

kota gudeg dengan input yang minimal, sistem komputer dapat memahami maksudnya secara maksimal →

Slide 10

Slide 10 text

QmO dLaM iDopQhO. q tWo… qMo mANk cLiD wAd cYanK m qHo. tPhE qMo pLu tHwO„ mY LuPi”… aLwaYs 4’U. cO’nA cMa qMo YaNk Co WaD qHo cYuM. k’tHwA,, n cNeNk tHanKz b’4„ yOz aLaWAiCe d bEzT,, iN meYe heArD. tHo_tHo..LupHz yOu„ bU_bU.... I’m ReGrEeEeeEEeeEet nOw... naFaZ..bNcHi qOh nGmBAnK... hOeKkkKKk

Slide 11

Slide 11 text

kendala NLP dalam pengembangan Begobet 1. penterjemahan 2. pencarian informasi 3. pemahaman 4. pencarian hubungan

Slide 12

Slide 12 text

kendala NLP dalam pengembangan Begobet 1. penerjemahan 2. pencarian informasi 3. pemahaman 4. pencarian hubungan

Slide 13

Slide 13 text

kitchen dapur wajah dapurmu ki dapuran babu your kitchen is maid’s kitchen

Slide 14

Slide 14 text

dab

Slide 15

Slide 15 text

dab, me·nge·dab v Sen 1 mengganti suara asli pemain film dng suara orang lain, biasanya dl bahasa lain, dng memperhatikan dan menyesuaikan gerak bibir; menyulih suara: dia ~ film Itali dl bahasa Inggris; 2 mengisi suara orang lain (dl film): ia biasa ~ suara dl film silat; pe·nge·dab·an n proses, cara, perbuatan mengedab

Slide 16

Slide 16 text

saya suka bermain sepak bola i like to play football me gusta jugar al fútbol 나는 축구를 좋아 Ég elska fótbolta saya mencintai sepak bola id en es ko is id

Slide 17

Slide 17 text

kendala NLP dalam pengembangan Begobet 1. penerjemahan 2. pencarian informasi 3. pemahaman 4. pencarian hubungan

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Named Entities Facts Events People Companies Organisations Geographies Authors etc. Position Alliance Person-Education Person-Political etc. Sporting Management Change IPO Labor Action etc. Unstructured Documents (Text, HTML, XML) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ NATURAL LANGUAGE PROCESSING

Slide 20

Slide 20 text

http://nasional.kompas.com/read/2011/09/21/17310722/Akbar.Tandjung.Dukung.Reshuffle.Kabinet Akbar Tandjung Dukung "Reshuffle" Kabinet JAKARTA, KOMPAS.com - Ketua Dewan Pertimbangan Partai Golkar Akbar Tandjung mendukung rencana Presiden Susilo Bambang Yudhoyono untuk melakukan reshuffle atau perombakan susunan Kabinet Indonesia Bersatu II. Akbar beralasan, saat ini usia pemerintahan Presiden baru memasuki tahun kedua sehingga pergantian menteri yang dipandang tak berkinerja baik akan membuat pemerintahan berjalan lebih efektif. "Kompetensi orang harus menjadi pertimbangan utama," kata Akbar pada diskusi di kompleks Parlemen, Jakarta, Rabu (21/9/2011). Dalam melakukan reshuffle, Presiden dapat menggunakan instrumen hasil evaluasi yang dilakukan Unit Kerja Presiden untuk Pengawasan dan Pengendalian Pembangunan (UKP4). Politisi senior ini juga mengatakan, Presiden dapat mempertimbangkan hasil survei lembaga survei, termasuk survei Lingkaran Survei Indonesia (LSI) yang menyebutkan, kepuasan publik terhadap pemerintahan Presiden Susilo Bambang Yudhoyono-Boediono kembali merosot. Saat ini hanya 37,7 persen publik yang puas terhadap kinerja pemerintahan. Sebanyak 44,7 persen publik menyatakan tidak puas dan 17,7 persen tidak menjawab.

Slide 21

Slide 21 text

kendala NLP dalam pengembangan Begobet 1. penerjemahan 2. pencarian informasi 3. pemahaman 4. pencarian hubungan

Slide 22

Slide 22 text

Slide 23

Slide 23 text

ASU Arizona State University

Slide 24

Slide 24 text

kendala NLP dalam pengembangan Begobet 1. penerjemahan 2. pencarian informasi 3. pemahaman 4. pencarian hubungan

Slide 25

Slide 25 text

Boediono Lingkaran Survei Indonesia (LSI) Kabinet Indonesia Bersatu II Unit Kerja Presiden untuk Pengawasan dan Pengendalian Pembangunan (UKP4) Ketua Dewan Pertimbangan Parlemen Susilo Bambang Yudhoyono Partai Golkar Akbar Tanjung

Slide 26

Slide 26 text

Susilo Bambang Yudhoyono adalah manusia Susilo Bambang Yudhoyono adalah Presiden Susilo Bambang Yudhoyono adalah Presiden negara Republik Indonesia Susilo Bambang Yudhoyono adalah Politikus Partai Golkar adalah Partai Politik Akbar Tanjung adalah Politikus Jakarta adalah nama Kota Jakarta adalah sebuah Kota dari negara Republik Indonesia

Slide 27

Slide 27 text

implementasi NLP spesifik bahasa Indonesia

Slide 28

Slide 28 text

“Kualitas penerapan tata bahasa yang benar dan tepat masih sangat rendah, hal ini terbukti seperti yang dipraktikkan oleh bangsa Indonesia di media massa maupun pada kehidupan nyata.” http://id.wikipedia.org/wiki/Tata_bahasa

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet

Slide 31

Slide 31 text

$ python botgan.py > hi, apakabar? bener gan ....skalian minum suegerrrrrrrrrr > minum apa? waah berarti pas tahun 2010 agan ini udh mencapai prestasi yg bagus yah > iya, dong. sekarang tahun 2011, harus lebih bagus lagi. yg sekarang aja deh ini solusinya inside picture there are pictures > solusi sebelumnya apa? wah mbah kaskus.. > kenapa? ada bekingan si cail bakery gan > kok bisa? kasian ya gan.. :mewek semoga arwahnya tenang di alam sana

Slide 32

Slide 32 text

def ask_kaskus(question): try: comments = [] for comment in get_comments(kaskus_search( make_keywords(question))): comment = clean_tags(comment.renderContents()) if len(comment) < 120 and comment.strip() != '': comments.append(comment) return swap(random.choice(comments), DEFAULT_SWAPWORDS).strip() except: return random.choice(DEFAULT_EXCUSES)

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet

Slide 38

Slide 38 text

random random random random botgan terlalu random random random random

Slide 39

Slide 39 text

RE_MATCH_BLOCKS = re.compile(u'#MATCH\s+(.*?)#END', re.DOTALL) RE_COMMA_DELIM = re.compile(u'\s*,\s*') def GetResponse(lang, kbfile, text): filename = os.path.join(KB_DIRECTORY, lang, kbfile) with codecs.open(filename, 'r', encoding='utf-8') as kb_input: kb_content = kb_input.read() kb = [] for block in RE_MATCH_BLOCKS.findall(kb_content): responses = block.splitlines() match_string = responses.pop(0) if len(responses) == 0: continue matches = [] for match in RE_COMMA_DELIM.split(match_string): pattern = re.compile(r'\b%s\b' % re.escape(match), re.I) matches.append(pattern) kb.append((matches, responses)) for (matches, responses) in kb: for match in matches: if match.search(text): return random.choice(responses).strip()

Slide 40

Slide 40 text

#MATCH MIE_GORENG, MIE_REBUS, MIE_TELOR ENAK, GAK? PESENIN AKU SATU, DONG. EH, AKU MAU DONG.. PESENIN AKU SATU LAGI, YA. *NAMBAH* #END #MATCH BUBUR_AYAM, BURYAM SEMPAT NGERASAIN BUBUR AYAM MANG TATANG DI BANDUNG. ENAK LHO. KANGEN MAKAN BUBUR AYAM MANG OYO TEA.. *TIBA-TIBA LAPAR* DI CIHAMPELAS ADA JUGA TUH TEMPAT MAKAN BUBUR AYAM ENAK. #END

Slide 41

Slide 41 text

Levenshtein distance

Slide 42

Slide 42 text

galau → kalau makan → makin tema → teman

Slide 43

Slide 43 text

def levenshtein(a, b): "Calculates the Levenshtein distance between a and b." n, m = len(a), len(b) if n > m: # Make sure n <= m, to use O(min(n, m)) space a, b = b, a n, m = m, n current = range(n + 1) for i in range(1, m + 1): previous, current = current, [i]+[0]*n for j in range(1, n+1): add, delete = previous[j]+1, current[j-1]+1 change = previous[j-1] if a[j-1] != b[i-1]: change = change + 1 current[j] = min(add, delete, change) return current[n]

Slide 44

Slide 44 text

try: import re2 as re except ImportError: import re

Slide 45

Slide 45 text

Test Description # re re2 % re regex % regex Test Description total runs time(s) time(s) time time(s) time Findall URI|Email Find list of '([a-zA-Z][a- zA-Z0-9]*)://([^ /]+)(/ [^ ]*)?|([^ @]+)@([^ @]+)' 2 19.961 0.336 1.68% 11.463 2.93% Replace WikiLinks This test replaces links of the form [[Obama| Barack_Obama]] to Obama. 100 16.032 2.622 16.35% 2.895 90.54% Remove WikiLinks This test splits the data by the tag. 100 15.983 1.406 8.80% 2.252 62.43% https://github.com/axiak/pyre2/

Slide 46

Slide 46 text

botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

natural language generation markov chain

Slide 49

Slide 49 text

I(w|s) = -log2P(w|s)

Slide 50

Slide 50 text

1 2 3 4 5 6 7 saya mau makan rujak saya mau makan siomay saya makan siomay bandung saya pergi makan siang

Slide 51

Slide 51 text

saya mau makan rujak saya mau makan siomay saya makan siomay bandung saya pergi makan siang

Slide 52

Slide 52 text

saya mau rujak makan siomay pergi bandung siang

Slide 53

Slide 53 text

bapaknya adalah pekerja keras mereka adalah contoh bagi kita semua mereka adalah pekerja keras bapaknya adalah contoh bagi kita semua ✔

Slide 54

Slide 54 text

teknisi komputer itu bernama joko kejahatan komputer sudah semakin parah teknisi komputer sudah semakin parah kejahatan komputer itu bernama joko ✖

Slide 55

Slide 55 text

mengerti konteks

Slide 56

Slide 56 text

saya ingin makan siang di kantin.

Slide 57

Slide 57 text

saya/PRP ingin/MD makan/VBT siang/NNC di/IN kantin/NNC ./. http://www.panl10n.net/english/outputs/Indonesia/UI/0901/UI-POSTAG.pdf

Slide 58

Slide 58 text

saya ingin makan siang di kantin.

Slide 59

Slide 59 text

tahu

Slide 60

Slide 60 text

1 ta·hu v 1 mengerti sesudah melihat (menyaksikan, mengalami, dsb): ia ~ bahwa saya yg menolongnya; perkara mesin, dia lebih ~ dp saya; 2 kenal (akan); mengenal: ia tidak ~ akan sanak saudaranya lagi; 3 mengindahkan; memedulikan: ia sudah tidak mau ~ lagi kpd anaknya; 4 mengerti; berpengertian: siapa yg ~ apa maksud tanda ini?; 5 pandai; cakap: sedikit-sedikit saya ~ juga tt mesin; 6 insaf; sadar: dia tidak ~ akan kekurangannya; 7 tak pernah: petinju itu tidak ~ menang; adikku tidak ~ membolos; 2 ta·hu n makanan dr kedelai putih yg digiling halus-halus, direbus, dan dicetak;

Slide 61

Slide 61 text

saya/PRP tahu/VBI tentang mesin mereka sedang makan/VBT tahu/NN

Slide 62

Slide 62 text

botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet botgan → klobot→ begobet → ???? → jagobet

Slide 63

Slide 63 text

natural language generation {rewrite}

Slide 64

Slide 64 text

set & template

Slide 65

Slide 65 text

set subyek [saya, kamu, dia, mereka, ...] pakaian [baju, kemeja, kaos, t-shirt, ...] warna [merah, kuning, hijau, biru, ...]

Slide 66

Slide 66 text

template ____ sedang memakai ____ berwarna ____ nampaknya ____ terlihat ____ ____ membahas ____ yang ____

Slide 67

Slide 67 text

____ sedang memakai ____ berwarna ____ saya ia kamu baju kemeja kaos putih merah hijau

Slide 68

Slide 68 text

common sense knowledge

Slide 69

Slide 69 text

oven masak restoran orang hidangan_penutup cheesecake manis kue makan bertahan_hidup telan membuat_kenyang TerjadiSaat Tujuan Persyaratan DigunakanUntuk DigunakanUntuk DigunakanUntuk DigunakanUntuk LokasiUntuk BeradaDalam Adalah Adalah Adalah Memiliki Memiliki Menginginkan MampuMelakukan

Slide 70

Slide 70 text

automated question generation

Slide 71

Slide 71 text

para mahasiswa sedang memperhatikan dosen yang sedang mengajar di kelas

Slide 72

Slide 72 text

para mahasiswa sedang memperhatikan dosen yang sedang mengajar di kelas siapa yang sedang memperhatikan? siapa yang diperhatikan? apa yang para mahasiswa lakukan? apa yang dosen lakukan? di mana dosen mengajar?

Slide 73

Slide 73 text

strategi pengembangan

Slide 74

Slide 74 text

pendekatan statistik lebih diutamakan daripada pendekatan algoritmik

Slide 75

Slide 75 text

kaidah berbahasa yang digunakan adalah kaidah percakapan sehari-hari

Slide 76

Slide 76 text

“Kualitas penerapan tata bahasa yang benar dan tepat masih sangat rendah, hal ini terbukti seperti yang dipraktikkan oleh bangsa Indonesia di media massa maupun pada kehidupan nyata.” http://id.wikipedia.org/wiki/Tata_bahasa repost, gan!

Slide 77

Slide 77 text

@prita_naya: Jodohku ada dimana yah? Sedang apa? Kok sampai sekarang belum muncul? @begobet: kalau nanya jodoh, sama ki joko bodo aja sana! @prita_naya: Kalo jodohku selingkuh piye? @begobet: hubungan kita ini termasuk selingkuh gak sih? @prita_naya: Lha kamu cowo apa cewe? Selingkuh atau tidak itu relatif, tergantung siapa yang nanya. @begobet: aku tidak pernah selingkuh. pacar aja 3. rukun satu sama lain. cem-ceman sih gak diitung, ya!

Slide 78

Slide 78 text

@begobet: tampaknya bot @simsimi_id sudah mulai aktif di twitter, tapi apakah bisa segalau aku? tapi kok seperti ada operatornya, ya? *tendang2* @simsimi_id: Siapa kamu? @begobet: kaya yang baru kenal aja. @simsimi_id: kl baru kenal, bisa lsg jadian ya? @begobet: baiklah. walaupun sejujurnya aku gak tau harus bilang apa ama kamu! @simsimi_id: Kamu membikinku pusing, kamu harus ajarin aku @begobet: dire. aku mau minta ajarin yang mana dulu nih? @simsimi_id: cek tuh daftar kunjungan. kl blm ada ya bikin daftar dulu.. @begobet: bagaimana aku gak tahu, lha wong nick name & pro-pic kamu mudah dikenali, put. -___ _-a @simsimi_id: Jangan marah ya, tapi aku gak tau jawabannya, kamu mau ajarin aku @begobet: buahaha, iyo noooh, belajar tirakat :d @simsimi_id: Aku tidak tau maksudmu, tolong ajarin aku @begobet: iya nih :( td aku mau buka fb aja lemot banget :'( @simsimi_id: Apa itu? Aku tidak mengerti ? Maukah kamu ajarin aku? @begobet: yah kalo grammar sih macem tiara. struktur kata, jadi buanyaakkk. kamu mau aku ajarin yang mana dulu nih? @simsimi_id: Aaah satu lagi aku tidak tau artinya, ajarin aku dong @begobet: ne. nee t^t aaah aku bingung mau ngomong apa

Slide 79

Slide 79 text

http://begobet.ardwort.com/

Slide 80

Slide 80 text

faq: frequently annoying questions

Slide 81

Slide 81 text

mengapa menggunakan python?

Slide 82

Slide 82 text

def gcd(a, b): while b != 0: t = b b = a % b a = t return a rapid prototyping http://en.wikipedia.org/wiki/Greatest_common_divisor gcd(a,0) = a gcd(a,b) = gcd(b,a — b ). b a —

Slide 83

Slide 83 text

class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello, World!"); } } print "Hello, World!" java python simplicity

Slide 84

Slide 84 text

darimana asalnya Rp 1.618.033.988,00?

Slide 85

Slide 85 text

φ • 109 http://en.wikipedia.org/wiki/Golden_ratio

Slide 86

Slide 86 text

—— • 109 2 + 1 √5

Slide 87

Slide 87 text

mengapa tidak menggunakan NLTK?

Slide 88

Slide 88 text

bagaimana proses trainingnya?

Slide 89

Slide 89 text

cuma segini aja?

Slide 90

Slide 90 text

apakah ada chatbot framework yang siap pakai? AIML, MegaHAL, CHAT-L, ...

Slide 91

Slide 91 text

@geovedi http://slideshare.net/geovedi