Извлечение слов из домена - PullRequest
       7

Извлечение слов из домена

2 голосов
/ 26 сентября 2011

У меня есть несколько доменов, которые я хотел бы взорвать на слова. Я загрузил список слов из wordlist.sourceforge.net и начал писать сценарий типа грубой силы для запуска каждого домена через список словарей.

Проблема в том, что я не могу получить достаточно хорошие результаты. Простой скрипт, который я сделал, выглядит следующим образом:

foreach($domains as $dom) {
    $orig_dom = $dom;
    foreach($words as $w) {
        $pos = stristr($dom,$w);
        if($pos) {
            $wd[$orig_dom][] = $w;
        }
    }
}

$ words - это словарный массив, а домены - это просто массив доменных имен.

Результаты выглядят так:

[aheadsoftware] => Array
    (
        [0] => ahead
        [1] => head
        [2] => heads
        [3] => soft
        [4] => software
        [5] => ware

Технически это работает, но я не знаю, как кодировать, это хитрость, позволяющая сценарию понять, что если вы соответствуете «впереди», у вас больше нет «головы» или «головы». Следует также понимать, что нужно выбирать «программное обеспечение» вместо «программный» и «программный». Да, я знаю, мир лингвистических вычислений - это чистая боль;)

1 Ответ

0 голосов
/ 26 сентября 2011

Наивным решением может быть каждый раз, когда у вас есть совпадение, и перед тем, как добавить слово в результаты, выполните еще один stristr поиск и посмотрите, содержится ли слово, которое вы пытаетесь вставить в результаты, в любомслова уже там.Если это так, не добавляйте его.

Это не будет работать, например, если домен содержит «заголовки», а ваш словарь сначала перечисляет «заголовок».Скорее всего, к результатам добавляются «головы», а не «голова».

Вы можете обойти это ограничение, проверив, какое из них длиннее.Если слово, содержащееся в ваших результатах, длиннее, не добавляйте новое слово. Если новое слово длиннее, удалите слово, уже находящееся в результатах, и добавьте новое в.

...