2011-06-26 21 views
8

Şu anda bu formun cümlelerini anlamaya çalışıyorum:Cümlelerden 'yararlı' bilgiler çıkarılıyor mu?

The problem was more with the set-top box than the television. Restarting the set-top box solved the problem.

Doğal Dil İşleme konusunda tamamen yeni ve ellerimi kirletmek için Python'un NLTK paketini kullanmaya başladım. Ancak, birilerinin bana bunu başarmakla ilgili üst düzey adımlar hakkında genel bir bakış sunup sunamayacağını merak ediyorum.

Yapmaya çalıştığım şey, bu durumda sorunun ne olduğunu tanımlamaktır, set-top box ve alınan eylemin sorunu çözüp çözmediği bu durumda, yes sorunu yeniden başlattığı için sorunu çözdüyse. Öyleyse eğer bütün cümleler bu formda olsaydı, hayatım daha kolay olurdu, ama doğal bir dil olduğu için cümleler şu şekilde de olabilir:

I took a look at the car and found nothing wrong with it. However, I suspect there is something wrong with the engine

Bu durumda, sorun car ile. Yapılan işlem, suspect kelimesinin varlığı nedeniyle sorunu çözmedi. Ve potansiyel sorun engine ile olabilir.

Bunun çok karmaşık olduğunu düşündüğümden mutlak bir cevap aramıyorum. Aradığım şey, beni doğru yönde yönlendirecek daha üst düzey bir genel bakış. Bunu yapmak için daha kolay/alternatif bir yol varsa, bu da kabul edilir.

+7

NLP/NLTK ile ilgili bazı deneyimlerim var, bu sorunun sık sık "bir ok gibi sinekler, bir muz gibi meyve sinekleri" semantik analiz sıçan deliğinde olduğunu düşünüyorum. Bu küçük bilmecenin henüz bildiğim herhangi bir genel çözümü yok. – msw

+0

@msw: Oh ... :) İyi olan! Genel bir çözüm tasarlamaya çalışmıyorum. Çok alana özel bir çözüm olurdu. Anlamaya çalıştığım şey, bu gibi problemlere nasıl yaklaşılacağıdır (örn.Hangi alan bilgisinin gerekli olduğu, hangi veritabanlarının derlenmesi gerektiği, sınıflandırıcının ne gibi bir konuda eğitilmesi gerektiği vb.) – Legend

+0

Örnek cümle, hedefinize yaklaşmanın yararsızlığını gösteren eski bir NLP kestanesidir. Örneğinizi izleyerek "motor" u "stereo" ile değiştirin ve tüm kişisel NLP becerilerinizle nasıl örnekleminizin (Bad Thing) ve benim modifikasyonumun (bir Care Care) olduğunu nasıl anlayabileceğinizi söyleyin. – msw

cevap

3

Eğer cümleler iyi biçimlendirilmişse, muhtemelen dependency parsing (http://nltk.googlecode.com/svn/trunk/doc/api/nltk.parse.malt.MaltParser-class.html# raw_parse). Bu size bir cümle kurucularının bir grafiğini verir ve sözcüksel öğeler arasındaki ilişkileri anlatabilirsiniz. Daha sonra, bir bağımlılık ayrıştırıcısının çıktısından gelen cümleleri ayıklayabilirsiniz (http://nltk.googlecode.com/svn/trunk/doc/book/ch08.html#code-cfg2) Doğrudan nesneyi çıkarmanıza yardımcı olabilir. bir cümle veya bir cümlede fiil ifadesi.

Sadece bir cümleyle kelime öbekleri veya "chunks" almak istiyorsanız, yığın ayrıştırıcısını deneyebilirsiniz (http://nltk.googlecode.com/svn/trunk/doc/api/nltk.chunk-module.html). Adlandırılmış varlık tanıma özelliğini de gerçekleştirebilirsiniz (http://streamhacker.com/2009/02/23/chunk-extraction-with-nltk/). Genellikle yerler, kuruluşlar veya insan isimleri örneklerini ayıklamak için kullanılır ancak sizin durumunuzda da işe yarayabilir.

Bir cümledeki isim/fiil cümleleri çıkarma problemini çözdüğünüz varsayılırsa, alan uzmanınızın işini kolaylaştırmak için bunları filtrelemeniz gerekebilir (çok fazla kelime öbeği bir hakime zarar verebilir). İfadeleriniz üzerinde bir frekans analizi yapabilir, genellikle sorunlu alanla ilgili olmayan çok sık olanları çıkarabilir ya da bir beyaz listeyi derleyebilir ve önceden tanımlanmış bir kelime grubu içeren sözcükleri saklayabilirsiniz.

4

Gerçekten umut edebileceğiniz en iyisi, Naive Bayesian Classifier ile yeterince büyük (muhtemelen sahip olduğunuzdan fazla) bir antrenman setine sahip ve adil bir yanlış tespit oranını tolere etmeye istekli olmaktır. NLP'nin kutsal kabuğunu aramak sizi tatminsiz bırakmaya mahkumdur.

+0

"Bir Naif Bayes Sınıflandırıcı" ile aynı cümlede "için umut olabilir en iyi" bir -1 alır. Bilgi çıkarma için ** çok **, ** çok ** daha güçlü makine öğrenme modelleri vardır. Bu karmaşık bir sorunu çözmek için Naive Bayes gibi zayıf bir öğrenme algısı elde etmeye çalışmaktan çok bir dizi regex yazmanın daha kolay olacağını sanıyorum. –