Alan Adı Değerlendirme


25

Alan adı ticareti büyük bir iştir. Alan adı ticareti için en faydalı araçlardan biri, otomatik bir değerlendirme aracıdır, böylece belirli bir alanın ne kadar değerli olduğunu kolayca tahmin edebilirsiniz. Ne yazık ki, birçok otomatik değerlendirme hizmeti kullanmak için üyelik / abonelik gerektirmektedir. Bu zorlukla, .com etki alanlarının değerlerini kabaca tahmin edebilecek basit bir değerlendirme aracı yazacaksınız.

Giriş çıkış

Girdi olarak, programınız her satırda bir tane olan alan adlarının bir listesini almalıdır. Her etki alanı adı, regex ile eşleşir ^[a-z0-9][a-z0-9-]*[a-z0-9]$, yani küçük harflerden, sayılardan ve kısa çizgilerden oluşur. Her etki alanı en az iki karakter uzunluğundadır ve ne bir tire ile başlar ne de biter. .comO ima edildiğinden, her bir alandan gelen atlanırsa.

Alternatif bir girdi biçimi olarak, istediğiniz karakter-tamsayı dönüşümünü belirttiğiniz sürece, bir etki alanı adını bir karakter dizesi yerine tamsayı dizisi olarak kabul etmeyi seçebilirsiniz.

Programınız, her bir satır için bir tane olmak üzere tamsayıların bir listesini çıkarmalı ve bu da ilgili alanların değerlendirilmiş fiyatlarını vermelidir.

İnternet ve Ek Dosyalar

Programınız, bu dosyaları yanıtınızın bir parçası olarak sağladığınız sürece ek dosyalara erişebilir. Programınız ayrıca bir sözlük dosyasına da (girmeniz gerekmeyen geçerli sözcüklerin bir listesine) erişebilir.

(Düzenle) Programınızın internete erişmesine izin vermek için bu zorluğu genişletmeye karar verdim. Programınızın hiçbir alan adının fiyatlarına (veya fiyat geçmişlerine) bakamaması ve yalnızca önceden varolan hizmetleri (bazı boşlukları örtmek için kullanılır) kullanmaması nedeniyle birkaç kısıtlama vardır.

Toplam ebat üzerindeki tek limit, SE tarafından uygulanan cevap ebat sınırıdır.

Örnek giriş

Bunlar yakın zamanda satılan bazı alanlardır. Feragatname: Bu sitelerden hiçbiri kötü görünmese de, onları kimin kontrol ettiğini ve bu nedenle onları ziyaret etmemek için tavsiyelerde bulunduğumu bilmiyorum.

6d3
buyspydrones
arcader
counselar
ubme
7483688
buy-bikes
learningmusicproduction

Örnek çıktı

Bu sayılar gerçek.

635
31
2000
1
2001
5
160
1

puanlama

Puanlama, "logaritma farkı" na dayanacaktır. Örneğin, bir alan adı 300 ABD doları için satıldıysa ve programınız bunu 500 ABD doları olarak değerlendirdiyse, o alan için puanınız abs (ln (500) -ln (300)) = 0,5108 olur. Hiçbir etki alanı 1 dolardan az bir fiyata sahip olamaz. Genel puanınız, daha düşük puanların daha iyi olduğu bir dizi alan için ortalama puanınızdır.

Hangi puanları beklemeniz gerektiğine dair bir fikir edinmek 36için, aşağıdaki eğitim verilerinin sabitini tahmin etmek yaklaşık bir sonuçla sonuçlanır 1.6883. Başarılı bir algoritma bundan daha az bir puana sahiptir.

Logaritmayı kullanmayı seçtim çünkü değerler birkaç büyüklük derecesine yayıldı ve veriler aykırı değerlerle doldurulacak. Farklılık kareleri yerine mutlak farkın kullanılması, aykırı değerlerin puanlamadaki etkisini azaltmaya yardımcı olacaktır. (Ayrıca, temel 2 veya taban 10 yerine doğal logaritmayı kullandığımı unutmayın.)

Veri kaynağı

Bir etki alanı açık artırma sitesi olan Flippa'dan , son zamanlarda satılan .com alan adlarının listesini inceledim . Bu veriler eğitim veri setini oluşturacaktır. Teslim süresi sona erdikten sonra, başvuruların puanlanacağı bir test verisi oluşturmak için ek bir ay bekleyeceğim. Eğitim / test setlerinin boyutunu artırmak için diğer kaynaklardan veri toplamayı da seçebilirim.

