Dize kalıplarını öğrenmek için Makine Öğrenimi tekniği


11

Farklı tanımlanmış kategorilere ait bir kelime listem var. Her kategorinin kendi deseni vardır (örneğin biri özel karakterlerle sabit bir uzunluğa sahiptir, diğeri sadece bu "kelime", ... kategorisinde gerçekleşen karakterlerden oluşur.).

Örneğin:

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

Bu verilere eğitim verilerini temel alarak kendi kendine öğrenmek için bir makine öğrenme tekniği arıyorum. Zaten bazı tahmin değişkenlerini tanımlamaya çalıştım (örneğin kelime uzunluğu, özel karakter sayısı, ...) ve daha sonra kategoriyi öğrenmek ve tahmin etmek için bir Sinir Ağları kullandım. Ama acutally istediğim bu değil. Her kategorinin kalıbını kendi başına öğrenmek için bir teknik istiyorum - hatta hiç düşünmediğim kalıpları öğrenmek için.

Bu yüzden (kelime kategorisi örneklerinden oluşan) algoritma öğrenme verilerini veriyorum ve daha sonra benzer veya eşit kelimelerden kategoriyi tahmin etmek için her kategori için kalıpları öğrenmesini istiyorum.

Bunu yapmanın modern bir yolu var mı?

Yardımın için teşekkürler


Benim bakış açımdan , bu cistrome.org/cr/images/Figure4.png gibi bir şey yapabilirsiniz , ancak ACGT yerine "sayı, büyük harf, küçük harf, boşluk" gibi desenleri kullanabilirsiniz
German Demidov

@AlmanDemidov Yorumunuz için teşekkürler. zaten böyle bir şey düşündüm. Ama aslında öğrenme algoritmasının kendi başına yapmasını ve kalıpları tespit etmesini istiyorum. (ML için mümkün olup olmadığını bilmiyorum).
chresse

aslında bu modeller makine öğrenmesidir. Elbette bunu makine öğrenimi ile yapabilirsiniz, ancak bir kişinin ML algoritmasına bir girdi olarak vermeden önce bir özellik çıkarma işlemi yapması gerekir. Bu örneklerden hangi özellikleri elde edersiniz? Karma işlevleri düşünebilirim, ancak eşit olmayan uzunluktaki dizeler için oldukça kötü çalışır. Bu nedenle, özellikleri nasıl ayıklayacağınıza dair bir yol bulacağınızdan, ML yöntemlerini kullanabileceksiniz. Ayrıca farklı sınıfların sembolleri arasında Levenshtein mesafesi gibi bir şey yapabilir, onları kümeleyebilir ve sınıflandırma için sentroidlere minimum mesafeyi kullanabilirsiniz.
Alman Demidov

@chresse, sorunuza denetimsiz öğrenme etiketini eklemek isteyebilirsiniz . Bunu sinir ağları ile yapmak için, bu LeCun makalesi ilgi çekici olabilir. Metin madenciliği veya sinir ağları hakkında fazla deneyimim olmadığından, bu yaklaşımın ne kadar iyi olabileceğini söyleyemem.
GeoMatt22

1
Bu nedenle, vektörlerinizi doğal olarak kullandığınız özellikleri (u - büyük harf, l - küçük harf, n - sayı, s - boşluk) kullanarak dönüştürün, böylece vektörleriniz "ABC" - "uuu", "a8 219" - "lnsnnn" olur. üzerinde. O zaman, örneğin, bu algoritmayı kullanarak bazı uzaklık ölçülerini tanıtmanız gerekir: en.wikipedia.org/wiki/Smith –Waterman_algorithm. Bundan sonra verilerinizin bir sınıflandırmasını / kümelenmesini / görselleştirmesini gerçekleştirebileceksiniz.
Alman Demidov

Yanıtlar:



5

Girişinizin sözcükteki harflerin bir sırası ve çıktınızın bir kategori olduğu tekrarlayan sinir ağlarını deneyebilirsiniz. Bu, herhangi bir özelliği kodlamamanız için gereksiniminize uygundur.

Ancak bu yöntemin gerçekten çalışması için oldukça büyük bir eğitim veri setine ihtiyacınız olacaktır.

Daha fazla bilgi için Tekrarlayan Sinir Ağları ile Denetimli Dizi Etiketlemesine Alex Graves bölüm 2'ye bakabilirsiniz.

Bu, ön baskıya bir bağlantıdır


1
Gelecekte "preprint.pdf" bağlantısının kesilmesi durumunda, son referansınız için tam bir alıntı ekleyebilir misiniz? (İnanıyorum bu , ilgili bölüm?)
GeoMatt22
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.