SlideShare a Scribd company logo
Meetup komunitas pengguna python
  Kampus ITB, 28 Januari 2012




Python untuk Pemrosesan Teks
            Bahasa Indonesia
                                 Peb Ruswono Aryan
                                     http://about.me/peb
Bahasa dan Media : Tulisan




                                                                                                                    Teks
                                                                                                                    gambar




                                                                                         Optical Character Recognition,
                                                                                         Handwriting Recognition
Image source:
http://i717.photobucket.com/albums/ww172/AmandaNichelle/Person.png

http://www.school-clipart.com/school_clipart_images/happy_person_in_silhouette_a_woman_clapping_0515-0911-2801-0927_SMU.jpg
Bahasa dan Media : Lisan




                                                                                                                        Teks




                                                                                                                     Suara

                                                                                         Natural Language Processing (text),
                                                                                         Automatic Speech Recognition,
Image source:
http://i717.photobucket.com/albums/ww172/AmandaNichelle/Person.png
                                                                                         Text-to-Speech
http://www.school-clipart.com/school_clipart_images/happy_person_in_silhouette_a_woman_clapping_0515-0911-2801-0927_SMU.jpg
Aplikasi
   Dialog
       Pencarian ( bebas konteks )
           Antarmuka kueri basisdata
           Antarmuka kueri umum (mis. Wolfram, Siri)
       Tanya-Jawab ( ada konteks pembicaraan )
           Chatbot (ELIZA, @begobet)
   Transformasi
       Penterjemahan
       Peringkasan
   Klasifikasi
       Kategorisasi/Pelabelan Dokumen
       Analisis Sentimen
Aplikasi : Penerjemahan Otomatis
Aplikasi : Tanya Jawab
Ragam Tugas Pemrosesan Bahasa
   Pemrosesan Morfologi
       Mencari kata dasar (stemming/lematisasi)
   Identifikasi
       Menentukan batas kalimat
       Klasifikasi kata (Part-of-Speech Tagging)
       Mencari peranan kata dalam kalimat (Parsing, Semantic
        Role Labeling)
       Ekstraksi Informasi
        (Orang, Organisasi, Lokasi, Jabatan, Kejadian, Waktu, Hu
        bungan) ~ Named Entity Recognition
Teknik

      Heuristik (Kaidah)                Statistik

   Template/Pattern             Machine Learning
    Matching                     (lebih) Lambat
   Cepat                        (asumsi) semakin
   (umumnya relatif) sulit       banyak data semakin
    dikembangkan                  baik
Teknologi (python)
   NLTK (Natural Language Toolkit)
       http://www.nltk.org
   Whoosh (Text Indexing/Search)
       http://pypi.python.org/pypi/Whoosh/
       https://bitbucket.org/mchaput/whoosh/ (repo)
   Topia.Termextract (term/keyword extraction)
       http://pypi.python.org/pypi/topia.termextract/
       https://github.com/turian/topia.termextract (repo)
   Pebahasa
       http://github.com/pebbie/pebahasa (code repo)
       http://pebahasa.appspot.com (demo site)
NLTK

Natural Language Processing Toolkit
Deskripsi
   Koleksi Algoritma Pemrosesan Teks
       Lematisasi, WordNet
       Pemisahan Kalimat
       POS Tag
       Pemotongan Frasa
   Koleksi Dokumen Teks (Korpus) & Model Bahasa
       Berbagai bahasa
Referensi

               Natural Language Processing with
                Python (S. Bird, O’Reilly 2009)
                http://www.nltk.org/book
                 (CC BY-NC-ND 3.0)
Peluang berkontribusi
   Model & Korpus Bahasa Indonesia
   Penerjemahan Buku ke Bahasa Indonesia
Whoosh

Fast, Pure-python Fulltext Search
Deskripsi

Indexing                          Pencarian
   Input :                          Input :
       Kumpulan dokumen                 Kueri pencarian
        (unicode)                         (unicode)
   Output :                             Indeks Dokumen
       Indeks untuk
        mempercepat pencarian        Output :
   Komponen :                           Daftar dokumen yang
                                          relevan
       Tokenisasi (pemotongan)
       Struktur data indeks         Komponen :
        terbalik                         Pencocokan
                                          kata/segmen
                                         Pengurutan