Eğitim verileri aşağıdaki aşamada mevcuttur. (Feragatname: Bazı NSFW etki alanlarını kaldırmak için bazı basit filtreler kullanmış olmama rağmen, hala bu listede yer alan birkaç kişi olabilir. Ayrıca, tanımadığınız herhangi bir alanı ziyaret etmemenizi tavsiye ederim .) Sağ taraftaki numaralar gerçek fiyatlar. https://gist.github.com/PhiNotPi/46ca47247fe85f82767c82c820d730b5

Eğitim verilerinin fiyat dağılımını gösteren grafik aşağıdadır. Doğal eksen fiyatının x eksenidir ve y ekseni sayılır. Her çubuğun genişliği 0,5'tir. Kaynak web sitesi için tekliflerin en az 5 $ 'a yükselmesi gerektiğinden soldaki artış 1 ve 6 $' a denk geliyor. Test verileri biraz farklı bir dağılıma sahip olabilir.

görüntü tanımını buraya girin

Burada 0,2 çubuk genişliğine sahip aynı grafiğe bir link verilmiştir. Bu grafikte sivri uçları 11 ve 16 dolar olarak görebilirsiniz.


Sadece bir kafa kafaya, en çok kullanılan digraphları kullanarak bir etki alanı skorlamak berbat bir şekilde çalışıyor! R² ≅ 0

2
Birisinin bunun için sinir ağını cevaplaması gerektiği belli .
user48538

1
Program internete bağlanabilir mi (örneğin, google sorgusu)? Açıkça elbette fiyatlara bakmak için değil, karakteristik olarak kullanmak için veri toplamak amacıyla.
Joe,

@Joe Üzgünüm cevap verme şansım olmadı ama internet erişimine izin vermeye karar verdim.
PhiNotPi

Yanıtlar:


3

Perl, 1.38605

Rekabeti körüklemek umuduyla, kendi gönderimimi yapıp göndermem gerektiğini düşündüm. Puanı 1.38605, genellikle 3.999(bu benim durma noktamdı) faktörü ile kapalı olduğu anlamına gelir . Makine öğrenim kitaplıkları kullanmadım, sadece Perl'e. Bir sözlüğe erişim gerektirir; Birisini buradan kullandım .

Lütfen programımın bazı sayılarını / istatistiklerini kendi programlarınızda kullanmaktan çekinmeyin.

use strict;

my %dict;
my $dictname = "dict.txt";
open(my $dfh, '<', $dictname);
while (my $row = <$dfh>) {
  chomp $row;
  $dict{lc $row} = 1;
}

my $domain = <>;
chomp($domain);

my $guess = 1;

if($domain =~ /^[a-z]*$/){
    my @bylength = (200000,20001,401,45,45,41,26,26,26,26,26,24);
  if(length($domain) < ~~@bylength+2){
    $guess *= $bylength[length($domain)-2];
  } else {
    $guess *= 18;
  }
} elsif ($domain =~ /^[0-9]*$/){
  my @bylength = (300000,30001,6000,605,50);
  if(length($domain) < ~~@bylength+2){
    $guess *= $bylength[length($domain)-2];
  } else {
    $guess *= 7;
  }
} elsif ($domain =~ /^[a-z0-9]*$/){
  my @bylength = (52300,523,28);
  if(length($domain) < ~~@bylength+2){
    $guess *= $bylength[length($domain)-2];
  } else {
    $guess *= 23;
  }
} else {
  my @bylength = (50000,500,42,32,32,31);
  if(length($domain) < ~~@bylength+2){
    $guess *= $bylength[length($domain)-2];
  } else {
    $guess *= 12;
  }
}

my $wordfact = 1;

my $leftword = 0;
for(my $i = 1; $i <= length($domain); $i++){
  my $word = substr $domain, 0, $i;
  if(exists($dict{$word})){
    $leftword = $i;
  }
}

$wordfact *= ($leftword/length($domain))**2 * 0.8 + ($leftword/length($domain)) * -0.1 + 0.9;

if($leftword/length($domain) >= 0.8){
  $wordfact *= 2.4;
}

my $rightword = 0;
for(my $i = 1; $i <= length($domain); $i++){
  my $word = substr $domain, length($domain)-$i, $i;
  if(exists($dict{$word})){
    $rightword = $i;
  }
}

