Торговля доменными именами - это большой бизнес. Одним из наиболее полезных инструментов для торговли доменными именами является инструмент автоматической оценки, позволяющий легко оценить, сколько стоит данный домен. К сожалению, многие службы автоматической оценки требуют членства / подписки для использования. В этом задании вы напишите простой инструмент оценки, который может приблизительно оценить значения доменов .com.
Ввод, вывод
В качестве входных данных ваша программа должна взять список доменных имен, по одному на строку. Каждое доменное имя будет соответствовать регулярному выражению ^[a-z0-9][a-z0-9-]*[a-z0-9]$
, что означает, что оно состоит из строчных букв, цифр и дефисов. Каждый домен имеет длину не менее двух символов и не начинается и не заканчивается дефисом. Значение .com
опускается в каждом домене, поскольку оно подразумевается.
В качестве альтернативной формы ввода вы можете принять доменное имя в виде массива целых чисел, а не строки символов, если вы указываете желаемое преобразование символа в целое число.
Ваша программа должна вывести список целых чисел, по одному на строку, в котором указаны оценочные цены соответствующих доменов.
Интернет и дополнительные файлы
Ваша программа может иметь доступ к дополнительным файлам, если вы предоставите эти файлы как часть вашего ответа. Ваша программа также имеет доступ к файлу словаря (список допустимых слов, которые вы не должны предоставлять).
(Изменить) Я решил расширить эту задачу, чтобы позволить вашей программе получить доступ к Интернету. Есть пара ограничений: ваша программа не может искать цены (или историю цен) каких-либо доменов и использует только ранее существующие сервисы (последний скрывает некоторые лазейки).
Единственное ограничение на общий размер - это ограничение размера ответа, установленное SE.
Пример ввода
Это несколько недавно проданных доменов. Отказ от ответственности: хотя ни один из этих сайтов не выглядит вредоносным, я не знаю, кто их контролирует, и поэтому советую не посещать их.
6d3
buyspydrones
arcader
counselar
ubme
7483688
buy-bikes
learningmusicproduction
Пример вывода
Эти цифры реальны.
635
31
2000
1
2001
5
160
1
счет
Оценка будет основана на «разнице логарифмов». Например, если домен продан за 300 долларов, а ваша программа оценила его в 500 долларов, ваш счет для этого домена будет равен abs (ln (500) -ln (300)) = 0,5108. Ни один домен не будет иметь цену менее $ 1. Ваш общий балл - это ваш средний балл для набора доменов, с более низкими баллами.
Чтобы получить представление о том, каких результатов вы должны ожидать, просто угадав константу 36
для приведенных ниже данных о тренировках, вы получите оценку около 1.6883
. Успешный алгоритм имеет оценку меньше, чем это.
Я решил использовать логарифмы, потому что значения охватывают несколько порядков, и данные будут заполнены выбросами. Использование абсолютной разности вместо квадрата разницы поможет уменьшить влияние выбросов в оценке. (Также обратите внимание, что я использую натуральный логарифм, а не основание 2 или основание 10.)
Источник данных
Я просмотрел список из более чем 1400 недавно проданных доменов .com с Flippa , веб-сайта аукциона доменов. Эти данные составят набор обучающих данных. После того, как период подачи заявок закончится, я подожду еще месяц, чтобы создать тестовый набор данных, с помощью которого будут оцениваться заявки. Я мог бы также выбрать сбор данных из других источников, чтобы увеличить размер учебных / тестовых наборов.
Данные об обучении доступны по следующей теме. (Отказ от ответственности: хотя я использовал некоторую простую фильтрацию для удаления некоторых явных доменов NSFW, некоторые из них все еще могут содержаться в этом списке. Кроме того, я не советую посещать любой домен, который вы не узнаете .) Цифры справа настоящие цены. https://gist.github.com/PhiNotPi/46ca47247fe85f82767c82c820d730b5
Вот график распределения цен на обучающий набор данных. Ось X - натуральный логарифм цены с осью Y, считая. Каждая полоса имеет ширину 0,5. Пики слева соответствуют 1 и 6 долл. США, поскольку исходному веб-сайту требуются ставки, чтобы увеличить их как минимум на 5 долл. США. Тестовые данные могут иметь немного другое распределение.
Вот ссылка на тот же график с шириной бара 0,2. На этом графике вы можете увидеть пики в $ 11 и $ 16.
источник
Ответы:
Perl, 1.38605
Я подумал, что должен пойти дальше и опубликовать свое собственное представление, в надежде, что это подстегнет конкуренцию. Его оценка
1.38605
означает, что он, как правило, отключен3.999
(это был мой остановочный пункт). Я не использовал никаких библиотек машинного обучения, просто прямо на Perl. Требуется доступ к словарю; Я использовал один отсюда .Пожалуйста, не стесняйтесь использовать некоторые цифры / статистику из моей программы самостоятельно.
Вот график, сделанный моей оценочной программой, показывающий разброс графика оценки по фактической цене и гистограмму ошибок. На диаграмме рассеяния
.:oO@
обозначены10, 20, 30, 40, 50
домены в этой точке соответственно. На гистограмме каждыйO
представляет 16 доменов.Масштаб установлен на
1 character width = e^(1/3)
.Есть три основных шага к этой программе. Результаты каждого шага умножаются вместе.
Категоризация по классу символов и длине. Он определяет, является ли домен всеми буквами, всеми цифрами, буквами и цифрами или содержит ли он дефис. Затем он дает числовое значение, определяемое длиной домена. Я обнаружил, что при длине 5 наблюдается странное падение значения. Я подозреваю, что это связано с выборкой: более короткие домены ценны из-за их длины (даже если буквы бессмысленны), в то время как большинство более длинных доменов, как правило, являются словами / фразами. Я приказываю предотвратить переоснащение, я накладываю ограничение на то, что домены не могут быть оштрафованы за то, что они короче (поэтому длина 5 по крайней мере так же хороша, как длина 6).
Оценка содержания слова. Я использую словарь, чтобы определить длину левого и правого слова в доменном имени. Например,
myawesomesite -> my & site -> 2 & 4
. Затем я пытаюсь выполнить некоторые настройки, основываясь на том, какая доля доменного имени состоит из этих слов. Низкие значения обычно указывают на то, что домен не содержит слова, содержит множественное / измененное слово, отсутствующее в словаре, содержит слово, окруженное другими символами (внутренние слова не обнаружены, хотя я пытался это сделать без улучшения), или содержит Фраза из нескольких слов. Высокие значения указывают, что это одно слово или, скорее всего, фраза из двух слов.Оценка содержания персонажа. Я искал подстроки, которые содержались во многих доменах и которые, казалось, влияли на значения домена. Я полагаю, что это вызвано тем, что определенные типы слов более популярны / более привлекательны по разным причинам. Например, письмо
i
появилось примерно в половине доменов (741 из них) и увеличивает стоимость домена в среднем примерно на 12%. Это не переоснащение; там что-то настоящее, чего я не до конца понимаю. Письмоl
появляется в 514 доменах и имеет коэффициент 0,84. Некоторые из менее распространенных букв / орграфов,ne
которые появляются 125 раз и имеют очень низкий коэффициент 0,56, могут быть переобучены.Чтобы улучшить эту программу, мне, вероятно, понадобится какое-то машинное обучение. Кроме того, я мог бы искать взаимосвязи между длиной, содержанием слов и содержанием символов, чтобы найти более эффективные способы объединения этих отдельных результатов в общую ценность оценки.
источник