Upgrade to Pro — share decks privately, control downloads, hide ads and more …

@begobet

Jim Geovedi
December 17, 2011

 @begobet

The story behind Twitter chatbot, @begobet

Jim Geovedi

December 17, 2011
Tweet

More Decks by Jim Geovedi

Other Decks in Technology

Transcript

  1. AI & NLP pada @begobet AI & NLP pada @begobet

    AI & NLP pada @begobet AI & NLP pada @begobet AI & NLP pada @begobet
  2. 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
  3. dab

  4. 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
  5. 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
  6. 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
  7. 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.
  8. 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
  9. 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
  10. “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
  11. 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
  12. $ 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
  13. 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)
  14. 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
  15. 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()
  16. #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
  17. 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]
  18. 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 <page> tag. 100 15.983 1.406 8.80% 2.252 62.43% https://github.com/axiak/pyre2/
  19. 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
  20. 1 2 3 4 5 6 7 saya mau makan

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

    siomay bandung saya pergi makan siang
  22. bapaknya adalah pekerja keras mereka adalah contoh bagi kita semua

    mereka adalah pekerja keras bapaknya adalah contoh bagi kita semua ✔
  23. teknisi komputer itu bernama joko kejahatan komputer sudah semakin parah

    teknisi komputer sudah semakin parah kejahatan komputer itu bernama joko ✖
  24. 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;
  25. 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
  26. set subyek [saya, kamu, dia, mereka, ...] pakaian [baju, kemeja,

    kaos, t-shirt, ...] warna [merah, kuning, hijau, biru, ...]
  27. 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
  28. 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?
  29. “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!
  30. @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!
  31. @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
  32. 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 —
  33. class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello,

    World!"); } } print "Hello, World!" java python simplicity