$wordfact *= ($rightword/length($domain))**2 * 0.9 + ($rightword/length($domain)) * -0.2 + 1;         

$guess *= $wordfact;

my $charfact = 1;
my %charfacts = (
  i => 1.12, #500
  l => 0.84,
  s => 1.09,
  a => 0.94,
  r => 1.03,
  o => 0.97, 
  c => 1.22, #400
  d => 0.88,
  u => 1.07,
  t => 0.95,
  e => 1.08,
  m => 0.91, #300
  p => 1.08,
  y => 0.92,
  g => 0.97,
  ne => 0.56, #100
  n => 1.13,
  z => 0.67,
  re => 1.30,
  es => 0.75,
);
while(my ($key,$value) = each %charfacts){
  if($domain =~ /$key/){
    $charfact *= $value;
  }
}
$guess *= $charfact;

$guess = int($guess + 0.5);
if($guess <= 0){
  $guess = 1;
}

print $guess;

İşte puanlama programım tarafından yapılan ve gerçek fiyat üzerinden bir dağılım grafiği ve hataların histogramını gösteren bir grafik. Dağılım olarak işaretlemek .:oO@ortalama 10, 20, 30, 40, 50sırasıyla bu noktada etki. Histogramda her biri O16 alanı temsil eder.

Ölçek, olarak ayarlanmıştır 1 character width = e^(1/3).

görüntü tanımını buraya girin

Bu program için üç ana adım vardır. Her adımın sonuçları birlikte çarpılır.

  1. Karakter sınıfına ve uzunluğa göre sınıflandırma. Etki alanının tüm harfler, tüm sayılar, harfler ve sayılar olup olmadığını veya tire içermesini belirler. Daha sonra, alanın uzunluğu tarafından belirlenen sayısal bir değer verir. 5 civarında bir değerde tuhaf bir düşüş olduğunu buldum. Bunun örneklemeden kaynaklandığından şüpheliyim: kısa alanlar uzunlukları nedeniyle değerlidir (harfler saçma olsa bile), daha uzun alanlar kelime / kelime öbekleri olma eğilimindedir. Fazla takılmayı önlemek için alanların daha kısa olduğu için cezalandırılamayacağına dair bir kısıtlama koydum (bu nedenle uzunluk 5 en az uzunluk 6 kadardır).

  2. Kelime içeriğinin değerlendirilmesi. Bir etki alanı adındaki sol ve sağ kelimelerin uzunluklarını belirlemek için sözlüğü kullanırım. Örneğin myawesomesite -> my & site -> 2 & 4,. Sonra, etki alanı adının ne kadarının bu kelimeler tarafından oluşturulduğuna dayanarak biraz uydurma yapmaya çalışırım. Düşük değerler genellikle etki alanının bir kelime içermediğini, sözlükte olmayan çoğullaştırılmış / değiştirilmiş bir kelime içerdiğini, başka karakterlerle çevrili bir kelime içerdiğini gösterir (iyileştirme olmadan denememe rağmen, dahili kelimeler algılanmıyor) veya birkaç kelimeli cümle. Yüksek değerler, bunun tek bir kelime veya muhtemelen iki kelimelik bir cümle olduğunu gösterir.

  3. Karakter içeriğinin değerlendirilmesi. Etki alanlarında bulunan ve etki alanının değerlerini etkilediği görünen alt dizeleri aradım. Bunun, bazı nedenlerden dolayı bazı sözcük türlerinin daha popüler / daha çekici olmasından kaynaklandığını düşünüyorum. Örneğin, mektup ialan adının yaklaşık yarısında göründü (bunlardan 741'i) ve alan değerini ortalama% 12 arttırır. Bu çok uygun değil; Orada tam olarak anlamadığım gerçek bir şey var. Mektup l514 etki alanında görünür ve 0,84 faktörü vardır. ne125 kez görülen ve gerçekten düşük bir faktör olan 0.56 gibi daha az yaygın olan harflerin / digraph'ların bazıları çok çekici olabilir.

Bu programı geliştirmek için muhtemelen bir çeşit makine öğrenimi kullanmam gerekecek. Ayrıca, bu ayrı sonuçları genel değerlendirme değerinde birleştirmenin daha iyi yollarını bulmak için uzunluk, kelime içeriği ve karakter içeriği arasındaki ilişkileri arayabilirim.

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.