Kode : import
from whoosh.index import create_in, open_dir
from whoosh.fields import *
from whoosh.qparser import QueryParser
Kode : Schema
schema = Schema(
 title=TEXT(stored=True), cat=TEXT(store
 d=True), path=TEXT(stored=True), rank=N
 UMERIC(stored=True, type=float), conten
 t=TEXT)




                    Parameter stored=True akan membuat
                    Field tersebut ditampilkan dalam hasil
                    Pencarian (result set)
Kode : Indexing
_ix = None
if not os.path.exists('indexdir'):
    os.mkdir('indexdir')
    _ix = create_in('indexdir', schema)
    w = _ix.writer()
    for root, dirnames, filenames in os.walk('data'):
        for filename in fnmatch.filter(filenames, '*.txt'):
             doc = os.path.join(root, filename)
             f = open(doc)
             text = re.sub("[x80-xff]", '', f.read())
            w.add_document(title=unicode(filename[:-
  4]), content=unicode(text, 'utf8'), cat=unicode('artikel'), pat
  h=unicode(doc))
             f.close()
    w.commit()
else:
    _ix = open_dir('indexdir')
Kode : Search
s = _ix.searcher()
while True:
    print "?",
    qs = raw_input().lower().strip()
    if qs=="exit":
        break
    q =
  QueryParser('content', _ix.schema).parse(u
  nicode(qs))
    r = s.search(q)
    for rr in r:
        print rr['title'], rr['path']
s.close()
topia.termextract

        Term extraction
Deskripsi
   Input : Teks (paragraf)
   Output : Daftar kata/frasa yang sering muncul
   Komponen :
       POS Tagger
       Rule-based Filter
       Menggunakan zope.interface
       Baru tersedia untuk Bahasa Inggris
Kode
from topia.termextract import extract
extractor = extract.TermExtractor()
print sorted( extractor( text ) )
Pebahasa

Layanan web pemrosesan teks Bahasa Indonesia
Deskripsi
   Kumpulan Algoritma NLP
       Pemenggalan suku kata
       deteksi batas kalimat
       Penentuan kelas kata (POS tag) berbasis kamus eksternal &
        HMM (Hidden Markov Model)
       Pemotongan kalimat (Chunking) berdasarkan kapitalisasi *
       Ekstraksi istilah (modifikasi dari topia.termextract) *
       Peringkasan sederhana *
       Ekstraksi informasi *
   Dibungkus menjadi layanan web
       Google AppEngine
       Bottlepy

*) belum ditambahkan ke repo
Demo

screenshot
Pemenggalan suku kata




         Aturan pemisahan digunakan untuk pengucapan
         (text to speech), bukan untuk stemming/mencari
         Kata dasar
POS Tag



                                                         NN : Kata benda
                                                         NNP : Proper Noun
                                                         MD : Modal
                                                         VBT : kata kerja transitif




                         Alfan Farizki Wicaksono, Ayu Purwarianti. HMM Based POS Tagger for Bahasa Indonesia.
          On Proceedings of 4th International MALINDO (Malay - Indonesian Language) Workshop. 2nd August 2010.
Term Extraction




Sumber artikel : Kompas.com
Peringkasan




Simple extractive summarization
Named Entity Recognition




   keterangan
   6 : posisi/jabatan
   1 : orang
   2 : organisasi
   7 : predikat (untuk relasi antar entitas)
   8 : abaikan saja
Bottle - GAE

  Tutorial tambahan
Bottle
   Web Microframework :
       hanya menyediakan URL routing dan templating (built-
        in, mako, jinja2)
       Hanya 1 file yang perlu diimpor (bottle.py)
       Berbasis decorator (@<nama decorator> sebelum definisi
        fungsi)
       Session ditangani oleh WSGIMiddleWare (beaker, gae-
        sessions)
   Mendukung berbagai jenis Web Server:
       WSGIref, CGI, FCGI
       Paste, CherryPy, Twisted, Tornado, Bjoern, ...
       GAE (Google App Engine)
