SlideShare uma empresa Scribd logo
1 de 38
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 ?

Mais conteúdo relacionado

Mais procurados

Teori bahasa formal dan Otomata
Teori bahasa formal dan OtomataTeori bahasa formal dan Otomata
Teori bahasa formal dan OtomataRisal Fahmi
 
Pertemuan 2 - Organisasi dan Arsitektur Komputer.ppt
Pertemuan 2 - Organisasi dan Arsitektur Komputer.pptPertemuan 2 - Organisasi dan Arsitektur Komputer.ppt
Pertemuan 2 - Organisasi dan Arsitektur Komputer.pptagro6
 
Materi Struktur Data Tree
Materi Struktur Data TreeMateri Struktur Data Tree
Materi Struktur Data TreeMeta N
 
Teori bahasa-dan-otomata
Teori bahasa-dan-otomataTeori bahasa-dan-otomata
Teori bahasa-dan-otomataBanta Cut
 
Arsitektur Komputer 1.ppt
Arsitektur Komputer 1.pptArsitektur Komputer 1.ppt
Arsitektur Komputer 1.pptAhmadNaswin
 
Introduction to CLIPS Expert System
Introduction to CLIPS Expert SystemIntroduction to CLIPS Expert System
Introduction to CLIPS Expert SystemMotaz Saad
 
Algoritma dan Struktur Data - Sequential Search
Algoritma dan Struktur Data - Sequential SearchAlgoritma dan Struktur Data - Sequential Search
Algoritma dan Struktur Data - Sequential SearchKuliahKita
 
BAB 2_TIPE DATA, VARIABEL, DAN OPERATOR (1) (1).pptx
BAB 2_TIPE DATA, VARIABEL, DAN OPERATOR (1) (1).pptxBAB 2_TIPE DATA, VARIABEL, DAN OPERATOR (1) (1).pptx
BAB 2_TIPE DATA, VARIABEL, DAN OPERATOR (1) (1).pptxnyomans1
 
Tugas mandiri struktur data
Tugas mandiri struktur dataTugas mandiri struktur data
Tugas mandiri struktur dataAsep Jaenudin
 
Konsep Data Mining
Konsep Data MiningKonsep Data Mining
Konsep Data Miningdedidarwis
 
Contoh Soal Huffman Code
Contoh Soal Huffman CodeContoh Soal Huffman Code
Contoh Soal Huffman CodeAlbertus H.
 
Modul 4 representasi pengetahuan
Modul 4   representasi pengetahuanModul 4   representasi pengetahuan
Modul 4 representasi pengetahuanahmad haidaroh
 
Kuis Etika Profesi Teknologi Informasi dan Komunikasi
Kuis Etika Profesi Teknologi Informasi dan KomunikasiKuis Etika Profesi Teknologi Informasi dan Komunikasi
Kuis Etika Profesi Teknologi Informasi dan KomunikasiDwi Mardianti
 
Analisa dan Perancangan Sistem Informasi
Analisa dan Perancangan Sistem InformasiAnalisa dan Perancangan Sistem Informasi
Analisa dan Perancangan Sistem InformasiFarichah Riha
 
Materi : Struktur Data (1 Pengantar)
Materi : Struktur Data (1 Pengantar)Materi : Struktur Data (1 Pengantar)
Materi : Struktur Data (1 Pengantar)eka pandu cynthia
 
Perkuliahan 1 organisasi dan arsitektur komputer
Perkuliahan 1   organisasi dan arsitektur komputerPerkuliahan 1   organisasi dan arsitektur komputer
Perkuliahan 1 organisasi dan arsitektur komputerRakhmi Khalida, M.M.S.I
 
M05 metode komputer forensik
M05  metode komputer forensikM05  metode komputer forensik
M05 metode komputer forensikHafiz312
 
Kriptograf - Algoritma Kriptografi Klasik (bagian 1)
Kriptograf - Algoritma Kriptografi Klasik (bagian 1)Kriptograf - Algoritma Kriptografi Klasik (bagian 1)
Kriptograf - Algoritma Kriptografi Klasik (bagian 1)KuliahKita
 

