Jarak Levenshtein boleh digunakan dalam sistem pengesanan penipuan untuk membandingkan data yang dimasukkan pengguna (seperti nama, alamat atau e-mel) dengan data sedia ada untuk mengenal pasti entri yang serupa tetapi berpotensi penipuan.
Berikut ialah panduan langkah demi langkah untuk menyepadukan fungsi ini ke dalam projek Django anda.
Sistem pengesanan penipuan boleh membandingkan:
Gunakan isyarat Django untuk menyemak data pengguna baharu semasa pendaftaran atau kemas kini.
Sepadukan perpustakaan untuk mengira jarak Levenshtein atau gunakan fungsi Python seperti ini:
from django.db.models import Q from .models import User # Assume User is your user model def levenshtein_distance(a, b): n, m = len(a), len(b) if n > m: a, b = b, a n, m = m, n current_row = range(n + 1) # Keep current and previous row for i in range(1, m + 1): previous_row, current_row = current_row, [i] + [0] * n for j in range(1, n + 1): add, delete, change = previous_row[j] + 1, current_row[j - 1] + 1, previous_row[j - 1] if a[j - 1] != b[i - 1]: change += 1 current_row[j] = min(add, delete, change) return current_row[n]
Dalam isyarat atau perisian tengah anda, bandingkan data yang dimasukkan dengan data dalam pangkalan data untuk mencari entri yang serupa.
from django.db.models import Q from .models import User # Assume User is your user model def detect_similar_entries(email, threshold=2): users = User.objects.filter(~Q(email=email)) # Exclure l'utilisateur actuel similar_users = [] for user in users: distance = levenshtein_distance(email, user.email) if distance <= threshold: similar_users.append((user, distance)) return similar_users
Gunakan isyarat post_save untuk menjalankan semakan ini selepas pengguna mendaftar atau mengemas kini:
from django.db.models.signals import post_save from django.dispatch import receiver from .models import User from .utils import detect_similar_entries # Import your function @receiver(post_save, sender=User) def check_for_fraud(sender, instance, **kwargs): similar_users = detect_similar_entries(instance.email) if similar_users: print(f"Potential fraud detected for {instance.email}:") for user, distance in similar_users: print(f" - Similar email: {user.email}, Distance: {distance}")
Untuk menjejaki penipuan yang disyaki, anda boleh mencipta model FraudLog:
from django.db import models from django.contrib.auth.models import User class FraudLog(models.Model): suspicious_user = models.ForeignKey(User, related_name='suspicious_logs', on_delete=models.CASCADE) similar_user = models.ForeignKey(User, related_name='similar_logs', on_delete=models.CASCADE) distance = models.IntegerField() created_at = models.DateTimeField(auto_now_add=True)
Simpan padanan yang mencurigakan dalam templat ini:
from django.db.models import Q from .models import User # Assume User is your user model def levenshtein_distance(a, b): n, m = len(a), len(b) if n > m: a, b = b, a n, m = m, n current_row = range(n + 1) # Keep current and previous row for i in range(1, m + 1): previous_row, current_row = current_row, [i] + [0] * n for j in range(1, n + 1): add, delete, change = previous_row[j] + 1, current_row[j - 1] + 1, previous_row[j - 1] if a[j - 1] != b[i - 1]: change += 1 current_row[j] = min(add, delete, change) return current_row[n]
Dengan pendekatan ini, anda telah melaksanakan sistem pengesanan penipuan berdasarkan jarak Levenshtein. Ia membantu mengenal pasti entri serupa, mengurangkan risiko mencipta akaun penipuan atau menduplikasi data. Sistem ini boleh dikembangkan dan boleh dilaraskan untuk memenuhi keperluan khusus projek anda.
Atas ialah kandungan terperinci Melaksanakan Sistem Pengesanan Penipuan dengan Jarak Levenshtein dalam Projek Django. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!