SlideShare ist ein Scribd-Unternehmen logo
1 von 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 ?

Weitere ähnliche Inhalte

Was ist angesagt?

Data mining 2 exploratory data analysis
Data mining 2   exploratory data analysisData mining 2   exploratory data analysis
Data mining 2 exploratory data analysisIrwansyahSaputra1
 
Contoh daftar judul skripsi teknik informatika
Contoh daftar judul skripsi teknik informatikaContoh daftar judul skripsi teknik informatika
Contoh daftar judul skripsi teknik informatikaRahmat Hidayatullah
 
Analisis tabel-kontingensi
Analisis tabel-kontingensiAnalisis tabel-kontingensi
Analisis tabel-kontingensiDwi Mardiani
 
Tabel Nilai Kritis Distribusi T
Tabel Nilai Kritis Distribusi TTabel Nilai Kritis Distribusi T
Tabel Nilai Kritis Distribusi TTrisnadi Wijaya
 
Data mining 8 estimasi linear regression
Data mining 8   estimasi linear regressionData mining 8   estimasi linear regression
Data mining 8 estimasi linear regressionIrwansyahSaputra1
 
Tugas Sistem Informasi Manajemen Implementasi Sistem Informasi Manajemen PT M...
Tugas Sistem Informasi Manajemen Implementasi Sistem Informasi Manajemen PT M...Tugas Sistem Informasi Manajemen Implementasi Sistem Informasi Manajemen PT M...
Tugas Sistem Informasi Manajemen Implementasi Sistem Informasi Manajemen PT M...NurNopitaSari
 
Matematika Diskrit - 06 relasi dan fungsi - 05
Matematika Diskrit - 06 relasi dan fungsi - 05Matematika Diskrit - 06 relasi dan fungsi - 05
Matematika Diskrit - 06 relasi dan fungsi - 05KuliahKita
 
Pertemuan 9 Representasi Pengetahuan
Pertemuan 9 Representasi PengetahuanPertemuan 9 Representasi Pengetahuan
Pertemuan 9 Representasi PengetahuanEndang Retnoningsih
 
