E-posta adresinden isimleri çıkarın

Nov 02 2020

Diyelim ki iki e-posta adresim var ve bunların aynı kişiye ait olup olmadıklarını görmek istiyorum. Örneğin, [email protected]ve [email protected](o ihtimalini temin yeterli olacaktır, emin olmak zorunda değildir) aynı kişiden olması muhtemeldir.

Bunu başarmak için aklımda iki yön vardı, biri iki e-posta adresi arasında bir dizi karşılaştırması, diğeri ise önce e-posta adreslerinden isimleri çıkarmak ve sonra aynı kişi olup olmadıklarını karşılaştırmak. Yukarıdaki örnekte olduğu gibi, çıkarılan isimler Cameron M Thompsonve olmalıdır c thompson.

Ayrıca, e-posta adreslerinden birinin tam adı içermesinin garanti edilip edilmediğini (genellikle şirket e-posta adreslerinin tam adını içerir), diğer e-posta adresindeki adın alınmasına yardımcı olup olmayacağını (kişisel e-posta adresleri her zaman içermeyebilir) merak ediyorum. tam adı) veya bu iki e-posta adresinin karşılaştırılmasına yardımcı olur mu.

Yukarıdaki iki yönden herhangi birinin uygulanabilir olup olmadığını anlamaya çalışırken çok zorlandım. Özellikle e-posta adresleri ayırıcılara sahip olmadığında ve adlar çok farklılık gösterebildiğinde, bir giriş bir eşleşme bulmak için yeterli olmayabilir.

Bu sorunu çözmeye nasıl devam etmeliyim? Makine öğrenimi / derin öğrenme yardımcı olur mu, yoksa normal ifade ve bulanık dize eşleşmesi gibi basit bir şeyle mi gitmeliyim?

GÜNCELLEME: İki sütun, e-posta adresi ve adı ve orada yaklaşık 2k satırı olan bir veri kümem var. Bunun ikinci yön (isim çıkarma) için kullanılabileceğine inanıyorum. İlk yön için (dizi karşılaştırma benzerliği), veri kümesini üç sütuna (e-posta adresi 1, e-posta adresi 2, aynı kişi olup olmadıklarının etiketi) değiştirmeyi düşünüyorum, bu da yaklaşık 1 bin veri satırı vermelidir.

Yanıtlar

1 ShahriyarMammadli Nov 02 2020 at 23:48

Çözümden bahsetmeden önce neden içeriğe odaklanmıyorsunuz? E-posta adreslerinin çoğunun gönderenin işareti olan Ad Soyad ile bittiğini göz önünde bulundurarak sorununuzu çözmenin daha faydalı olacağını düşünüyorum.. Ayrıca, bu bilgileri bir e-posta adresinden edinememe olasılığı, içeriği içerikten alamama olasılığından çok daha yüksektir. Özellikle, e-posta adresinde tam adı içermeyen şirket e-posta adreslerinde durum böyledir (adın ilk harfi ve soyadı, örneğin John Travolta - [email protected]), ancak yazarın tam adını içermesi gerekir (en azından adı) sonunda. Ayrıca, çok sayıda e-posta adresinin yalnızca ad veya soyad içereceğini veya hiçbirini içermeyeceğini, ancak superboy122133@+++.com gibi ikame edici sözcükler olacağını düşünün: D. Ancak e-posta uygulamalarının çoğu, ad ve soyad içeren varsayılan bir işaret içerir. Ayrıca bu iki tekniği birleştirebilirsiniz. Yani, e-posta adresi verilerini e-posta içerik verileriyle birleştirin, böyleceBunlardan birinden veri elde etmek mümkün değilse veya uygulanamazsa, başka bir tane kullanabilirsiniz.

