December 5, 2010 by prihastomo
…Reportase Training Ke Jepang Part 2…
Menyambung tulisan pertama, maka hal tulisan berikut akan membahas sedikit mengenai Phonetic Search yang merupakan sebuah metode pengenalan suara dimana sinyal audio pembicaraan akan dipecah menjadi rangkaian fonem yang dapat digunakan untuk mengidentifikasi kata-kata. Fungsi pencarian fonetik ditujukan untuk membantu dalam mengidentifikasi kata yang tepat di mana ejaan kata tersebut tidak diketahui dan hanya pengucapan yang tersedia. Dalam implementasinya pada database, pencarian tepat akan menampilkan hasil yang sesuai dengan query yang dimasukkan. Namun, jika melakukan Phonetic Search, maka akan mengembalikan dua nilai, yakni menampilkan hasil yang sesuai (tidak ada catatan), dan sebagai catatan pencocokan menggunakan pencarian fonetik, dan selanjutnya sebagai saran ditentukan maksimum sesuai dengan kesamaan (Similarity) nama kolom, dimana aturannya adalah – lebih tinggi nilai kesamaan, lebih dekat hasilnya yang merupakan kata kunci pencarian.
Contoh penerapan pada database Northwind
CREATE PROCEDURE PhonicSearch
@TableName varchar (80) -- Table name
, @ColumnList varchar(800) -- List of comma seperated column list to return
, @MatchColumn varchar(80) -- Compare column with
, @SearchFor varchar(150) -- Search string to compare with @MatchColumn
, @MaxSuggest varchar(3) -- In case no exact match found the maximum number
-- of suggested value in @MatchColumn column
AS
Declare @strSQL varchar(1500)
-- Build and execute SQL query to find exact match
Set @strSQL = 'SELECT ' + @ColumnList + ' FROM ' + @TableName +
' WHERE ' + @MatchColumn + ' = ''' + @SearchFor + ''''
-- Print @strSQL
exec (@strSQL)
-- If no exact match found build query with phonic search
IF @@ROWCOUNT=0
Begin
-- Phonic Search query
Set @strSQL = 'SELECT ' + @ColumnList + ' FROM ' + @TableName +
' WHERE SOUNDEX(' + @MatchColumn +
') = SOUNDEX(''' + @SearchFor + ''')'
exec(@strSQL)
-- Print @strSQL
-- Suggetested words for refin search
Set @strSQL = 'SELECT TOP ' + @MaxSuggest + ' ' + @MatchColumn + ', DIFFERENCE('+
@MatchColumn+ ', ''' + @SearchFor +
''') as Similarity FROM ' + @TableName + ' WHERE SOUNDEX(' +
@MatchColumn + ') = SOUNDEX(''' + @SearchFor +
''') ORDER BY Similarity'
exec(@strSQL)
-- Print @strSQL
END
-- Try it
Exec PhonicSearch 'Customers', 'customerid, CompanyName, ContactName, ContactTitle' , 'ContactName', 'MAR',5

Contoh penerapan lain terdapat pada situs PatenScope. Pada situs ini kita dapat melakukan Phonetic Search (Cross Lingual Expansion) dari menu Search. Sebagai contoh, saya mencari kata kola, maka dengan mode Automatic Expansion akan dihasilkan ekspresi ((EN_TI:(“kola”) OR EN_AB:(“kola”)) OR (ES_TI:(“cola”) OR ES_AB:(“cola”))) sehingga hasil pencarian akan lebih variatif. Dan yang menarik, pada situs Drugs.Com, menyediakan fasilitas phonetic search guna menentukan obat yang tepat dari kemungkinan kesalahan pengucapan.

Referensi Phonetic Search:
- Understanding Classic SoundEx Algorithms
- Drugs.Com – Phonetic Search
- Soundex Phonetic vs. String-Matching
- Dictionary Software
- Phonetic Search on SQL Server
- Word Spotting vs. Phonetic Search vs Speech Recognition
- WIPO – Cross Lingual Expansion on PatenScope