Kode : app.yaml
handlers:
- url: /.*
  script: main.py
Kode : main.py

from bottle import *

from google.appengine.ext import webapp
from google.appengine.ext.webapp import util

import suku
...
util.run_wsgi_app(default_app())
Kode : main.py (URL routing)
@route('/')
                                      decorator
@view(‘word_entry’) # views/word_entry.tpl
def index():
    return { ‘apptitle’:’pebahasa‘ }

@post('/penggal')
def penggal():
    kata =
 request.forms.get('word', '').strip()
    fon = suku.pecah(kata)
    return { ‘asal’:kata, ‘hasil’: fon }
                 dict akan diubah menjadi JSON secara otomatis
Kode: views/word_entry.tpl
rebase akan menggunakan template lain (index.tpl) sebagai pembungkus
%rebase index apptitle=apptitle
<form method="POST" id="newcat"
 action="/penggal">
 <label for="word">Kata</label>
 <input type="text" name="word"
 id="word" size="30"/>
 <input type="submit"/>
</form>
                 variabel apptitle bisa diakses di index.tpl
Kode: views/index.tpl
<!DOCTYPE html>
<html>
 <head>     Menampilkan isi variabel apptitle (html akan di-escape)
     <title>{{apptitle}}</title>
 </head>
 <body>
     <div id="content">
          %include Template yang memanggil rebase akan
                       Diselipkan di sini
        </div>
 </body>
</html>
Terima kasih

Komentar , pertanyaan ?

More Related Content

What's hot

CFG dan PARSING - P 5 - Teknik Kompilasi
CFG dan PARSING - P 5 - Teknik KompilasiCFG dan PARSING - P 5 - Teknik Kompilasi
CFG dan PARSING - P 5 - Teknik Kompilasi
ahmad haidaroh
 
Distribusi probabilitas hipergeometrik
Distribusi probabilitas hipergeometrikDistribusi probabilitas hipergeometrik
Distribusi probabilitas hipergeometrik
wiwik1354
 
Jaringan Syaraf Tiruan (JST)
Jaringan Syaraf Tiruan (JST)Jaringan Syaraf Tiruan (JST)
Jaringan Syaraf Tiruan (JST)
Farichah Riha
 
kriptografi hill cipher
kriptografi hill cipherkriptografi hill cipher
kriptografi hill cipher
Adi Ginanjar Kusuma
 
Jaringan Syaraf Tiruan
Jaringan Syaraf TiruanJaringan Syaraf Tiruan
Jaringan Syaraf Tiruan
Mayasari Dewi
 
Fuzzy fungsi keanggotaan
Fuzzy fungsi keanggotaanFuzzy fungsi keanggotaan
Fuzzy fungsi keanggotaan
Roziq Bahtiar
 
Matematika Diskrit kombinatorial
Matematika Diskrit  kombinatorialMatematika Diskrit  kombinatorial
Matematika Diskrit kombinatorial
Siti Khotijah
 
linear programming metode simplex
linear programming metode simplexlinear programming metode simplex
linear programming metode simplex
Bambang Kristiono
 
Algoritma Pencarian String matching
Algoritma Pencarian String matching Algoritma Pencarian String matching
Algoritma Pencarian String matching
Kukuh Setiawan
 
Kuliah 2 penerapan matriks dalam ekonomi
Kuliah 2 penerapan matriks dalam ekonomiKuliah 2 penerapan matriks dalam ekonomi
Kuliah 2 penerapan matriks dalam ekonomi
Mukhrizal Effendi
 
Bab 01 logika mtk diskrit
Bab 01 logika mtk diskritBab 01 logika mtk diskrit
Bab 01 logika mtk diskrit
KarlFykr
 
Modul 8 - Jaringan Syaraf Tiruan (JST)
Modul 8 - Jaringan Syaraf Tiruan (JST)Modul 8 - Jaringan Syaraf Tiruan (JST)
Modul 8 - Jaringan Syaraf Tiruan (JST)
ahmad haidaroh
 
