2012-04-02 20 views
5

Soruya verilen cevabı kaydeden, ölmeden önce ne yapmak istersin, rastgele bir metin kutusu düşünün.Algoritma fikirlerin benzerliğini karşılaştırmak için (dizeler olarak)

Yanıt dizelerinin bir koleksiyonunu kullanarak (maksimum uzunluk 240), bunları bir şekilde sıralamak ve gruplandırmak ve bunları fikirlerle saymak istiyorum (this question'da açıklandığı gibi yalnızca dize benzerliği olabilir).

  1. Böyle bir şey yapmak için başka veya daha iyi bir yol var mı?
  2. Bu, farklı bir dize benzerliğinden daha mı?
  3. Bu sorulması gereken soru mu?

buradaki fikir insanlar tekrar tekrar bir metin kutusuna yazmak sahip olmaktır ve bana genelde 802 kişi yaklaşık yazdığı aynı şey olduğunu, konuşma, açıklayan bir sayısını sağlamak için

+0

802 kişi? tek bir numara ister misin? ya da bir bölüm? veya örtüşen bir bölme? – ninjagecko

+0

@ ninjagecko bu harika bir soru. Tek bir numara üzerinden bölümleri seçer misiniz? Öyleyse neden? – Kristian

+1

de daha fazla bilgi korur, ama gerçekten yapmaya çalıştığınız şey bağlı olacaktır. – ninjagecko

cevap

8

It dize benzerliğinden çok daha zordur.

  • noktalama işaretleri karakterleri ve ortak "dur kelimeleri" kaldırma gibi bazı metin biçimlendirme/temizleme görevleri gerçekleştirin
  • (kendi kullanım istatistikleri ile kelimelerin topluluğu) bir külliyat Construct dan: Bu en azından yapmanız gerekenler cevapları veren terimler.
  • Her dönem için bir ağırlık hesaplayın.
  • Her yanıttan bir belge vektörü oluşturun (her terim çok yüksek boyutlu bir Euclidian alanında bir boyuta karşılık gelir)
  • Belge vektörleri üzerinde bir kümeleme algoritması çalıştırın.

iyi istatistiksel doğal dil işleme kitap okuyun, ya da iyi tanıtımları/öğreticiler için google arama (muhtemelen terimleri: istatistiksel NLP, metin kategorizasyon, kümeleme) Muhtemelen bazı kütüphaneler bulabilirsiniz (weka veya nltk aklınıza gelir) tercih ettiğiniz dile bağlı olarak, ancak yine de kütüphaneyi kullanacak kavramları anlamalısınız.

2

Latent Semantic Analysis (LSA) sizi ilgilendirebilir. İşte a nice introduction.

Latent semantik analizi (LDA) belgeleri, bir dizi ve belgeleri ile ilgili kavramlar bir dizi üreterek içeren kayıt ve arasındaki ilişkiyi analiz, vektörel semantik, özellikle de doğal dil işleme tekniğidir terimleri. [...]

+2

LSA, bazı ciddi matematiksel sihirlerle benzer terimleri birleştirerek boyutları azaltmak için kullanılan bir tekniktir. Bence ortada LSA'yı uygulamayı bile düşünmeden önce (önce belge vektörlerini doğru ve sonra kümelemek) uzun bir yol var. –

1

İstediğiniz şey NLP'de açık bir sorun. @ Ali'nin cevabı, fikri yüksek düzeyde anlatıyor, ancak "Her cevap için bir belge vektörü oluştur" bölümü gerçekten zor olanıdır. İçerdiği sözcüklerin vektörlerinden bir belge vektörü oluşturmanın birkaç açık yolu vardır. Toplama, çarpma ve ortalama alma hızlıdır, ancak sözdizimini sözel olarak yok sayarlar. Man bites dog ve Dog bites man aynı gösterime sahip olacak, ancak açıkça aynı anlama gelmeyecektir.Google compositional distributional semantics - bildiğim kadarıyla, Teksas, Trento, Oxford, Sussex Üniversitelerinde ve Google'da bölgede çalışan insanlar var.

İlgili konular