manajemen risiko (legal Risk & risk operational
 manajemen risiko (legal Risk & risk operational manajemen risiko (legal Risk & risk operational
manajemen risiko (legal Risk & risk operationalFaskho Irwan
 
01_PENGANTAR DATA DATA SCIENCE.pptx
01_PENGANTAR DATA DATA SCIENCE.pptx01_PENGANTAR DATA DATA SCIENCE.pptx
01_PENGANTAR DATA DATA SCIENCE.pptxmelrideswina
 
keputusan dalam keadaan risiko
keputusan dalam keadaan risikokeputusan dalam keadaan risiko
keputusan dalam keadaan risikoAbu Tholib
 
uji hipotesis satu rata – rata bagian 2
uji hipotesis satu rata – rata bagian 2uji hipotesis satu rata – rata bagian 2
uji hipotesis satu rata – rata bagian 2Ratih Ramadhani
 
STATISTIKA-Regresi dan korelasi
STATISTIKA-Regresi dan korelasiSTATISTIKA-Regresi dan korelasi
STATISTIKA-Regresi dan korelasiYousuf Kurniawan
 
Biaya Akuisisi, Maintenance, Depresiasi (Accounting For Non Accountant)
Biaya Akuisisi, Maintenance, Depresiasi (Accounting For Non Accountant)Biaya Akuisisi, Maintenance, Depresiasi (Accounting For Non Accountant)
Biaya Akuisisi, Maintenance, Depresiasi (Accounting For Non Accountant)Mitha Viani
 
Sim jawaban semester 4
Sim jawaban semester 4Sim jawaban semester 4
Sim jawaban semester 4Apriani Rahayu
 
Real Case of Pertamina - Customer Relationship Management Review
Real Case of Pertamina - Customer Relationship Management ReviewReal Case of Pertamina - Customer Relationship Management Review
Real Case of Pertamina - Customer Relationship Management ReviewChristofer Felix
 
Perkembangan tentang ifrs
Perkembangan tentang ifrsPerkembangan tentang ifrs
Perkembangan tentang ifrskiki_ariani
 

Was ist angesagt? (20)

Data mining 2 exploratory data analysis
Data mining 2   exploratory data analysisData mining 2   exploratory data analysis
Data mining 2 exploratory data analysis
 
Contoh daftar judul skripsi teknik informatika
Contoh daftar judul skripsi teknik informatikaContoh daftar judul skripsi teknik informatika
Contoh daftar judul skripsi teknik informatika
 
Konsep dasar probabilitas
Konsep dasar probabilitasKonsep dasar probabilitas
Konsep dasar probabilitas
 
Analisis tabel-kontingensi
Analisis tabel-kontingensiAnalisis tabel-kontingensi
Analisis tabel-kontingensi
 
Tabel Nilai Kritis Distribusi T
Tabel Nilai Kritis Distribusi TTabel Nilai Kritis Distribusi T
Tabel Nilai Kritis Distribusi T
 
Presentasi likuiditas
Presentasi likuiditasPresentasi likuiditas
Presentasi likuiditas
 
Data mining 8 estimasi linear regression
Data mining 8   estimasi linear regressionData mining 8   estimasi linear regression
Data mining 8 estimasi linear regression
 
Tugas Sistem Informasi Manajemen Implementasi Sistem Informasi Manajemen PT M...
Tugas Sistem Informasi Manajemen Implementasi Sistem Informasi Manajemen PT M...Tugas Sistem Informasi Manajemen Implementasi Sistem Informasi Manajemen PT M...
Tugas Sistem Informasi Manajemen Implementasi Sistem Informasi Manajemen PT M...
 
Matematika Diskrit - 06 relasi dan fungsi - 05
Matematika Diskrit - 06 relasi dan fungsi - 05Matematika Diskrit - 06 relasi dan fungsi - 05
Matematika Diskrit - 06 relasi dan fungsi - 05
 
ANALISIS LAPORAN KEUANGAN
ANALISIS LAPORAN KEUANGANANALISIS LAPORAN KEUANGAN
ANALISIS LAPORAN KEUANGAN
 
Pertemuan 9 Representasi Pengetahuan
Pertemuan 9 Representasi PengetahuanPertemuan 9 Representasi Pengetahuan
Pertemuan 9 Representasi Pengetahuan
 
manajemen risiko (legal Risk & risk operational
 manajemen risiko (legal Risk & risk operational manajemen risiko (legal Risk & risk operational
manajemen risiko (legal Risk & risk operational
 
01_PENGANTAR DATA DATA SCIENCE.pptx
01_PENGANTAR DATA DATA SCIENCE.pptx01_PENGANTAR DATA DATA SCIENCE.pptx
01_PENGANTAR DATA DATA SCIENCE.pptx
 
keputusan dalam keadaan risiko
keputusan dalam keadaan risikokeputusan dalam keadaan risiko
keputusan dalam keadaan risiko
 
uji hipotesis satu rata – rata bagian 2
uji hipotesis satu rata – rata bagian 2uji hipotesis satu rata – rata bagian 2
uji hipotesis satu rata – rata bagian 2
 
STATISTIKA-Regresi dan korelasi
STATISTIKA-Regresi dan korelasiSTATISTIKA-Regresi dan korelasi
STATISTIKA-Regresi dan korelasi
 
Biaya Akuisisi, Maintenance, Depresiasi (Accounting For Non Accountant)
Biaya Akuisisi, Maintenance, Depresiasi (Accounting For Non Accountant)Biaya Akuisisi, Maintenance, Depresiasi (Accounting For Non Accountant)
Biaya Akuisisi, Maintenance, Depresiasi (Accounting For Non Accountant)
 
Sim jawaban semester 4
Sim jawaban semester 4Sim jawaban semester 4
Sim jawaban semester 4
 
Real Case of Pertamina - Customer Relationship Management Review
Real Case of Pertamina - Customer Relationship Management ReviewReal Case of Pertamina - Customer Relationship Management Review
Real Case of Pertamina - Customer Relationship Management Review
 
Perkembangan tentang ifrs
Perkembangan tentang ifrsPerkembangan tentang ifrs
Perkembangan tentang ifrs
 

Ähnlich wie 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
 

Ähnlich wie 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 ?