Bir makale veya forum gönderisi veritabanı içinde yinelenen bir giriş olup olmadığını tespit etmeye çalışıyorum. Bunu biraz düşündüm, içeriği çoğaltan birisinin üçünden birini kullanarak tespit edeceği sonucuna vardım (tespit edilmesi zor inenlerde):
- tüm metni basit kopyala yapıştır
- kendi bölümleriyle birleştiren metnin bölümlerini kopyalayıp yapıştırma
- harici bir siteden bir makaleyi kopyalamak ve kendilerine ait bir maskeli balo
Metni Analiz İçin Hazırlama
Temel olarak herhangi bir anomali; amaç metni olabildiğince "saf" hale getirmektir. Daha doğru sonuçlar için metin şu şekilde "standartlaştırılır":
- Yinelenen beyaz boşlukları sıyırma ve önde gelen ve sondaki kırpma.
- Yeni satırlar \ n olarak standartlaştırılmıştır.
- HTML etiketleri kaldırıldı.
- Daring Fireball adlı bir RegEx kullanıldığında URL'ler çıkarılır.
- Uygulamamda BB kodunu kullanıyorum.
- (ä) ccented ve yabancı (Enlgish dışında) yabancı olmayan biçimlerine dönüştürülür.
Her makale hakkındaki bilgileri (1) istatistik tablosunda ve (2) anahtar kelimeler tablosunda depolarım.
(1) İstatistik Tablosu Metin içeriği hakkında aşağıdaki istatistikler saklanır (bu gönderiye çok benzer)
- metin uzunluğu
- harf sayısı
- sözcük sayısı
- cümle sayısı
- cümle başına ortalama kelimeler
- otomatik okunabilirlik endeksi
- gunning sis skoru
Avrupa dilleri için hece sayımı kullanmadığından Coleman-Liau ve Otomatik Okunabilirlik Endeksi kullanılmalıdır, bu nedenle makul derecede doğru bir puan üretilmelidir.
(2) Anahtar Kelimeler Tablosu
Anahtar kelimeler, çok sayıda durdurma kelimesi listesi (yaygın kelimeler), ör. ',', 'A', '', 'ila' vb.
Örnek veri
- metin_uzunluğu, 3963
- letter_count, 3052
- kelime_sayısı, 684
- cümle_sayısı, 33
- word_per_sentence, 21
- gunning_fog, 11.5
- auto_read_index, 9.9
- anahtar kelime 1, öldürüldü
- anahtar kelime 2, memurlar
- anahtar kelime 3, polis
Bir makale güncellendiğinde, yukarıdaki tüm istatistiklerin yeniden oluşturulduğu ve tamamen farklı değerler olabileceği unutulmamalıdır.
İlk kez yayınlanan bir makalenin veritabanında zaten var olup olmadığını belirlemek için yukarıdaki bilgileri nasıl kullanabilirim?
Tasarım yapacağım her şeyin mükemmel olmayacağının farkındayım, en büyük risk (1) Yinelenmeyen içerik yinelenen olarak işaretlenecek (2) Sistem yinelenen içeriğe izin veriyor.
Bu nedenle algoritma, 0'dan hiçbir yinelenen risk 5'in yinelenmemesi ve 10'un yinelenmesinden bir risk değerlendirme numarası üretmelidir. 5'in üstündeki herhangi bir şey, içeriğin yinelenme olasılığı yüksektir. Bu durumda içerik işaretlenebilir ve olası kopyalar olan makalelere bağlanabilir ve bir insan silinip silinmeyeceğine veya izin verilip verilmeyeceğine karar verebilir.
Daha önce de söylediğim gibi, tüm makale için anahtar kelimeler saklıyorum, ancak paragraf bazında da aynı şeyi yapabilir miyim merak ediyorum; bu aynı zamanda DB'deki verilerimin daha da ayrılması anlamına gelecektir, ancak aynı zamanda ilk yazımda (2) tespitini de kolaylaştıracaktır.
İstatistikler arasında ağırlıklı ortalama düşünüyorum, ama hangi sırayla ve sonuçların ne olacağını ...