Önemli sözcükleri bulmak için dil ayrıştırma


9

Sözcüksel bir konuya nasıl yaklaşılacağı konusunda bazı girdi ve teoriler arıyorum.

Diyelim ki sadece bir cümle veya potansiyel olarak birden fazla cümle olabilen dizelerden oluşan bir koleksiyonum var. Bu dizeleri ayrıştırmak ve en önemli kelimeleri sökmek istiyorum, belki de kelimenin ne kadar önemli olduğunu gösteren bir puanla.

Ne demek istediğimin birkaç örneğine bakalım.

Örnek 1:

"Gerçekten bir Keurig istiyorum, ama göze alamıyorum!"

Bu çok basit bir örnek, sadece bir cümle. İnsan olarak, "Keurig" in buradaki en önemli kelime olduğunu rahatlıkla görebiliyorum. Ayrıca, "göze" göreceli olarak önemlidir, ancak cümlenin ana noktası bu değildir. "Ben" kelimesi iki kez görünür, ama bize hiçbir bilgi vermediği için hiç önemli değil. Kelime / puanları bir karma görmeyi bekleyebilirsiniz böyle bir şey:

"Keurig" => 0.9
"afford" => 0.4
"want"   => 0.2
"really" => 0.1
etc...

Örnek 2 -

"Hayatımın en iyi yüzme uygulamalarından birine sahiptim. Umarım zamanımı rekabete sokabilirim. Sadece su geçirmez olmayan saatimi almayı hatırlamış olsaydım."

Bu örnekte birden fazla cümle var, bu yüzden baştan sona daha önemli kelimeler olacak. Örnek 1'deki nokta egzersizi tekrarlanmadan, muhtemelen bundan iki veya üç önemli kelime çıkacağını beklerim: "yüzme" (veya "yüzme uygulaması"), "rekabet" ve "izle" (veya "su geçirmez" "" veya "su geçirmez olmayan saat" i seçin.

Bunun gibi birkaç örnek verildiğinde, benzer bir şey yapmaya nasıl devam edersiniz? Programlamada zaten bunu yapan mevcut (açık kaynak) kitaplıklar veya algoritmalar var mı?


Ayrıca, bu benim programmers.stackexchange.com benim ilk yazı. Bu yanlış yerse ve StackOverflow'a veya başka bir SE sitesine aitse özür dileriz. Gerekirse soruyu taşımaktan mutluluk duyarız.
Matt Huggins

Ne yapmaya çalıştığın sorusundan anlamıyorum. Özellikle ilk örnek için, "Keurig" ve "göze" kelimeleri basit bir istatistiksel kontrolle tanımlanabilir: cümlenin sözcükleri arasında, bu iki kelime İngilizce'de diğerlerinden daha az yaygındır. Dolayısıyla, kelime frekansları veritabanınız varsa, bu kelimeleri kolayca tanımlayabilirsiniz.
Qwertie

Yanıtlar:


5

Açıkladığınız sorunu kesinlikle düşünen insanlar var. João Ventura ve Joaquim Ferreira da Silva'nın Metinle İlgili Tek Kelimelerin Sıralanması ve Çıkarılması (pdf), mevcut sıralama tekniklerine ve iyileştirme önerilerine hoş bir giriş niteliğindedir. Tanımladıkları tüm teknikler bir veya iki satır metne karşı bir korpoza (çok sayıda metin) dayanır. Şirketinizin tüm örneklerin veya muhtemelen belirli kaynaklardan toplanan birçok örnek topluluğunun toplanması gerekir. Tek kelime (unigram) alaka düzeyinin çözülmemiş bir sorun olduğunu unutmayın. Makalenin açıkladığı gibi:

“... tamamen istatistiksel yöntemler kullanarak, bu tür bir sınıflandırma her zaman basit ve hatta kesin değildir, çünkü alaka düzeyi kavramı anlaşılması kolay bir kavram olmasına rağmen, normal olarak alaka düzeyi ile alaka düzeyini birbirinden ayıran bir fikir birliği yoktur. Örneğin, "Cumhuriyet" veya "Londra" gibi kelimelerin anlamlı ve "veya" ve "beri" gibi kelimelerin hiçbir ilgisi yoktur, ancak "oku", "sonlandır" ve "sonraki" gibi kelimelere ne demeli? kelimelerin sorunlu olması nedeniyle genellikle anlamsal değerleri konusunda fikir birliği yoktur. "

Birçok açık kaynak kodlu doğal dil işleme araç seti vardır . (Dikkatli olun. Bazı araçlar araştırma için ücretsizdir ancak ticari kullanım için ticari lisans gerektirir.) Seçtiğiniz yaklaşımdan bağımsız olarak hayatınızı kolaylaştıracaktır.

Ben en aşina olduğum Doğal Dil Toolkit (NLTK) . Kullanımı kolaydır, iyi belgelenmiştir ve Python ile Doğal Dil İşleme kitabında (çevrimiçi olarak ücretsiz olarak bulunabilir) yer almaktadır. NLTK'nın sizin için neler yapabileceğinin basit bir örneği olarak, konuşma parçası etiketleyicisini kullandığınızı hayal edin . Her kelimenin konuşma kısmı belirlendiğinde, doğru isimleri çok önemli ve sıfatları daha az dikkate alabilirsiniz. Fiiller önemli olabilir ve daha az zarf verir. Hiçbir şekilde son teknoloji bir sıralama değil, ancak az çaba ile faydalı bilgiler elde edersiniz. Daha sofistike analize geçmeye hazır olduğunuzda, NLTK'nın yerleşik tokenleştirme, etiketleme, yığınlama ve sınıflandırma yeteneği çözümünüzün diğer ayrıntılarına odaklanmanıza izin verecektir.


1

Doğal dil işleme, üzerinde yapılan çok sayıda resmi araştırma ile kendi disiplinidir. Oraya bakarak başlardım.

Ayrıca ihtiyaçlarımı da tekrar gözden geçirirdim. 50 yılı aşkın bir araştırmadan sonra bile, en iyi bilgisayar bilimcileri ortaya çıkabildi. Bir bilgisayarın düzenli olarak konuştuğunuz şeyi başarıyla yapmasını beklemezdim.

Konuşmada belirli sınırlamalar varsa (Siri'nin basit bir komutunuz veya sorunuz olduğunu varsayarsa) daha iyi olabilir. (NLP'ye ihtiyacım olduğu varsayılarak) ihtiyaçlarımı yeniden değerlendirmek, sınırlamalarımı tanımlamayı içerir. Ondan sonra bir ton örnek avlayabilirim. Kısmen bulduğum her şeyi test etmek için, ancak birçok modern çözüm makine öğrenimini içerir. Bu örneklere öğrenme eğrisine girdi olarak ihtiyacım var.

Özetle, bu bağlamsız senaryoda size her şeyin iyi puanlar verebileceğinden şüpheliyim.


Siri dig için +1 ... veya promosyon ...
Aaron McIver
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.