Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Распознование смысла текста
Flash Zone Forum > Общие форумы > Флейм
chingachgoog
Следующий абзац был обработан составленной мной программой, так чтобы часть внутренних букв перемешивалась, а иногда даже удалялась или добавлялась. Кто как смог прочитать текст?


Вашнжйеую роль играют яссонть и тотнчсоь речи. Совсем неортспо найти слова адвктаено, точно отражающие мысль. У писалетя, поэта есть время на эти “муки слова”, у гогорящево — нет. Амтрфносоь, вялость мысли, убогий л΅еисккон, ниакзя общая кутьрула заюосярт речь лишними, двнсмыулснеыми славоми и вынажериями. Послтшайуе внаметьлино, как отчевают на какоб-йило воорпс тенеоигилнвозо коернсроедтнпа наши почитилеские лиреды и деятели кульруты: “Э-э-э, видите ли...” Без этого обьзяталонего “видите ли” или “знаете ли” не могут натичань горотивь бошьлинство деятелей кутьрулы или арситты, прютениудщее на интетлиглнонтсеь. Хороший совет соврнменеым “масретам слова” давал аϖнтиынчй римский учетиль кррсчонеаия Квинииллтан: “Говори так, чтобы тебя незьля было не потянь”.
MustLive
chingachgoog

Я вижу ты решил сделать программу не тему "не имеющего значения порядка букв в слове" smile.gif.

Это как известный текст:

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

Только ты использовал другой текст, потому он выглядит более свежо. Ну и алгоритм программы у тебя более сложный, чем простая перестановка (хотя в основном используется именно перестановка букв).
chingachgoog
Цитата(MustLive @ 30.11.2009 - 19:10) *
Ну и алгоритм программы у тебя более сложный, чем простая перестановка (хотя в основном используется именно перестановка букв).


В общем да. Суть взята из этого давно известного "исследования". Но захотелось написать конвертер самому и посмотреть на результаты.
Получилось, что если оставлять только первую и последнюю буквы, то распознать текст ОЧЕНЬ сложно. Поэтому я оставляю костяк (половину букв), а то что между ними - перемешиваю. После этого в редких случаях добавляю или удаляю какую-нибудь букву.

Как-то так smile.gif
Кстати, очень похоже, что эти "исследования английского университета" тоже не тотально перемешивали буквы.

На коленке это было сделано так:

Код
onMouseDown=function(){
    ot.text=convertTo(it.text)
}

// ot - динамическое поле вывода
// it - поле ввода 

function convertTo(txt){
    var arrText0=txt.split(" ")
    for (var i=0; i<arrText0.length; i++){
        var word=arrText0[i]
        if (word.length>3) {
            var ix0=1
            
            for (var ixk=word.length-1; ixk>ix0; ixk--){
                if ((word.charCodeAt(ixk)>64 && word.charCodeAt(ixk)<91) || (word.charCodeAt(ixk)>96 && word.charCodeAt(ixk)<123) || (word.charCodeAt(ixk)>1039 && word.charCodeAt(ixk)<1104)) break
            }
            if ((ixk-ix0)<2) continue // нет пространства для перемешивания букв
            
            var txt1=word.substring(ix0,ixk) // перемешиваемая область
            txt1=f_break(txt1)
            arrText0[i]=word.substring(0,1)+txt1+word.substring(ixk)
        }
    }
    return arrText0.join(" ")
}

function f_break(txt){
    var arrTxt=[]
    var strToChange=""
    for (var i=0; i<txt.length; i++){
        if (i%2) {
            arrTxt[i]=null
            strToChange+=txt.charAt(i)
        } else {
            arrTxt[i]=txt.charAt(i)
        }
    }
    var arrFromChange=f_change(strToChange).split("")
    
    for (var i=0; i<arrTxt.length; i++){
        if (arrTxt[i]==null) arrTxt[i]=arrFromChange.shift()
    }
    
    var endText=arrTxt.join("")
    
    var rnd=random(100)
    switch (rnd){
        case 0:
            arrTxt.splice(random(arrTxt.length),1) // случайно удаляем один символ
            endText=arrTxt.join("")
            break;
        case 1:
            var letter=String.fromCharCode(random(1169)-65)
            var idx=random(arrTxt.length)
            endText=endText.substring(0,idx)+letter+endText.substring(idx)
    }
    return     endText    
}

function f_change(txt){
    var arrText0=txt.split("")
    var arrText2=[]
    while(arrText0.length){
        arrText2.push(arrText0.splice(random(arrText0.length),1)[0])
    }
    return arrText2.join("")
}
HaWK
Так в принципе я не плохо разобрал твой текст, chingachgoog, но приведённый МастЛивом мне показался легче в прочтении.

chingachgoog
Я сейчас присмотрелся к тексту от MustLive и заметил, что там перемешиваются тройки букв. Т.е. слово разбивается по три буквы (кроме первой и последней) и эти три буквы между собой перемешиваются. В результате в длинном слове буква не может улететь от своего места дальше 2-х позиций. Что, несомненно, облегчает прочтение.

У меня принцип иной. Я оставляю забор из букв: СИнХрОфАзОтРоН → СИ Х О А О Р Н
а остальные буквы перемешиваю полностью в случайном порядке и заполняю пустоты. В результате буква может улететь очень далеко.
Плюс добавляется случайное изменение слова путем добавления/вырезания случайного символа.
Видимо это усложняет прочтение по сравнению с вариантом MustLive smile.gif

Но каждый может поиграться сам - код есть )))
HaWK
Цитата
Но каждый может поиграться сам - код есть )))

Ну чтож понятно, попробую поиграться  smile.gif
MustLive
Цитата
На коленке это было сделано так

chingachgoog, интересный алгоритм.

Исследователям из "анлигйсикх унвиертисетов" пригодится smile.gif.

Цитата
попробую поиграться

Все желающие могут поиграться с этим кодом. Кому нравится читабельность текстов сделанных данным алгоритмом, то пусть его используют, или переделают немного, чтобы получить интересные словоформы. А кому больше нравиться читабельность текстов как приведённый мною оригинальный пример "искажённого текста", то пусть переделают алгоритм соответствующим образом.
Русская версия IP.Board © 2001-2013 IPS, Inc.