Teknik Machine Learning untuk mempelajari pola string

11

Saya memiliki daftar kata-kata, milik berbagai kategori yang ditentukan sendiri. Setiap kategori memiliki pola sendiri (misalnya satu memiliki panjang tetap dengan karakter khusus, yang lain ada karakter yang hanya terjadi dalam kategori "kata", ...).

Sebagai contoh:

"ABC" -> type1
"ACC" -> type1
"a8 219" -> type2
"c 827" -> type2
"ASDF 123" -> type2
"123123" -> type3
...

Saya mencari teknik pembelajaran mesin untuk mempelajari pola ini sendiri, berdasarkan data pelatihan. Saya sudah mencoba mendefinisikan beberapa variabel prediktor (misalnya panjang kata, jumlah karakter khusus, ...) sendiri dan kemudian menggunakan Neural-Networks untuk mempelajari dan memprediksi kategori. Tapi itu sebenarnya bukan yang saya inginkan. Saya ingin teknik untuk mempelajari pola masing-masing kategori sendiri - bahkan untuk mempelajari pola yang tidak pernah saya pikirkan.

Jadi saya memberikan data pembelajaran algoritma (terdiri dari contoh kata-kategori) dan ingin mempelajari pola untuk setiap kategori untuk memprediksi nanti kategori dari kata yang sama atau sama.

Apakah ada cara canggih untuk melakukannya?

Terima kasih atas bantuan Anda

chresse
sumber
Dari sudut pandang saya, Anda dapat melakukan sesuatu seperti cistrome.org/cr/images/Figure4.png ini , tetapi alih-alih ACGT Anda dapat menggunakan pola seperti "angka, huruf besar, huruf kecil, spasi", dll.
German Demidov
@GermanDemidov terima kasih atas komentar Anda. Saya sudah memikirkan hal seperti ini. Tetapi saya sebenarnya ingin algoritma pembelajaran melakukannya sendiri dan mendeteksi polanya. (Saya tidak tahu apakah itu mungkin untuk ML).
chresse
sebenarnya pola ini adalah pembelajaran mesin. Tentu saja Anda dapat melakukannya dengan pembelajaran mesin, tetapi seseorang perlu melakukan ekstraksi fitur terlebih dahulu sebelum memberikannya sebagai input untuk algoritma ML. Fitur apa yang akan Anda ekstrak dari contoh ini? Saya bisa memikirkan fungsi hash, tetapi akan bekerja sangat buruk untuk string dengan panjang yang tidak sama. Jadi karena Anda akan menemukan cara bagaimana mengekstrak fitur, Anda akan dapat menggunakan metode ML. Anda juga dapat melakukan seperti jarak Levenshtein antara simbol kelas yang berbeda, mengelompokkannya dan menggunakan jarak minimum ke centroid untuk klasifikasi.
Demidov Jerman
@chresse Anda mungkin ingin menambahkan tag belajar tanpa pengawasan ke pertanyaan Anda. Untuk melakukan ini dengan jaringan saraf, makalah LeCun ini mungkin menarik. Karena saya tidak memiliki banyak pengalaman dengan penambangan teks atau jaringan saraf, saya tidak bisa mengatakan seberapa bagus pendekatan ini.
GeoMatt22
1
Jadi ubah vektor Anda menggunakan fitur yang Anda gunakan secara alami (u - huruf besar, l - huruf kecil, n - angka, s - spasi), sehingga vektor Anda akan menjadi "ABC" - "uuu", "a8 219" - "lnsnnn" dan seterusnya di. Maka Anda perlu memperkenalkan beberapa ukuran jarak, misalnya, menggunakan algoritma ini: en.wikipedia.org/wiki/Smith –Waterman_algorithm. Setelah ini, Anda akan dapat melakukan klasifikasi / klasterisasi / visualisasi data Anda.
Demidov Jerman

Jawaban:

5

Anda dapat mencoba jaringan saraf berulang, di mana input Anda adalah urutan huruf dalam kata, dan output Anda adalah kategori. Ini sesuai dengan kebutuhan Anda sehingga Anda tidak memberikan kode pada fitur apa pun.

Namun agar metode ini benar-benar berfungsi, Anda akan memerlukan kumpulan data pelatihan yang cukup besar.

Anda dapat merujuk Pelabelan Urutan Supervisi dengan Jaringan Syaraf Berulang oleh Alex Graves bab 2 untuk detail lebih lanjut.

Ini adalah tautan ke pracetak

Arun Jose
sumber
1
Bisakah Anda menambahkan kutipan lengkap untuk referensi akhir Anda, jika tautan "preprint.pdf" rusak di masa depan? (Saya yakin ini bab yang relevan?)
GeoMatt22