Özellik Karma'yı Anlama


10

Wikipedia, özellik karmayı açıklarken aşağıdaki örneği sağlar ; ancak eşleme, tanımlanan sözlükle tutarlı görünmüyor

Örneğin , sözlüğe göre todönüştürülmelidir 3, ancak bunun 1yerine kodlanır .

Açıklamasında bir hata var mı? Özellik karmaşası nasıl çalışır?

Metinler:

John likes to watch movies. Mary likes too.
John also likes to watch football games.

sözlük kullanılarak dönüştürülebilir

{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also": 6, 
"football": 7, "games": 8, "Mary": 9, "too": 10}

matrise

[[1 2 1 1 1 0 0 0 1 1]
 [1 1 1 1 0 1 1 1 0 0]]

Yanıtlar:


10

Matris aşağıdaki şekilde oluşturulur:

  • satırlar satırları temsil eder
  • sütunlar özellikleri temsil eder

ve her giriş matrisi (i, j) = k şu anlama gelir:

İ satırında, j indeksi olan sözcük k kere görünür.

Böylece toindeks 3 ile eşlenir. 1. satırda tam olarak bir kez görünür. Yani m (1,3) = 1.

Daha fazla örnek

  • likes2. satırda tam olarak iki kez görünür. Yani m (1,2) = 2
  • also 6. satırda değil, 2. satırda bir kez görünür. Böylece m (1,6) = 0 ve m (2,6) = 1.

Özellik hash bağlamında, sözlüğümüz yok. Sadece bir karma fonksiyonumuz var. Bu, (1) özelliğin karma değerini hesaplamanız ve (2) bir veri noktası her gördüğünüzde, karma işlevi tarafından verilen dizini 1 arttırmanız anlamında da benzer şekilde çalışıyor mu? Örneğin, aşağıdaki @ user20370'te belirtildiği gibi, özelliklerinizi 13 bit ile kodlamaya karar verirseniz ve "beğenilerin" karma değeri 5674 ise, dizin 5674 1 artar mı? Daha az bit kullanırsanız, 5674 değerini 2 ^ (# bit) kadar değiştirir ve bu dizini artırırsınız?
Vivek Subramanian

1
@VivekSubramanian evet. Zorluk, çarpışmalar olmaksızın (yani farklı kelimeler, ancak aynı karma değer) bir karma işlev veya nadiren meydana gelen çarpışmalar bulmaktır. Bu, bilgisayar biliminde bir araştırma alanıdır ( en.wikipedia.org/wiki/Perfect_hash_function ).
steffen

4

Steffen'in belirttiği gibi, örnek matris, bir kelimenin bir metinde kaç kez göründüğünü kodlar. Kodlamanın matrise konumu, kelime (matristeki sütun konumu) ve metin (matristeki satır konumu) ile verilir.

Şimdi, karma hile aynı şekilde çalışır, ancak başlangıçta her kelime için sütun konumunu içeren sözlüğü tanımlamanız gerekmez.

Aslında, size olası sütun pozisyonları aralığını (karma fonksiyonu size mümkün olan minimum ve maksimum değeri verecektir) ve matrise kodlamak istediğiniz kelimenin kesin pozisyonunu veren hash fonksiyonudur. Örneğin, "beğeniler" kelimesinin hash fonksiyonumuz tarafından 5674 rakamına hashlendiğini düşünelim, o zaman 5674 sütunu "beğeniler" kelimesine göre kodlamaları içerecektir.

Böyle bir şekilde, metni analiz etmeden önce sözlük oluşturmanıza gerek yoktur. Metin matrisiniz olarak seyrek bir matris kullanacaksanız, matris boyutunun tam olarak ne olması gerektiğini tanımlamanız bile gerekmez. Sadece metni tarayarak, anında, hash fonksiyonu ile kelimeleri sütun konumlarına dönüştüreceksiniz ve metin matrisiniz, hangi belgeyi aşamalı olarak analiz ettiğinize (satır konumu) göre verilerle (frekanslar, yani) doldurulur.

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.