2012-08-03 14 views
9

Benzer bir anahtar kelime kümesiyle bir ifadeyi veya anahtar kelimeyi eşleştirmem gereken bir proje üzerinde çalışıyorum. Aynı anlam için semantik analiz yapmam gerekiyor.Benzer anlama veya anlambilime sahip ifadeleri eşleştirmek için NLP araçları hangi araçları kullanacak

bir örnek:

İlgili QT
ucuz sağlık sigortası
uygun fiyatlı sağlık sigortası az
ucuz sağlık sigortası

Ortak Anlamı
düşük maliyetli sağlık sigortası
sağlık planı

Düşük maliyetli sağlık sigortası

Burada Ortak Anlamı sütunundaki sözcük, İlgili QT sütununun altında eşleşmelidir. Aynı şeyi yapmak için bir takım araçlara ve tekniklere baktım. S-Match çok umut verici görünüyordu, ama Java'da değil Python'da çalışmam gerekiyor. Ayrıca, Latent Semantic Analysis iyi görünüyor, ancak anahtar kelime eşlemesi yerine Anahtar Kelime'ye dayanan belge sınıflandırması için daha fazla olduğunu düşünüyorum. NLTK ile biraz tanıdık. Birisi hangi yöne doğru ilerlemem gerektiğini ve hangi araçların aynı şekilde kullanması gerektiğine dair bir fikir verebilir mi?

+0

Projenizin kapsamı nedir at Python uygulaması - http://clic.cimec.unitn.it/composes/toolkit/installation.html

  • BEAGLE (http://www.indiana.edu/~clcl/BEAGLE/Jones_Mewhort_PR.pdf) at Python uygulaması - http://radimrehurek.com/gensim/tutorial.html
  • teşrih (http://clic.cimec.unitn.it/composes/toolkit/introduction.html) at Python uygulaması? Birkaç temel anahtar kelime veya duyu ile uğraşıyorsanız, kelime eşdeğerlik sınıflarını el ile belirtmek kolay olabilir (örneğin, "düşük maliyetli sağlık sigortası" anlamına gelen kelime öbekleri listesi). – dmh

  • +0

    Düşük maliyetli sağlık sigortası gibi semantik olarak benzer kelimeleri yaklaşık 200000 kelime grubundan çıkarmak zorundayım. Kümelemeyi, bu kelime üzerinde bir başlangıç ​​algoritması çalıştırdıktan sonra, kümedeki semantik olarak benzer kelimeleri eşleştirecek türler (kelimeler) oluşturmak için kullanmam gerektiğini düşünüyorum. Bütün prosedür denetimsiz. –

    cevap

    0

    Wordnet.'a bir göz atabilirdim. Yüz binlerce terim için size gerçek eşanlamlı kelimeler ve diğer kelime ilişkileri sunacak. nltk'u etiketlediğinizden: Wordnet için bağlamalar sağlar ve bunu etki alanına özgü özümler için temel olarak kullanabilirsiniz. Yine NLTK içinde

    , NLTK kitaba introduction yöntemin similar() tartışılmasını kontrol ve sınıf nltk.text.ContextIndex dayanıyor söyledi. (Hepsi oldukça basit, ama gerçekten ihtiyacınız olan her şey olabilir).

    3

    Eğer bu sözcüklerin ortaya çıktığı yerde, büyük bir cesaretiniz varsa, her kelimeyi vektör olarak temsil etmek için bir model eğitebilirsiniz. Örneğin, word2vec en aracılığı derin öğrenmeyi kullanabilirsiniz "ve CBOW modelleri-gram atla", onlar word2vec modelde gensim software package

    uygulanır, her bir kelimenin bir vektör ile temsil edilir, daha sonra aralarında anlamsal benzerliği ölçebilir sözcükleri temsil eden vektörlerin kosinüsünü ölçerek iki kelime. Semantik benzeri kelimeler, örneğin, yüksek bir kosinüs benzerliğine sahip olmalıdır:

    da

    model.similarity('cheap','inexpensive') = 0.8 
    

    (değer sadece gösterim amacıyla, oluşur.) Kelimelerin, nispeten az sayıda (toplanmasıyla zaman deneylerden yani, 3 ya da 4 kelime), örneğin, semantik korur. Yine

    vector1 = model['cheap']+model['health']+model['insurance'] 
    vector2 = model['low']+model['cost']+model['medical']+model['insurance'] 
    
    similarity(vector1,vector2) = 0.7 
    

    (sadece gösterim amacıyla)

    Bu semantik benzerlik kullanabilir Kümelerinizi oluşturmak için bir ölçü olarak kelimeler arasında ölçün.

    1

    Latent Semantic Analysis bir "belgeye" başvurduğunda, temelde 1'den daha uzun olan herhangi bir kelime kümesi anlamına gelir. Bunu, bir belgeyle başka bir belge arasındaki, bir kelime ile başka bir sözcük arasındaki benzerliği hesaplamak için kullanabilirsiniz. veya bir kelime ve bir belge arasında. Yani seçtiğiniz uygulama için kesinlikle kullanabilirsiniz.yararlı olabilir

    diğer algoritmalar şunlardır:

    İlgili konular