ai & nlp pada @begobet

Post on 09-May-2015

3.862 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Delivered at Amikom's Stadium General 17 December 2011.

TRANSCRIPT

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

2001: A Space Odyssey

HAL 9000

natural language processing

kotagudeg

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

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

kendala NLP dalam pengembangan Begobet1. penterjemahan

2. pencarian informasi3. pemahaman

4. pencarian hubungan

kendala NLP dalam pengembangan Begobet1. penerjemahan

2. pencarian informasi3. pemahaman

4. pencarian hubungan

kitchen

dapur

wajah

dapurmu ki dapuran babu

your kitchenis maid’s kitchen

dab

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

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

kendala NLP dalam pengembangan Begobet1. penerjemahan

2. pencarian informasi3. pemahaman

4. pencarian hubungan

Named Entities Facts Events

PeopleCompanies

OrganisationsGeographies

Authorsetc.

PositionAlliance

Person-EducationPerson-Political

etc.

SportingManagement

ChangeIPO

Labor Actionetc.

Unstructured Documents(Text, HTML, XML)

_ _ _ _

_ _ _ __ _ _ __ _ _ __ _ _ __ _ _ _

NATURAL LANGUAGE PROCESSING

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.

kendala NLP dalam pengembangan Begobet1. penerjemahan

2. pencarian informasi3. pemahaman

4. pencarian hubungan

ASUArizona State University

kendala NLP dalam pengembangan Begobet1. penerjemahan

2. pencarian informasi3. pemahaman

4. pencarian hubungan

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

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

implementasi NLP spesifik

bahasa Indonesia

“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

botgan → klobot→ begobet → ???? → jagobetbotgan → 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

$ 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

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)

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

random random random randombotgan terlalu random random random random

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()

#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

Levenshtein distance

galau → kalaumakan → makin tema → teman

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]

try:    import re2 as reexcept ImportError:    import re

Test Description# re re2 % re regex % regex

Test Descriptiontotal 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/

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

natural language generation

markov chain

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

1 2 3 4 5 6 7

saya mau makan rujak

saya mau makan siomay

saya makan siomay bandung

saya pergi makan siang

saya mau makan rujaksaya mau makan siomay

saya makan siomay bandungsaya pergi makan siang

saya

mau

rujak

makan siomay

pergi

bandung

siang

bapaknya adalah pekerja kerasmereka adalah contoh bagi kita semua

mereka adalah pekerja kerasbapaknya adalah contoh bagi kita semua

teknisi komputer itu bernama jokokejahatan komputer sudah semakin parah

teknisi komputer sudah semakin parahkejahatan komputer itu bernama joko

mengerti konteks

saya ingin makan siang di kantin.

saya/PRP ingin/MD makan/VBT siang/NNC di/IN kantin/NNC ./.

http://www.panl10n.net/english/outputs/Indonesia/UI/0901/UI-POSTAG.pdf

saya ingin makan siang di kantin.

tahu

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;

saya/PRP tahu/VBI tentang mesin

mereka sedang makan/VBT tahu/NN

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

natural language generation{rewrite}

set & template

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

template____ sedang memakai ____ berwarna ____nampaknya ____ terlihat ________ membahas ____ yang ____

____ sedang memakai ____ berwarna ____sayaiakamu

bajukemejakaos

putihmerahhijau

common sense knowledge

oven

masak

restoran

orang

hidangan_penutup

cheesecake

manis

kue

makan

bertahan_hidup

telan

membuat_kenyang

TerjadiSaatTujua

n

Persyaratan

DigunakanUntuk

Digun

akan

Untu

kDigunakanUntuk

DigunakanUntuk

LokasiUntuk

Bera

daDa

lamAdalah

Adalah

Adala

h

Memiliki

Memiliki

Menginginkan

MampuMelakukan

automated question generation

para mahasiswa sedang memperhatikan dosen yang sedang mengajar di kelas

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?

strategi pengembangan

pendekatan statistiklebih diutamakan daripada

pendekatan algoritmik

kaidah berbahasa yang digunakan adalahkaidah percakapan sehari-hari

“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_bahasarepost, gan!

@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!

@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

http://begobet.ardwort.com/

faq: frequently annoying questions

mengapa menggunakan python?

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) = agcd(a,b) = gcd(b,a — b ).b

a—

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

print "Hello, World!"

java

python

simplicity

darimana asalnya Rp 1.618.033.988,00?

φ • 109

http://en.wikipedia.org/wiki/Golden_ratio

—— • 1092

+1 √5

mengapa tidak menggunakan NLTK?

bagaimana proses trainingnya?

cuma segini aja?

apakah ada chatbot framework yang siap pakai?

AIML, MegaHAL, CHAT-L, ...

@geovedi

http://slideshare.net/geovedi

top related