02.logika
02.logika02.logika
02.logika
Oggii Oggii
 
Elastisitas
ElastisitasElastisitas
Elastisitas
Grani Ramadhani
 
Program Linear dan Metode Simpleks
Program Linear dan Metode SimpleksProgram Linear dan Metode Simpleks
Program Linear dan Metode Simpleks
raaaka12
 
Bab 2 Fungsi ( Kalkulus 1 )
Bab 2 Fungsi ( Kalkulus 1 )Bab 2 Fungsi ( Kalkulus 1 )
Bab 2 Fungsi ( Kalkulus 1 )
Kelinci Coklat
 
Tugas 2 analisis rate of return ekonomi teknik irwan zulkifli_teknik elektro_...
Tugas 2 analisis rate of return ekonomi teknik irwan zulkifli_teknik elektro_...Tugas 2 analisis rate of return ekonomi teknik irwan zulkifli_teknik elektro_...
Tugas 2 analisis rate of return ekonomi teknik irwan zulkifli_teknik elektro_...
irwan zulkifli
 
Ruang Hasil kali Dalam ( Aljabar Linear Elementer )
Ruang Hasil kali Dalam ( Aljabar Linear Elementer )Ruang Hasil kali Dalam ( Aljabar Linear Elementer )
Ruang Hasil kali Dalam ( Aljabar Linear Elementer )
Kelinci Coklat
 
Keseimbangan 4 sektor
Keseimbangan 4 sektorKeseimbangan 4 sektor
Keseimbangan 4 sektor
Sudirman Jie
 

What's hot (20)

CFG dan PARSING - P 5 - Teknik Kompilasi
CFG dan PARSING - P 5 - Teknik KompilasiCFG dan PARSING - P 5 - Teknik Kompilasi
CFG dan PARSING - P 5 - Teknik Kompilasi
 
Distribusi probabilitas hipergeometrik
Distribusi probabilitas hipergeometrikDistribusi probabilitas hipergeometrik
Distribusi probabilitas hipergeometrik
 
Jaringan Syaraf Tiruan (JST)
Jaringan Syaraf Tiruan (JST)Jaringan Syaraf Tiruan (JST)
Jaringan Syaraf Tiruan (JST)
 
kriptografi hill cipher
kriptografi hill cipherkriptografi hill cipher
kriptografi hill cipher
 
Jaringan Syaraf Tiruan
Jaringan Syaraf TiruanJaringan Syaraf Tiruan
Jaringan Syaraf Tiruan
 
Fuzzy fungsi keanggotaan
Fuzzy fungsi keanggotaanFuzzy fungsi keanggotaan
Fuzzy fungsi keanggotaan
 
Matematika Diskrit kombinatorial
Matematika Diskrit  kombinatorialMatematika Diskrit  kombinatorial
Matematika Diskrit kombinatorial
 
linear programming metode simplex
linear programming metode simplexlinear programming metode simplex
linear programming metode simplex
 
Algoritma Pencarian String matching
Algoritma Pencarian String matching Algoritma Pencarian String matching
Algoritma Pencarian String matching
 
Kuliah 2 penerapan matriks dalam ekonomi
Kuliah 2 penerapan matriks dalam ekonomiKuliah 2 penerapan matriks dalam ekonomi
Kuliah 2 penerapan matriks dalam ekonomi
 
Bab 01 logika mtk diskrit
Bab 01 logika mtk diskritBab 01 logika mtk diskrit
Bab 01 logika mtk diskrit
 
Modul 8 - Jaringan Syaraf Tiruan (JST)
Modul 8 - Jaringan Syaraf Tiruan (JST)Modul 8 - Jaringan Syaraf Tiruan (JST)
Modul 8 - Jaringan Syaraf Tiruan (JST)
 
02.logika
02.logika02.logika
02.logika
 
Elastisitas
ElastisitasElastisitas
Elastisitas
 
Sorting ppt
Sorting ppt Sorting ppt
Sorting ppt
 