Mais procurados (20)

Teori bahasa formal dan Otomata
Teori bahasa formal dan OtomataTeori bahasa formal dan Otomata
Teori bahasa formal dan Otomata
 
Pertemuan 2 - Organisasi dan Arsitektur Komputer.ppt
Pertemuan 2 - Organisasi dan Arsitektur Komputer.pptPertemuan 2 - Organisasi dan Arsitektur Komputer.ppt
Pertemuan 2 - Organisasi dan Arsitektur Komputer.ppt
 
Materi Struktur Data Tree
Materi Struktur Data TreeMateri Struktur Data Tree
Materi Struktur Data Tree
 
Teori bahasa-dan-otomata
Teori bahasa-dan-otomataTeori bahasa-dan-otomata
Teori bahasa-dan-otomata
 
Arsitektur Komputer 1.ppt
Arsitektur Komputer 1.pptArsitektur Komputer 1.ppt
Arsitektur Komputer 1.ppt
 
Introduction to CLIPS Expert System
Introduction to CLIPS Expert SystemIntroduction to CLIPS Expert System
Introduction to CLIPS Expert System
 
Algoritma dan Struktur Data - Sequential Search
Algoritma dan Struktur Data - Sequential SearchAlgoritma dan Struktur Data - Sequential Search
Algoritma dan Struktur Data - Sequential Search
 
2 ruang keadaan
2 ruang keadaan2 ruang keadaan
2 ruang keadaan
 
BAB 2_TIPE DATA, VARIABEL, DAN OPERATOR (1) (1).pptx
BAB 2_TIPE DATA, VARIABEL, DAN OPERATOR (1) (1).pptxBAB 2_TIPE DATA, VARIABEL, DAN OPERATOR (1) (1).pptx
BAB 2_TIPE DATA, VARIABEL, DAN OPERATOR (1) (1).pptx
 
materi multimedia
materi multimedia materi multimedia
materi multimedia
 
Tugas mandiri struktur data
Tugas mandiri struktur dataTugas mandiri struktur data
Tugas mandiri struktur data
 
Konsep Data Mining
Konsep Data MiningKonsep Data Mining
Konsep Data Mining
 
Contoh Soal Huffman Code
Contoh Soal Huffman CodeContoh Soal Huffman Code
Contoh Soal Huffman Code
 
Modul 4 representasi pengetahuan
Modul 4   representasi pengetahuanModul 4   representasi pengetahuan
Modul 4 representasi pengetahuan
 
Kuis Etika Profesi Teknologi Informasi dan Komunikasi
Kuis Etika Profesi Teknologi Informasi dan KomunikasiKuis Etika Profesi Teknologi Informasi dan Komunikasi
Kuis Etika Profesi Teknologi Informasi dan Komunikasi
 
Analisa dan Perancangan Sistem Informasi
Analisa dan Perancangan Sistem InformasiAnalisa dan Perancangan Sistem Informasi
Analisa dan Perancangan Sistem Informasi
 
Materi : Struktur Data (1 Pengantar)
Materi : Struktur Data (1 Pengantar)Materi : Struktur Data (1 Pengantar)
Materi : Struktur Data (1 Pengantar)
 
Perkuliahan 1 organisasi dan arsitektur komputer
Perkuliahan 1   organisasi dan arsitektur komputerPerkuliahan 1   organisasi dan arsitektur komputer
Perkuliahan 1 organisasi dan arsitektur komputer
 
M05 metode komputer forensik
M05  metode komputer forensikM05  metode komputer forensik
M05 metode komputer forensik
 
Kriptograf - Algoritma Kriptografi Klasik (bagian 1)
Kriptograf - Algoritma Kriptografi Klasik (bagian 1)Kriptograf - Algoritma Kriptografi Klasik (bagian 1)
Kriptograf - Algoritma Kriptografi Klasik (bagian 1)
 

Semelhante a 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
 

Semelhante a 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
 
Webprograming
WebprogramingWebprograming
Webprograming
 
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
 
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 ?