Показывая линии конги, неверную лесбиянку и Old Spice Man.

Недавно я наткнулся на этот пост в блоге о поиске самых интересных анаграмм в словаре Вебстера. Следующий шаг был очевиден. Попробуйте воспроизвести результаты с помощью одного из самых успешных примеров пользовательского контента Web 2.0: Urban Dictionary.

Для тех, кто не знаком, Urban Dictionary содержит около двух с половиной миллионов слов, фраз и вообще всего, что люди определили. Учитывая ошеломляющее количество контента, как могло не быть несколько замечательных анаграмм, ожидающих своего открытия?

Поиск анграмм

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

Приведите каждое слово к нормальной форме, чтобы два слова имели одинаковую нормальную форму тогда и только тогда, когда они являются анаграммами друг друга. В данном случае мы делаем это, сортируя буквы в алфавитном порядке, так что и мегалодон, и лунная поляна становятся адеглмноо.

После запуска программы я обнаружил 365 268 анаграмм из примерно двух с половиной миллионов слов. Это означает, что около 14% слов являются анаграммами. Это число было намного выше, чем я ожидал.

Fun Quirks of Urban Dictionary

Urban Dictionary,в отличие от, скажем,словаря Websters, не имеет какой-либо формы курирования или контроля стандартов. Многие записи кажутся бессмысленными, и во многих случаях очевидно, что они были написаны только для того, чтобы развлечь автора. Это усложняет работу с набором данных во многих отношениях.

Было найдено более 80 анаграмм, совпадающих с abcdefghijklmnopqrstuvwxyz. То есть в Urban Dictionaryсуществует 80 различных вариантов букв алфавита. Большинство, например kjhgfdsazxcvbnmlpoiuytrewq, имели определения, которые ссылались на крайнюю скуку. Затем были более эзотерические вопросы, такие как викторина cwm fjord-bank glyphs vext, которые, по-видимому, можно было использовать в реальном разговоре. Я очень скептичен.

Одно важное замечание: во время этого анализа я решил игнорировать символы в анаграмме. Как и в случае с палиндромами, я полагал, что игнорирование знаков препинания и символов позволяет создавать гораздо более интересные анаграммы. Иначе у нас никогда не было бы палиндромов типа «человек, план, канал, Панама». Однако я был не готов к огромному количеству символов, используемых в Urban Dictionary. Было двадцать пять анаграмм, соответствующих bd. Это казалось мне невозможным, пока я не начал внимательно изучать некоторые из них. Несколько примеров:

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

Каждая проблема, возникающая при поиске анаграмм в словаре Вебстера, в Urban Dictionary кажется комичной. Если вы наивно полагаете, что самые длинные анаграммы должны быть самыми интересными, вы были бы разочарованы, но не слишком расстроены, обнаружив в словаре Вебстера, что «холецистодуоденостомия» и «дуоденохолецистостомия» имеют название. Эти слова даже не такие длинные. Однако в наборе данных Urban Dictionary все обстоит иначе. Эти две пары анаграмм, каждая из которых содержит более двухсот символов, являются самыми длинными парами:

Неудивительно, что определения обоих этих слов можно резюмировать как состояние чрезвычайно скучно.

Ранжирование анаграмм

Имея более 300 000 анаграмм, мне нужен был способ отделить самые интересные анаграммы от остальных. Опять же, это сообщение в блоге сделало тяжелую работу и предложило умную и интуитивную идею для оценки анаграмм. Подход прост: самые интересные анаграммы получаются тогда, когда каждое слово находится как можно дальше друг от друга.

Другими словами, сколько фрагментов потребуется от первого слова, чтобы его можно было преобразовать во второе слово? Например, для слов elbow и ниже нужны только 3 фрагмента: el-b-ow -› b-el-ow, на итоговую оценку 3.

Для подсчета правильного балла для каждой пары слов необходим довольно сложный алгоритм, основанный на преобразовании слов в структуру графа. Имея дело с ограничениями большего набора данных, я написал близкое приближение, которое нашло оценку, которая обычно была достаточно хорошей, и ее можно найти здесь. Одним из важных следствий этого подхода является то, что максимальная оценка для двух слов будет равна длине каждого слова, поскольку фрагментов никогда не может быть больше, чем букв. Таким образом, слова с высокой оценкой должны соответствовать определенному требованию длины, чтобы даже быть рассмотренными. Однако непреднамеренным побочным эффектом является то, что высокий балл может быть легко достигнут, если слова написаны наоборот, что на удивление часто встречается в Urban Dictionary. Отличным примером являются abcdefghijklmnopqrstuvwxyzиzyxwvutsrqponmlkjihgfedcba, которыев сумме даютпотрясающую оценку 26. Я удалил их и многие другие подобные, чтобы сосредоточиться на реальных словах и фразах.

15 лучших

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

  1. классное невежествоСтрашные конгалины (15)
  2. Snickers slapperблестящая принцесса (14)
  3. shapesturbatingстручковая фасоль (14)
  4. очки эйфорииполировщик колбасы (14)
  5. Чад небрежныйЧистка собаки (14)
  6. Восклицательный знакмексиканская больница (14)
  7. круг стокаТехнический райдер (14)
  8. Альфонс ЭлрикПольский чистильщик (13)
  9. Death SomethingМендота-Хайтс (13)
  10. американский английскийInhale Screaming (13)
  11. Баллистическая терапияРеалистичная пощечина (13)
  12. Вытащить КриссиТропическая жижа (13)
  13. астрамполинспермасионал (13)
  14. Ногти на ногах Гандидерьмо и бензин (13)
  15. Масонский храмособый момент (13)

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

Некоторые из моих фаворитов, которые также не забили:

И хотя он не так хорош, на мой взгляд, явным победителем является:

Это история из 5 слов, полностью состоящая из анаграмм!