Program Linear dan Metode Simpleks
Program Linear dan Metode SimpleksProgram Linear dan Metode Simpleks
Program Linear dan Metode Simpleks
 
Bab 2 Fungsi ( Kalkulus 1 )
Bab 2 Fungsi ( Kalkulus 1 )Bab 2 Fungsi ( Kalkulus 1 )
Bab 2 Fungsi ( Kalkulus 1 )
 
Tugas 2 analisis rate of return ekonomi teknik irwan zulkifli_teknik elektro_...
Tugas 2 analisis rate of return ekonomi teknik irwan zulkifli_teknik elektro_...Tugas 2 analisis rate of return ekonomi teknik irwan zulkifli_teknik elektro_...
Tugas 2 analisis rate of return ekonomi teknik irwan zulkifli_teknik elektro_...
 
Ruang Hasil kali Dalam ( Aljabar Linear Elementer )
Ruang Hasil kali Dalam ( Aljabar Linear Elementer )Ruang Hasil kali Dalam ( Aljabar Linear Elementer )
Ruang Hasil kali Dalam ( Aljabar Linear Elementer )
 
Keseimbangan 4 sektor
Keseimbangan 4 sektorKeseimbangan 4 sektor
Keseimbangan 4 sektor
 

Similar to Python untuk Pemrosesan Teks Bahasa Indonesia

PRESENTASI DATA ANALYS.pptx
PRESENTASI DATA ANALYS.pptxPRESENTASI DATA ANALYS.pptx
PRESENTASI DATA ANALYS.pptx
EdiSum1
 
Algoritma - Penjelasan struktur data
Algoritma - Penjelasan struktur dataAlgoritma - Penjelasan struktur data
Algoritma - Penjelasan struktur data
Zombie Black
 
Webprograming
WebprogramingWebprograming
Webprogramingandreboys
 
W E B P R O G R A M M I N G
W E B  P R O G R A M M I N GW E B  P R O G R A M M I N G
W E B P R O G R A M M I N G
Windy Hefitrianti
 
Web programming
Web programmingWeb programming
Web programming
Windy Hefitrianti
 
Pengenalan OOP dan Framework Code Igniter
Pengenalan OOP dan Framework Code IgniterPengenalan OOP dan Framework Code Igniter
Pengenalan OOP dan Framework Code Igniter
Rudy Prasetya
 
Php coder
Php coderPhp coder
Php coder
Sejahtera Affif
 
Modul php 4
Modul php 4Modul php 4
Modul php 4
Sejahtera Affif
 
Modul php 4
Modul php 4Modul php 4
Modul php 4
syaiful091213
 
nota
notanota
10012333 tugas1 db_web
10012333 tugas1 db_web10012333 tugas1 db_web
10012333 tugas1 db_web
trondoladitcesar
 
Presentasi sidang dream searchengine
Presentasi sidang dream searchenginePresentasi sidang dream searchengine
Presentasi sidang dream searchengineMeisya Fitri
 
Text Preprocessing pemrosesan bahasa alami.pptx
Text Preprocessing pemrosesan bahasa alami.pptxText Preprocessing pemrosesan bahasa alami.pptx
Text Preprocessing pemrosesan bahasa alami.pptx
SitiKhomsah7
 
Proyek+membangun+cms+tanpa+oop
Proyek+membangun+cms+tanpa+oopProyek+membangun+cms+tanpa+oop
Proyek+membangun+cms+tanpa+oop
Telkomsat
 
Macam software
Macam softwareMacam software
Software Aplikasi Dasar dan Software Khusus
Software Aplikasi Dasar dan Software KhususSoftware Aplikasi Dasar dan Software Khusus
Software Aplikasi Dasar dan Software Khusus
Sinath Sabado
 
0-Pengantar Pemrograman lanjut.pptx
0-Pengantar Pemrograman lanjut.pptx0-Pengantar Pemrograman lanjut.pptx
0-Pengantar Pemrograman lanjut.pptx
Bom Bom
 
