Anda di halaman 1dari 91

AI & NLP pada @begobet

AI & NLP pada @begobet


AI & NLP pada @begobet
AI & NLP pada @begobet
AI & NLP pada @begobet
2001: A Space Odyssey
HAL 9000
natural language processing
dengan input yang minimal,
sistem komputer dapat
memahami maksudnya
secara maksimal

kota
gudeg →
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 Begobet
1. penterjemahan
2. pencarian informasi
3. pemahaman
4. pencarian hubungan
kendala NLP dalam pengembangan Begobet
1. penerjemahan
2. pencarian informasi
3. pemahaman
4. pencarian hubungan
kitchen your kitchen
is maid’s kitchen

dapur dapurmu ki
dapuran babu

wajah
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 id
i like to play football en
me gusta jugar al fútbol es
나는 축구를 좋아 ko
Ég elska fótbolta is
saya mencintai sepak bola id
kendala NLP dalam pengembangan Begobet
1. penerjemahan
2. pencarian informasi
3. pemahaman
4. pencarian hubungan
Unstructured Documents
(Text, HTML, XML)

NATURAL LANGUAGE PROCESSING

Named Entities Facts Events ____

People Sporting
Position ____
Companies Management
Alliance ____
Organisations Change
Person-Education ____
Geographies IPO
Person-Political ____
Authors Labor Action
etc. ____
etc. etc.
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.

http://nasional.kompas.com/read/2011/09/21/17310722/Akbar.Tandjung.Dukung.Reshuffle.Kabinet
kendala NLP dalam pengembangan Begobet
1. penerjemahan
2. pencarian informasi
3. pemahaman
4. pencarian hubungan

ASU
Arizona State University
kendala NLP dalam pengembangan Begobet
1. penerjemahan
2. pencarian informasi
3. pemahaman
4. pencarian hubungan
Unit Kerja Presiden untuk Pengawasan dan Pengendalian Pembangunan (UKP4)

Ketua Dewan Pertimbangan


Susilo Bambang Yudhoyono

Partai Golkar Kabinet Indonesia Bersatu II

Akbar Tanjung
Boediono Parlemen

Lingkaran Survei Indonesia (LSI)


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 → ???? → 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
$ 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
random
botgan 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 → kalau
makan → 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 re
except ImportError:
import re
# re re2 % re regex % regex
Test Description
total runs time(s) time(s) time time(s) time

Find list of '([a-zA-Z][a-


Findall zA-Z0-9]*)://([^ /]+)(/
2 19.961 0.336 1.68% 11.463 2.93%
URI|Email [^ ]*)?|([^ @]+)@([^
@]+)'

This test replaces links


Replace of the form [[Obama|
100 16.032 2.622 16.35% 2.895 90.54%
WikiLinks Barack_Obama]] to
Obama.

Remove This test splits the data


100 15.983 1.406 8.80% 2.252 62.43%
WikiLinks by the <page> tag.

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

marko
v 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 rujak
saya mau makan siomay
saya makan siomay bandung
saya pergi makan siang
mau

rujak

saya makan siomay bandung

pergi siang
bapaknya adalah pekerja keras
mereka adalah contoh bagi kita semua


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


teknisi komputer sudah semakin parah
kejahatan 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
set
subyek [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 ____
saya baju putih
ia kemeja merah
kamu kaos hijau
common sense knowledge
restoran LokasiU
Dig n tuk
una
ka
nU
ntu M e la k u kan masak
k Mampu

orang membuat_kenyang

DigunakanUntuk
Me
ng
ing

bertahan_hidup
ink

Persyar
an

hidangan_penutup
Digun

atan
l iki akanU oven
m i
telan

n
Me

a
ntuk

Tuju
at
h

a
BeradaDalam
Ad iS
Adala

ala e rj ad
h T
manis
Memili
ki
makan
n tu k
Adalah anU
cheesecake kue Digun
ak
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 statistik
lebih diutamakan daripada
pendekatan algoritmik
kaidah berbahasa yang digunakan adalah
kaidah 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.”
repost
, gan!
http://id.wikipedia.org/wiki/Tata_bahasa
@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?
gcd(a,0) = a a
gcd(a,b) = gcd(b,a — b — ).
http://en.wikipedia.org/wiki/Greatest_common_divisor
b

def gcd(a, b):

rapid
while b != 0:
t=b
b=a%b
a=t

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

simplicity
print "Hello, World!"

python
darimana asalnya Rp 1.618.033.988,00?
φ • 109
http://en.wikipedia.org/wiki/Golden_ratio
1+ √5
—— • 109
2
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

Anda mungkin juga menyukai