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

6 Materi Kuliah Normalisasi Tabel Database
6 Materi Kuliah Normalisasi Tabel Database6 Materi Kuliah Normalisasi Tabel Database
6 Materi Kuliah Normalisasi Tabel DatabaseSimon Patabang
 
Kamus data (data dictionary) - (Bambang Sugianto - Politeknik Sawunggalih Aji...
Kamus data (data dictionary) - (Bambang Sugianto - Politeknik Sawunggalih Aji...Kamus data (data dictionary) - (Bambang Sugianto - Politeknik Sawunggalih Aji...
Kamus data (data dictionary) - (Bambang Sugianto - Politeknik Sawunggalih Aji...Bambang Sugianto
 
Proses fp growth modul
Proses fp growth modulProses fp growth modul
Proses fp growth modulIsty Hara
 
Rpl 10-perancangan user interface
Rpl 10-perancangan user interfaceRpl 10-perancangan user interface
Rpl 10-perancangan user interfacef' yagami
 
Evolusi Antarmuka Komputer
Evolusi Antarmuka KomputerEvolusi Antarmuka Komputer
Evolusi Antarmuka KomputerAndhi Pratama
 
Kecerdasan Buatan
Kecerdasan BuatanKecerdasan Buatan
Kecerdasan Buatananis_mh
 
Laporan praktikum modul 5 (normalisasi)
Laporan praktikum modul 5 (normalisasi)Laporan praktikum modul 5 (normalisasi)
Laporan praktikum modul 5 (normalisasi)Devi Apriansyah
 
Interaksi Manusia Dan Komputer 8
Interaksi Manusia Dan Komputer 8Interaksi Manusia Dan Komputer 8
Interaksi Manusia Dan Komputer 8Hide Maru
 
Tugas tba kelompok 1 kelas b
Tugas tba kelompok 1 kelas bTugas tba kelompok 1 kelas b
Tugas tba kelompok 1 kelas bRobbie AkaChopa
 
Statistika parametrik_teknik analisis komparasi (uji-t)
Statistika parametrik_teknik analisis komparasi (uji-t)Statistika parametrik_teknik analisis komparasi (uji-t)
Statistika parametrik_teknik analisis komparasi (uji-t)M. Jainuri, S.Pd., M.Pd
 
Pertemuan 5 Membangun Datawarehouse
Pertemuan 5 Membangun DatawarehousePertemuan 5 Membangun Datawarehouse
Pertemuan 5 Membangun DatawarehouseEndang Retnoningsih
 
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 Kompilasiahmad haidaroh
 
Presentasi Pembuatan Website E-Commerce
Presentasi Pembuatan Website E-CommercePresentasi Pembuatan Website E-Commerce
Presentasi Pembuatan Website E-CommerceShofura Kamal
 

What's hot (20)

6 Materi Kuliah Normalisasi Tabel Database
6 Materi Kuliah Normalisasi Tabel Database6 Materi Kuliah Normalisasi Tabel Database
6 Materi Kuliah Normalisasi Tabel Database
 
Kamus data (data dictionary) - (Bambang Sugianto - Politeknik Sawunggalih Aji...
Kamus data (data dictionary) - (Bambang Sugianto - Politeknik Sawunggalih Aji...Kamus data (data dictionary) - (Bambang Sugianto - Politeknik Sawunggalih Aji...
Kamus data (data dictionary) - (Bambang Sugianto - Politeknik Sawunggalih Aji...
 
Proses fp growth modul
Proses fp growth modulProses fp growth modul
Proses fp growth modul
 
klasifikasi-komputer
klasifikasi-komputerklasifikasi-komputer
klasifikasi-komputer
 
Rpl 10-perancangan user interface
Rpl 10-perancangan user interfaceRpl 10-perancangan user interface
Rpl 10-perancangan user interface
 
Evolusi Antarmuka Komputer
Evolusi Antarmuka KomputerEvolusi Antarmuka Komputer
Evolusi Antarmuka Komputer
 
Pertemuan 1 Sistem Basis Data.pptx
Pertemuan 1 Sistem Basis Data.pptxPertemuan 1 Sistem Basis Data.pptx
Pertemuan 1 Sistem Basis Data.pptx
 
Kecerdasan Buatan
Kecerdasan BuatanKecerdasan Buatan
Kecerdasan Buatan
 
Laporan praktikum modul 5 (normalisasi)
Laporan praktikum modul 5 (normalisasi)Laporan praktikum modul 5 (normalisasi)
Laporan praktikum modul 5 (normalisasi)
 
Pertemuan 5 Perencanaan Testing
Pertemuan 5 Perencanaan TestingPertemuan 5 Perencanaan Testing
Pertemuan 5 Perencanaan Testing
 
Interaksi Manusia Dan Komputer 8
Interaksi Manusia Dan Komputer 8Interaksi Manusia Dan Komputer 8
Interaksi Manusia Dan Komputer 8
 
Tugas tba kelompok 1 kelas b
Tugas tba kelompok 1 kelas bTugas tba kelompok 1 kelas b
Tugas tba kelompok 1 kelas b
 
Statistika parametrik_teknik analisis komparasi (uji-t)
Statistika parametrik_teknik analisis komparasi (uji-t)Statistika parametrik_teknik analisis komparasi (uji-t)
Statistika parametrik_teknik analisis komparasi (uji-t)
 
Erp pertemuan-1
Erp pertemuan-1Erp pertemuan-1
Erp pertemuan-1
 
Pertemuan 5 Membangun Datawarehouse
Pertemuan 5 Membangun DatawarehousePertemuan 5 Membangun Datawarehouse
Pertemuan 5 Membangun Datawarehouse
 
Pertemuan 11 Kualitas Data
Pertemuan 11 Kualitas DataPertemuan 11 Kualitas Data
Pertemuan 11 Kualitas Data
 
PKM KC Mevici Dianresti
PKM KC Mevici Dianresti PKM KC Mevici Dianresti
PKM KC Mevici Dianresti
 
Pengenalan Dasar Web
Pengenalan Dasar WebPengenalan Dasar Web
Pengenalan Dasar Web
 
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
 
Presentasi Pembuatan Website E-Commerce
Presentasi Pembuatan Website E-CommercePresentasi Pembuatan Website E-Commerce
Presentasi Pembuatan Website E-Commerce
 

Similar to Python untuk Pemrosesan Teks Bahasa Indonesia

PRESENTASI DATA ANALYS.pptx
PRESENTASI DATA ANALYS.pptxPRESENTASI DATA ANALYS.pptx
PRESENTASI DATA ANALYS.pptxEdiSum1
 
Algoritma - Penjelasan struktur data
Algoritma - Penjelasan struktur dataAlgoritma - Penjelasan struktur data
Algoritma - Penjelasan struktur dataZombie Black
 
Webprograming
WebprogramingWebprograming
Webprogramingandreboys
 
Pengenalan OOP dan Framework Code Igniter
Pengenalan OOP dan Framework Code IgniterPengenalan OOP dan Framework Code Igniter
Pengenalan OOP dan Framework Code IgniterRudy Prasetya
 
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.pptxSitiKhomsah7
 
Proyek+membangun+cms+tanpa+oop
Proyek+membangun+cms+tanpa+oopProyek+membangun+cms+tanpa+oop
Proyek+membangun+cms+tanpa+oopTelkomsat
 
Software Aplikasi Dasar dan Software Khusus
Software Aplikasi Dasar dan Software KhususSoftware Aplikasi Dasar dan Software Khusus
Software Aplikasi Dasar dan Software KhususSinath Sabado
 
0-Pengantar Pemrograman lanjut.pptx
0-Pengantar Pemrograman lanjut.pptx0-Pengantar Pemrograman lanjut.pptx
0-Pengantar Pemrograman lanjut.pptxBom Bom
 
Basic Pemrograman.pptx
Basic Pemrograman.pptxBasic Pemrograman.pptx
Basic Pemrograman.pptxNandoApri2
 

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
 
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
 
Webprograming
WebprogramingWebprograming
Webprograming
 
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
 
Software Aplikasi Dasar dan Software Khusus
Software Aplikasi Dasar dan Software KhususSoftware Aplikasi Dasar dan Software Khusus
Software Aplikasi Dasar dan Software Khusus
 
Macam software
Macam softwareMacam software
Macam software
 
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 ?