Basic Pemrograman.pptx
Basic Pemrograman.pptxBasic Pemrograman.pptx
Basic Pemrograman.pptx
NandoApri2
 
Tugas rekweb 2 1212511560 m.shafwan al farisy
Tugas rekweb 2 1212511560 m.shafwan al farisyTugas rekweb 2 1212511560 m.shafwan al farisy
Tugas rekweb 2 1212511560 m.shafwan al farisy
PT. Visionet Internasional
 

Similar to Python untuk Pemrosesan Teks Bahasa Indonesia (20)

PRESENTASI DATA ANALYS.pptx
PRESENTASI DATA ANALYS.pptxPRESENTASI DATA ANALYS.pptx
PRESENTASI DATA ANALYS.pptx
 
Algoritma - Penjelasan struktur data
Algoritma - Penjelasan struktur dataAlgoritma - Penjelasan struktur data
Algoritma - Penjelasan struktur data
 
Webprograming
WebprogramingWebprograming
Webprograming
 
W E B P R O G R A M M I N G
W E B  P R O G R A M M I N GW E B  P R O G R A M M I N G
W E B P R O G R A M M I N G
 
Web programming
Web programmingWeb programming
Web programming
 
Pengenalan OOP dan Framework Code Igniter
Pengenalan OOP dan Framework Code IgniterPengenalan OOP dan Framework Code Igniter
Pengenalan OOP dan Framework Code Igniter
 
Php coder
Php coderPhp coder
Php coder
 
Modul php 4
Modul php 4Modul php 4
Modul php 4
 
Modul php 4
Modul php 4Modul php 4
Modul php 4
 
Daskom 4
Daskom 4Daskom 4
Daskom 4
 
nota
notanota
nota
 
10012333 tugas1 db_web
10012333 tugas1 db_web10012333 tugas1 db_web
10012333 tugas1 db_web
 
Presentasi sidang dream searchengine
Presentasi sidang dream searchenginePresentasi sidang dream searchengine
Presentasi sidang dream searchengine
 
Text Preprocessing pemrosesan bahasa alami.pptx
Text Preprocessing pemrosesan bahasa alami.pptxText Preprocessing pemrosesan bahasa alami.pptx
Text Preprocessing pemrosesan bahasa alami.pptx
 
Proyek+membangun+cms+tanpa+oop
Proyek+membangun+cms+tanpa+oopProyek+membangun+cms+tanpa+oop
Proyek+membangun+cms+tanpa+oop
 
Macam software
Macam softwareMacam software
Macam software
 
Software Aplikasi Dasar dan Software Khusus
Software Aplikasi Dasar dan Software KhususSoftware Aplikasi Dasar dan Software Khusus
Software Aplikasi Dasar dan Software Khusus
 
0-Pengantar Pemrograman lanjut.pptx
0-Pengantar Pemrograman lanjut.pptx0-Pengantar Pemrograman lanjut.pptx
0-Pengantar Pemrograman lanjut.pptx
 
Basic Pemrograman.pptx
Basic Pemrograman.pptxBasic Pemrograman.pptx
Basic Pemrograman.pptx
 
Tugas rekweb 2 1212511560 m.shafwan al farisy
Tugas rekweb 2 1212511560 m.shafwan al farisyTugas rekweb 2 1212511560 m.shafwan al farisy
Tugas rekweb 2 1212511560 m.shafwan al farisy
 