Ancak, bunu bir e-posta adresinden başka bir şeyle yapmanız gerektiğini varsayalım, Makine Öğrenimi tekniklerini kullanmanın sorunu abarttığını veya abarttığını düşünüyorum. Ayrıca, makine dışı öğrenme tekniklerini kullanmak çözümü basitleştirdiğiniz anlamına gelmez, tüm bu teknikler doğru bağlamda uygulandıklarında en iyi sonucu verir. Basit bir durum hayal edelim: Eğer [vergi] = 0,2 * [maaş] + 20 $ olduğunu biliyorsanız veya kolayca çıkarabiliyorsanız, Makine Öğrenimini kullanarak bu denklemi neden buldunuz (veya uyuyorsunuz)?

E-posta adresi, tam ad | biçiminde verileriniz olmadığı sürece, Makine Öğrenimini kullanmaya başlamamalısınız. (Bir seçenek olarak | e-posta adresi, tam ad | veriye sahip olsaydınız, e-posta adresi ile tam ad arasındaki genel ilişkiyi öğrenmek için bir model eğitirsiniz, böylece benzer e-posta adreslerini belirlersiniz).

Bununla birlikte, bu mevcut durumda, bir yaklaşım, e-posta adreslerinde tüm olası kalıpları bulmak olacaktır. Hangisi olabilir

  • ad ve soyadın ilk harfi jtravolta@+++.com
  • ad, özel karakterler ve soyad john_travolta@+++.com
  • isim ve numaralar john1954@+++.com
  • ...

Daha sonra, tanımlanmış örüntüler kullanılarak e-posta adreslerinden çıkarılan bu özellikler, karma veya dizi mesafe algoritmaları kullanılarak diğer e-postalarla karşılaştırılabilir.

Alternatif bir yaklaşım, mevcut tüm adların ve soyadların karma bir sözlüğüne sahip olmaktır, ardından e-posta adresinden parçaları (alt dizeleri) kesip ad ve soyadları adresten bulmak için bunlara hash uygulayabilirsiniz (Elbette bunun tersi de oldukça verimsiz olacaktır. ). En benzer özelliklere sahip e-posta adresleri eşleştirilir.

Başka bir çözüm, yukarıda belirtilen kalıpları kullanarak bir sürü yapay e-posta adresi oluşturabilirsiniz. Kişilerin adı ve soyadı ile bir veya daha fazla e-posta adresini içeren bir veri setinin bulunmaması büyük olasılıkla, veri artırma işin ilk sırasını oluşturuyor. (Veri büyütme teriminin bu duruma uyup uymadığından emin değilim. Eğer uymuyorsa veri üretimi diyelim). Dolayısıyla, girişiniz Ad Soyad (ikinci ad, numara vb. Ekleyebilirsiniz) olacaktır ve çıktı, önceden tanımlanmış modellere göre rastgele oluşturulmuş e-posta adresleri olacaktır. Tek bir giriş için oluşturulan e-postaların sayısı da rastgele seçilmelidir, ancak aynı e-posta adresinin bir defadan fazla oluşturulması konusunda dikkatli olun. Örneğin giriş -> John Travolta -> çıktı -> j_travolta12@+++.com,john.t.99@+++.com, john.travolta@+++.com (Bu örnek için oluşturulacak rastgele 3 e-posta seçtiğimizi varsayalım).

Ardından, tüm olası (neredeyse) kalıpları içeren e-posta adreslerini oluşturduktan sonra, Makine Öğrenimi tekniklerinden yardım alabilirsiniz. Dolayısıyla model size ilgili ad ve soyad ile bir olasılık verebilir. (Ayrıca, çıktıyı, size daha yüksek olasılığa sahip ilk n ad ve soyadını verecek şekilde yapılandırabilirsiniz)

Dikkate alınması gereken bir diğer husus, iki farklı kişinin aynı isim ve soyadına sahip olma olasılığıdır. Son olarak, hangi yaklaşımı kullanmaktan bağımsız olarak, çözümünüz mükemmel olamaz çünkü, örneğin, e-posta adresinde 'j' karakterinin John veya Jake'i temsil edip etmediğini anlamak mümkün değildir. Bu nedenle, e-posta içeriğini çözümünüze entegre edebilirseniz, performansı büyük ölçüde artıracaktır.

Buna Göre Güncelle: Sorununuza tam olarak cevap vermeyen bu yanıtı kontrol edin , ancak bağlam aynıdır.