Python untuk Pemrosesan Teks Bahasa Indonesia

  • 1. Meetup komunitas pengguna python Kampus ITB, 28 Januari 2012 Python untuk Pemrosesan Teks Bahasa Indonesia Peb Ruswono Aryan http://about.me/peb
  • 2. Bahasa dan Media : Tulisan Teks gambar Optical Character Recognition, Handwriting Recognition Image source: http://i717.photobucket.com/albums/ww172/AmandaNichelle/Person.png http://www.school-clipart.com/school_clipart_images/happy_person_in_silhouette_a_woman_clapping_0515-0911-2801-0927_SMU.jpg
  • 3. Bahasa dan Media : Lisan Teks Suara Natural Language Processing (text), Automatic Speech Recognition, Image source: http://i717.photobucket.com/albums/ww172/AmandaNichelle/Person.png Text-to-Speech http://www.school-clipart.com/school_clipart_images/happy_person_in_silhouette_a_woman_clapping_0515-0911-2801-0927_SMU.jpg
  • 4. Aplikasi  Dialog  Pencarian ( bebas konteks )  Antarmuka kueri basisdata  Antarmuka kueri umum (mis. Wolfram, Siri)  Tanya-Jawab ( ada konteks pembicaraan )  Chatbot (ELIZA, @begobet)  Transformasi  Penterjemahan  Peringkasan  Klasifikasi  Kategorisasi/Pelabelan Dokumen  Analisis Sentimen
  • 7. Ragam Tugas Pemrosesan Bahasa  Pemrosesan Morfologi  Mencari kata dasar (stemming/lematisasi)  Identifikasi  Menentukan batas kalimat  Klasifikasi kata (Part-of-Speech Tagging)  Mencari peranan kata dalam kalimat (Parsing, Semantic Role Labeling)  Ekstraksi Informasi (Orang, Organisasi, Lokasi, Jabatan, Kejadian, Waktu, Hu bungan) ~ Named Entity Recognition
  • 8. Teknik Heuristik (Kaidah) Statistik  Template/Pattern  Machine Learning Matching  (lebih) Lambat  Cepat  (asumsi) semakin  (umumnya relatif) sulit banyak data semakin dikembangkan baik
  • 9. Teknologi (python)  NLTK (Natural Language Toolkit)  http://www.nltk.org  Whoosh (Text Indexing/Search)  http://pypi.python.org/pypi/Whoosh/  https://bitbucket.org/mchaput/whoosh/ (repo)  Topia.Termextract (term/keyword extraction)  http://pypi.python.org/pypi/topia.termextract/  https://github.com/turian/topia.termextract (repo)  Pebahasa  http://github.com/pebbie/pebahasa (code repo)  http://pebahasa.appspot.com (demo site)
  • 11. Deskripsi  Koleksi Algoritma Pemrosesan Teks  Lematisasi, WordNet  Pemisahan Kalimat  POS Tag  Pemotongan Frasa  Koleksi Dokumen Teks (Korpus) & Model Bahasa  Berbagai bahasa
  • 12. Referensi  Natural Language Processing with Python (S. Bird, O’Reilly 2009) http://www.nltk.org/book (CC BY-NC-ND 3.0)
  • 13. Peluang berkontribusi  Model & Korpus Bahasa Indonesia  Penerjemahan Buku ke Bahasa Indonesia
  • 15. Deskripsi Indexing Pencarian  Input :  Input :  Kumpulan dokumen  Kueri pencarian (unicode) (unicode)  Output :  Indeks Dokumen  Indeks untuk mempercepat pencarian  Output :  Komponen :  Daftar dokumen yang relevan  Tokenisasi (pemotongan)  Struktur data indeks  Komponen : terbalik  Pencocokan kata/segmen  Pengurutan
  • 16. Kode : import from whoosh.index import create_in, open_dir from whoosh.fields import * from whoosh.qparser import QueryParser
  • 17. Kode : Schema schema = Schema( title=TEXT(stored=True), cat=TEXT(store d=True), path=TEXT(stored=True), rank=N UMERIC(stored=True, type=float), conten t=TEXT) Parameter stored=True akan membuat Field tersebut ditampilkan dalam hasil Pencarian (result set)
  • 18. Kode : Indexing _ix = None if not os.path.exists('indexdir'): os.mkdir('indexdir') _ix = create_in('indexdir', schema) w = _ix.writer() for root, dirnames, filenames in os.walk('data'): for filename in fnmatch.filter(filenames, '*.txt'): doc = os.path.join(root, filename) f = open(doc) text = re.sub("[x80-xff]", '', f.read()) w.add_document(title=unicode(filename[:- 4]), content=unicode(text, 'utf8'), cat=unicode('artikel'), pat h=unicode(doc)) f.close() w.commit() else: _ix = open_dir('indexdir')
  • 19. Kode : Search s = _ix.searcher() while True: print "?", qs = raw_input().lower().strip() if qs=="exit": break q = QueryParser('content', _ix.schema).parse(u nicode(qs)) r = s.search(q) for rr in r: print rr['title'], rr['path'] s.close()
  • 20. topia.termextract Term extraction
  • 21. Deskripsi  Input : Teks (paragraf)  Output : Daftar kata/frasa yang sering muncul  Komponen :  POS Tagger  Rule-based Filter  Menggunakan zope.interface  Baru tersedia untuk Bahasa Inggris
  • 22. Kode from topia.termextract import extract extractor = extract.TermExtractor() print sorted( extractor( text ) )
  • 23. Pebahasa Layanan web pemrosesan teks Bahasa Indonesia
  • 24. Deskripsi  Kumpulan Algoritma NLP  Pemenggalan suku kata  deteksi batas kalimat  Penentuan kelas kata (POS tag) berbasis kamus eksternal & HMM (Hidden Markov Model)  Pemotongan kalimat (Chunking) berdasarkan kapitalisasi *  Ekstraksi istilah (modifikasi dari topia.termextract) *  Peringkasan sederhana *  Ekstraksi informasi *  Dibungkus menjadi layanan web  Google AppEngine  Bottlepy *) belum ditambahkan ke repo
  • 26. Pemenggalan suku kata Aturan pemisahan digunakan untuk pengucapan (text to speech), bukan untuk stemming/mencari Kata dasar
  • 27. POS Tag NN : Kata benda NNP : Proper Noun MD : Modal VBT : kata kerja transitif Alfan Farizki Wicaksono, Ayu Purwarianti. HMM Based POS Tagger for Bahasa Indonesia. On Proceedings of 4th International MALINDO (Malay - Indonesian Language) Workshop. 2nd August 2010.
  • 30. Named Entity Recognition keterangan 6 : posisi/jabatan 1 : orang 2 : organisasi 7 : predikat (untuk relasi antar entitas) 8 : abaikan saja
  • 31. Bottle - GAE Tutorial tambahan
  • 32. Bottle  Web Microframework :  hanya menyediakan URL routing dan templating (built- in, mako, jinja2)  Hanya 1 file yang perlu diimpor (bottle.py)  Berbasis decorator (@<nama decorator> sebelum definisi fungsi)  Session ditangani oleh WSGIMiddleWare (beaker, gae- sessions)  Mendukung berbagai jenis Web Server:  WSGIref, CGI, FCGI  Paste, CherryPy, Twisted, Tornado, Bjoern, ...  GAE (Google App Engine)
  • 33. Kode : app.yaml handlers: - url: /.* script: main.py
  • 34. Kode : main.py from bottle import * from google.appengine.ext import webapp from google.appengine.ext.webapp import util import suku ... util.run_wsgi_app(default_app())
  • 35. Kode : main.py (URL routing) @route('/') decorator @view(‘word_entry’) # views/word_entry.tpl def index(): return { ‘apptitle’:’pebahasa‘ } @post('/penggal') def penggal(): kata = request.forms.get('word', '').strip() fon = suku.pecah(kata) return { ‘asal’:kata, ‘hasil’: fon } dict akan diubah menjadi JSON secara otomatis
  • 36. Kode: views/word_entry.tpl rebase akan menggunakan template lain (index.tpl) sebagai pembungkus %rebase index apptitle=apptitle <form method="POST" id="newcat" action="/penggal"> <label for="word">Kata</label> <input type="text" name="word" id="word" size="30"/> <input type="submit"/> </form> variabel apptitle bisa diakses di index.tpl
  • 37. Kode: views/index.tpl <!DOCTYPE html> <html> <head> Menampilkan isi variabel apptitle (html akan di-escape) <title>{{apptitle}}</title> </head> <body> <div id="content"> %include Template yang memanggil rebase akan Diselipkan di sini </div> </body> </html>
  • 38. Terima kasih Komentar , pertanyaan ?