Подсветка естественного языка

    Идея такой подсветки у меня возникла в связи с законопроектом о приравнивании компьютерных языков иностранным 416D65726963612043616E20436F646520, рассмотренным конгрессом США в декабре 2013. Использование подсветки синтаксиса при создании программ уже давно принятая практика, но вопрос подсветки естественных языков на момент написания этого материала ограничивался парой коротких обсуждений на англоязычных форумах. Тем не менее, если можно облегчить визуальное восприятие текста путём автоматического выделения некоторых слов почему бы не попробовать.

    Компьютерные языки безусловно отличаются строгостью, конструкции обычно подсвечиваются в соответствии с выполняемой функцией (оператор, число, строка и т. д. ) и первой идеей, которая приходит в голову является аналогичная подсветка естественных текстов (подлежащее, сказуемое и т.д.) В качестве примера рассмотрим начало “Фантастического рассказа” Ф. М. Достоевского, выделим все подлежащие зелёным цветом, а сказуемые — синим:



    Подобная разметка требует довольно сложного анализа текста, но на мой взгляд подсветка не должна быть сложной (скорость работы алгоритма подсветки должна быть примерно того же порядка, что и скорость загрузки страницы), чтобы ею можно было комфортно пользоваться. Я решил остановиться на более простом варианте, а именно, на подсветке частотности, базируясь на идее, что чем чаще повторяется слово, тем меньше смысла оно несёт. Строго говоря, это конечно не верно, но если разметить уже указанный отрывок Достоевского, отмечая полужирным те слова, которые далее не используются в рассказе — получится следующее:



    Так как выделение слов очень сильно влияет на восприятие текста — полезно иметь собственное решение или решение, алгоритм которого открыт. По этой причине остаток статьи посвящается разработке такого расширения для chrome.

    Для начала напишем функцию, которая по заданному регулярному выражению обновляет словарь частотности слов:

    function collect(text, frequences, pattern) {
       var words = text.split(/\s+/); //  разбиваем по словам
       for (var j = 0; j < words.length; j++) {
             // каждое слово переводим в нижний регистр и убираем все неинтересные символы
    	 var current = words[j].toLowerCase().replace(pattern,'');
             // также исключаем слишком короткие слова
    	 if (!current || current.length < MIN_LENGTH) continue;
             // если слово отсутствует в частотном словаре -- добавляем его, если нет -- увеличиваем счётчик
    	 if (!frequences[current]) frequences[current] = 1;
    	 else frequences[current] += 1;
       }
    }
    


    Соберём статистику использования слов из DOM:

    var pattern = /[^а-яё]/g
    var freq = {}
    function stat(element) {
    	if (/(script|style)/i.test(element.tagName)) return; // не заходим внутрь стилей и скриптов
    	if (element.nodeType === Node.ELEMENT_NODE && element.childNodes.length > 0)
    		for (var i = 0; i < element.childNodes.length; i++)
    			stat(element.childNodes[i]);
    	
            // для непустых текстовых элементов вызываем collect
    	if (element.nodeType === Node.TEXT_NODE && (/\S/.test(element.nodeValue))) { 
    	   collect(element.nodeValue, freq, pattern);
      }
    }
    
    stat(window.document.getElementsByTagName('html')[0]);
    


    Затем, исключим из статистики те слова, которые встречаются чаще, чем нам это нужно:
    function remove(o, max) {
    	var n = {};
    	for (var key in o) if (o[key] <= max) n[key] = o[key];
    	return n;
    }
    freq = remove(freq, maxFreq);
    


    И наконец подсветим все вхождения интересных нам слов:

    function markup(element, pattern) {
    	if (/(script|style)/i.test(element.tagName)) return; // здесь также не заходим внутрь стилей и подпрограмм
    	if (element.nodeType === Node.ELEMENT_NODE && element.childNodes.length > 0) {
    		// для всех элементов, считаем частотность для элементов-потомков, чтобы не пытаться заменить то, чего нет
    		var freq = {};
    		for (var i = 0; i < element.childNodes.length; i++) 
    			if (element.childNodes[i].nodeType === Node.TEXT_NODE && (/\S/.test(element.childNodes[i].nodeValue)))
                        collect(element.childNodes[i].nodeValue, freq, pattern);
    					
    		if (freq && freq.length !== 0) {
    			var efreq = [];
    			var total = 0;
    			// оставляем только те слова, которые есть в глобальном словаре
    			// сохраняем их в виде пар [слово, частотность] с тем, чтобы можно было потом отсортировать по длине
    			// сортировка нужна для того, чтобы замена подслов не отменяла замены слова
    			for (var key in freq) if (freqRus[key]) efreq.push([key, freq[key]]);
    			efreq.sort(function(a, b) {return a[0].length - b[0].length});
    			// на всякий случай ограничиваем количество итераций цикла, поскольку мы добавляем ноды-потомки,
    			// а это может вызвать постоянное увеличение длины и бесконечный цикл
    			var max = element.childNodes.length*efreq.length*2;
    			for (var i = 0; i < element.childNodes.length; i++) {
    				if (total++ > max) break;
    				if (element.childNodes[i].nodeType === Node.TEXT_NODE) {
    					var minPos = -1, minJ = -1;					
    					// в каждом отдельном текстовом элементе ищем первое вхождение одного из интересных нам термов
    					for (var j in efreq) {
    						key = efreq[j][0];
    						var pos = element.childNodes[i].nodeValue.toLowerCase().indexOf(key);
    						if (pos >= 0 && (minJ === -1 || minPos>pos)) { minPos = pos; minJ = j; }
    					}
    					// и если таковой нашёлся -- заменяем его
    					if (minPos !== -1) {
    						key = efreq[minJ][0]; val = efreq[minJ][1];
    						// сначала разбиваем текст на начало, середину и конец, а потом заменяем середину тегом "strong"
    						var spannode = window.document.createElement('strong');
    						var middle = element.childNodes[i].splitText(minPos);
    						var endbit = middle.splitText(key.length);
    						var middleclone = middle.cloneNode(true);
    						spannode.appendChild(middleclone);
    						element.replaceChild(spannode, middle);
    					}
    				}
    			}
    		}
    	}	
       }
    }
    markup(window.document.getElementsByTagName('html')[0], pattern);
    


    Заключение


    Хорошо бы учитывать словоформы и возможно копить историю (то есть работать не в рамках одной страницы, а строить словарь частотности собирая всё вместе). Кроме того хорошо бы иметь возможность влиять на словарь (фиксировать там какие-нибудь слова, а какие-нибудь никогда не включать).

    Полностью приведённые примеры можно взять с github:
    github.com/parsifal-47/nalacol

    или сразу в виде приложения для Chrome:
    chrome.google.com/webstore/detail/natural-language-colorer/jjcldlhpnolppcclcgdbblbilmealfjd

    Я буду рад, если эта статья вдохновит читателей на создание какого-нибудь интересного алгоритма подсветки текстов на естественном языке.
    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 33

    • НЛО прилетело и опубликовало эту надпись здесь
        +2
        Для беглого ознакомления и ориентировки. Возможно я заблуждаюсь но мне кажется, что не мешает и сам уже немного подсел на эту раскраску, почти все сайты смотрю с ней
          0
          Лотов-стайл
          0
          Тоже не особо понял цель такой «разукраски». И еще — в «разноцветном» абзаце «занят» и «действительно» — это действительно(?) сказуемые? Почему не «был» (в первом случае) и, например, «есть» (во втором)?
            +1
            извиняюсь если ошибся, могу исправить
              0
              я не уверен на 100%, что у Вас ошибка, а я прав. Может тут кто-то более компетентный подскажет… )
            +12
            Можно еще гласные выделить красным, а согласные синим. По-моему в Букваре что-то такое было, в СССР еще.
              +1
              должно быть забавно, но довольно пёстро, возможно это будет полезно для караоке
                0
                должно быть забавно, но довольно пёстро, возможно это будет полезно для караоке

                Вы украли мой коммент к этой статье.
              +2
              В качестве примера рассмотрим начало “Фантастического рассказа” Ф. М. Достоевского, выделим все подлежащие зелёным цветом, а сказуемые — синим

              Так неправильно же выделил.

              Ну и да, это действительно не нужно, выделять надо ключевые слова, а не функции.
                +2
                Не совсем то же самое, но гдето рядом: я использую плагин www.beelinereader.com/, он выделяет текст таким образом, чтоб конец строки и соответствующее начало новой были одного цвета, а строки рядом — другово. Это облегчает поиск нужной строки при «переводе взгляда», и делает чтение в целом удобней.
                • НЛО прилетело и опубликовало эту надпись здесь
                    0
                    Для этого программа должна понимать смысл документов. К такому искину что подсветка что синтезатор голоса будет скорее сторонним подключаемым модулем. Да и сам человек рискует оказаться подобным модулем.
                    • НЛО прилетело и опубликовало эту надпись здесь
                    +1
                    Где-то читал про идею подсвечивтки одним цветом однокоренных слов для упрощения вычитки путем локализации одноцветных опусов.
                      +1
                      А как он раскрасит слова в этих предложениях:
                      «Эти типы стали есть на складе»?
                      «Красное стекло»
                      «Что-то стекло с поверхности»
                        +1
                        Вы забыли прекрасное «Косил косой косой косой».
                          0
                          Правильнее так: «Косой косой косил косой косой.»
                          Но мне этот тест не нравится.
                            0
                            Косарь.

                            Косой косарь косил косой косой.
                              0
                              Здесь-то все как раз понятно.
                                0
                                Но не для программы
                        –1
                        Интересная идея, но область применения выбрана неправильно. При чтении подсветка слов не нужна, скорее даже вредна, так как мешает читать. Подсветка слов нужна при написании текста и его редактировании. Чтобы идея приобрела практический смысл и действительно использовалась ее надо адаптировать под реальные потребности писателей, переводчиков и редакторов.

                        Работа писателя на 90% состоит из вычитки и правки уже написанного черновика, и такая технология могла бы ее сильно облегчить, но для этого она должна учитывать массу специфических правил, которые смогут описать только сами писатели и редакторы.

                        Простейший пример — это повторы. В литературном тексте одни и те же слова не должны повторяться слишком часть. Но это очень просто и во многих редакторах подсвечивается по умолчанию. Более сложный пример — времена. В литературном тексте не должно быть длинных цепочек глаголов в одном и том же времени. «Герой пошел в подземелье. Герой убил двести монстров. Герой спас принцессу. Герой привез принцессу в замок. Герой женился на принцессе. » Надо хотя бы «Герой отправился в подземелье. Темные коридоры, грязь, плесень и тут на него нападает целая толпа гоблинов. Взмахи, стоны кровь ручьем. И вот мерзавцы побеждены и прекрасная принцесса с восторгом смотрит на заляпанного героя. Герой хватает принцессу и увозит в замок. Там они поженились, несмотря на возмущение высокопоставленных родителей и несколько месяцев жили спокойно и счастливо, пока герой не умер, внезапно отравившись несвежими овощами за завтраком.»

                        Еще один возможный пример — это соответствие используемых слов по тематике другим словам. Не знаю можно ли это автоматизировать, но наверное возможен частотный анализ на основе словарей, чтобы в тексте про сельских мужиков из средневековой деревни подсвечивалось «Дык, это я рефлекторно».

                        К сожалению большинство таких правил слабо описан и/или закопаны глубоко в гуманитарных недрах.
                          0
                          В литературном тексте одни и те же слова не должны повторяться слишком часть.

                          Анафора? Эпифора?

                          В литературном тексте не должно быть длинных цепочек глаголов в одном и том же времени.

                          Правда? Ваш пример, если что, не об этом — там просто смешан прозаический и поэтический (в терминологии Томашевского) тексты.

                          Вот вам два контрпримера:

                          Тысячи птиц летят на огонь
                          тысячи слепнут тысячи бьются
                          тысячами погибают птицы
                          тысячи трупиков остаются

                          И смотритель не может все это стерпеть
                          не может смотреть как гибнут его любимцы
                          Да пропади оно пропадом!
                          он говорит
                          И гасит маяк
                          И маяк не горит

                          А в море корабль налетает на риф
                          корабль плывущий из тропических стран
                          корабль везущий тысячи птиц
                          тысячи птиц из тропических стран
                          Тысячи тонущих птиц


                          и

                          Гнев, богиня, воспой Ахиллеса, Пелеева сына,
                          Грозный, который ахеянам тысячи бедствий соделал:
                          Многие души могучие славных героев низринул
                          В мрачный Аид и самих распростер их в корысть плотоядным
                          Птицам окрестным и псам (совершалася Зевсова воля), —
                          С оного дня, как, воздвигшие спор, воспылали враждою
                          Пастырь народов Атрид и герой Ахиллес благородный.

                          Кто ж от богов бессмертных подвиг их к враждебному спору?
                          Сын громовержца и Леты — Феб, царем прогневленный,
                          Язву на воинство злую навел; погибали народы
                          В казнь, что Атрид обесчестил жреца непорочного Хриза.
                          Старец, он приходил к кораблям быстролетным ахейским
                          Пленную дочь искупить и, принесши бесчисленный выкуп
                          И держа в руках, на жезле золотом, Аполлонов
                          Красный венец, умолял убедительно всех он ахеян,
                          Паче ж Атридов могучих, строителей рати ахейской:
                            –1
                            Я говорил исключительно про прозу. Причем про современную — в древности и говорили иначе и писали иначе и требования к текстам были другие и аудитория. Поэзия это совсем другая область со своими законами, ее я не готов обсуждать.

                            Хотя теоретически в рамках исходной темы был бы интересен какой-то автоматический анализ рифмы или прочих поэтических законов с подсветкой.

                            И кстати опять же в русле исходной темы единого набора объективных законов здесь нет и для разных художественных стилей были бы интересны разные наборы правил.
                              –1
                              Я говорил исключительно про прозу. Причем про современную — в древности и говорили иначе и писали иначе и требования к текстам были другие и аудитория. Поэзия это совсем другая область со своими законами, ее я не готов обсуждать.

                              Вы говорили про литературный текст (то что по Томашевскому называется поэтической речью), и поверьте мне, эти законы равноприменимы во всех его вариантах. Хотите пример из нерифмованой и неритмизованной речи? Да пожалуйста:

                              А потом ты медленно приходишь в себя, машинально размазывая по лицу копоть и кровь, тупо глядя на изуродованные останки патрульного корвета, понимая, что ты один, один в этой Богом забытой дыре, и аккумуляторы пистолета, сунутого в разбитый рот, оказываются разряженными…

                              А дальше — дальше ты идешь, тащишься через бесконечные маленькие деревушки, где тебя травят ленивыми собаками и почти не дают хлеба, под вялую брань и сочувствие, а выброшенные из окна старые башмаки оказываются безнадежно дырявыми и с оторванной левой подметкой, висящей на гнилых нитках. И ты идешь, тащишься, стараясь не переносить вес на левую ногу, стараясь не задумываться о будущем, пока у старой буковой рощи не встречаешь первых прилично одетых людей. В их мытых руках тонкие прямые клинки, и самый молодой из них все пятится назад, устало отмахиваясь, падая на колено, пытаясь вырвать глубоко вошедшую сталь… Ты проходишь мимо, тебе безразлично происходящее, но убийцам не нужны свидетели, им почему-то никогда не нужны свидетели, и тебе тычут железом в спину, промахиваются и догоняют снова… Ты забираешь оружие, ломая его на колене, не понимая, за что — и отдаешь богато украшенную рукоять встающему с земли владельцу. А потом недоумению не остается места, они оказываются на редкость неуклюжими и хрупкими, и, перехватывая рассеченную голень грязным рукавом от куртки ближнего из лежащих, ты привыкаешь к мысли о возможности убийства. И ты натягиваешь темно-фиолетовый колет с оранжевыми наплечниками, разбираешь мешанину ремней кожаной перевязи, отвязываешь от чахлого деревца чужую лошадь и впервые в жизни перекидываешь ногу через седло. В мир надо входить в такой, какой он есть на самом деле. Особенно в чужой мир.


                              Это я к тому, что не надо озвучивать «правила» применительно к поэтической речи, а уж особенно на уровне компьютерных алгоритмов, рано еще.
                                0
                                Мне кажется вы не поняли мою точку зрения. Я не говорю о наличии объективных законов для литературы или поэзии вообще. Я говорю о конкретных практических задачах которые встают перед писателями и журналистами в процессе работы. Из этого вовсе не следует, что данные конкретные законы применимы везде и всегда.

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

                                Пятискатные черепичные крыши, жутковатые резные флюгера в виде
                                зубастых тварей с печальными глазами, грубо отесанные камни мощных стен — и неожиданно ажурная, витиеватая филигрань особняка, обветренный мрамор
                                колонн, красноватый лак деревянных дверей… Испуганный горожанин
                                шарахается в сторону, не отвечая на вопрос, и тонкая хищная стрела у самых
                                ног, посмевших переступить невидимую черту перед молчащим домом… Ладно,
                                это тоже город. Мглистые, понурые рассветы, темно-серые зубцы крепостных
                                башен, глухое звяканье засовов и перекличка ленивых часовых. Это надолго.
                                Может быть, навсегда. Ты стряхиваешь зябкое сонное оцепенение и осторожно
                                переступаешь порог гостиницы. Будем привыкать.


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


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


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

                                Можно взглянуть на более новые произведения этого автора

                                В обычное время растительность на лице Игги, включая брови и ресницы, отсутствовала — не вписывалась в базовые концепты. Но за день до полета на Тренг опытный Добс сменил крем-депилятор на интенсив-лосьон «Коко Труди». Сизая щетина — воплощенная мужественность, можно сказать, воинственность. Волосы взлохмачены в художественном беспорядке номер семь. Лицо после вчерашнего чуть помято — замечательно! Косметики — ноль, не тот случай… Ну разве что носогубные складки чуть глубже обозначим. И последний штрих — по капле флюоракса в каждый глаз. Теперь мрачный лихорадочный блеск обеспечен.

                                Ну-ка, проверим…

                                Из голосферы на Добса глядел суровый оп-ди-ду-да. Он был старше Игги лет на десять, потрепан жизнью, хмур с похмелья и готов свернуть шею голыми руками любому, кто придется ему не по нраву. Ей-ей, любому, от нерасторопного официанта до десятиметрового мегалозавра! В глазах бывалого парня — рейнджера, вернувшегося из джунглей, — сверкали опасные искры безумия.


                                Вы привели несколько примеров переводных стихов, включая очень древние. Стихи русских поэтов другие:

                                Когда для смертного умолкнет шумный день
                                И на немые стогны града
                                Полупрозрачная наляжет ночи тень,
                                И сон, дневных трудов награда,
                                В то время для меня влачатся в тишине
                                Часы томительного бденья:
                                В бездействии ночном живей горят во мне
                                Змеи сердечной угрызенья;
                                Мечты кипят; в уме, подавленном тоской,
                                Теснится тяжких дум избыток;
                                Воспоминание безмолвно предо мной
                                Свой длинный развивает свиток:
                                И, с отвращением читая жизнь мою,
                                Я трепещу, и проклинаю,
                                И горько жалуюсь, и горько слезы лью,-
                                Но строк печальных не смываю.


                                Как океан объемлет шар земной,
                                Земная жизнь кругом объята снами;
                                Настанет ночь — и звучными волнами
                                Стихия бьет о берег свой.

                                То глас ее; он нудит нас и просит…
                                Уж в пристани волшебный ожил челн;
                                Прилив растет и быстро нас уносит
                                В неизмеримость темных волн.

                                Небесный свод, горящий славой звездной,
                                Таинственно глядит из глубины,-
                                И мы плывем, пылающею бездной
                                Со всех сторон окружены.

                                Одна звезда меж всеми дышит
                                И так дрожит,
                                Она лучом алмазным пышет
                                И говорит:

                                Не суждено с тобой нам дружно
                                Носить оков,
                                Не ищем мы и нам не нужно
                                Ни клятв, ни слов.

                                Не нам восторги и печали,
                                Любовь моя!
                                Но мы во взорах разгадали,
                                Кто ты, кто я.

                                Чем мы горим, светить готово
                                Во тьме ночей;
                                И счастья ищем мы земного
                                Не у людей.


                                Простимся.
                                До встреч в могиле.
                                Близится наше время.
                                Ну, что ж?

                                Мы не победили.
                                Мы умрем на арене.
                                Тем лучше.
                                Не облысеем
                                от женщин, от перепоя.

                                … А небо над Колизеем
                                такое же голубое,
                                как над родиной нашей,
                                которую зря покинул
                                ради истин,
                                а также
                                ради богатства римлян.

                                Впрочем,
                                нам не обидно.
                                Разве это обида?
                                Просто такая,
                                видно,
                                выпала нам
                                планида…

                                Близится наше время.
                                Люди уже расселись.
                                Мы умрем на арене.

                                Людям хочется зрелищ.


                                Несколько отличается от

                                Гнев, богиня, воспой Ахиллеса, Пелеева сына,
                                Грозный, который ахеянам тысячи бедствий соделал:
                                Многие души могучие славных героев низринул
                                В мрачный Аид и самих распростер их в корысть плотоядным
                                Птицам окрестным и псам (совершалася Зевсова воля), —
                                С оного дня, как, воздвигшие спор, воспылали враждою
                                Пастырь народов Атрид и герой Ахиллес благородный.


                                не так ли?

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

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

                                  А на чем эти задачи основываются?

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

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

                                  Стихи русских поэтов другие:

                                  Ага.

                                  В сени вышел царь-отец.
                                  Все пустились во дворец.
                                  Царь недолго собирался:
                                  В тот же вечер обвенчался.
                                  Царь Салтан за пир честной
                                  Сел с царицей молодой;
                                  А потом честные гости
                                  На кровать слоновой кости
                                  Положили молодых
                                  И оставили одних.


                                  На десять строчек — семь глаголов, все в одном времени.

                                  Ну или возьмем ваш же первый же пример:

                                  В то время для меня влачатся в тишине
                                  Часы томительного бденья:
                                  В бездействии ночном живей горят во мне
                                  Змеи сердечной угрызенья;
                                  Мечты кипят; в уме, подавленном тоской,
                                  Теснится тяжких дум избыток;
                                  Воспоминание безмолвно предо мной
                                  Свой длинный развивает свиток:
                                  И, с отвращением читая жизнь мою,
                                  Я трепещу, и проклинаю,
                                  И горько жалуюсь, и горько слезы лью,-
                                  Но строк печальных не смываю.


                                  Так что вопрос об «исключениях» остается открытым, примерами можно долго перекидываться.

                                  Дело, понимаете ли, в том, что в поэтической речи вообще сложно говорить об «исключениях» — правильнее говорить о средствах и их применении. Например, цепочка глаголов в одном времени — это как раз выразительное средство, с конкретным эффектом, его можно применять, можно не применять; главное — точно знать, что именно и зачем вы делаете.
                                    0
                                    А на чем эти задачи основываются?


                                    Написать хороший текст. Я в курсе что определение «хороший» субъективно. Могу его для данного комментария расшифровать как «соответствующий определенному набору норм и правил, придерживаться которых считает нужным автор (редактор) этого текста»

                                    Время не меняется, меняется структура предложения


                                    Давайте еще раз вернемся в начало. Я описал конкретную задачу, стоящую перед писателями в широком смысле слова, теми, кто пишет тексты. Привел конкретные примеры. От того что мы вместо «два вида прошедшего времени» скажем

                                    В русском языке одна форма прошедшего времени, которая, однако, может принимать совершенный или несовершенный вид.


                                    смысл написанного хоть как-то изменится?

                                    В сени вышел царь-отец.
                                    Все пустились во дворец.
                                    Царь недолго собирался:
                                    В тот же вечер обвенчался.
                                    Царь Салтан за пир честной
                                    Сел с царицей молодой;
                                    А потом честные гости
                                    На кровать слоновой кости
                                    Положили молодых
                                    И оставили одних.


                                    Приведенные вами отрывки иллюстрируют все то же, о чем я говорил с самого начала.

                                    Хорошо, хорошо в нем все глаголы в одном времени, но разных видах этого времени, или даже просто глаголы разного вида в одном времени (определение из другого источника), плюс чередуются предложения разной структуры.

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

                                    Слова другие, их стало больше, смысл не поменялся. Так вас устроит?

                                    Дело, понимаете ли, в том, что в поэтической речи вообще сложно говорить об «исключениях» — правильнее говорить о средствах и их применении. Например, цепочка глаголов в одном времени — это как раз выразительное средство, с конкретным эффектом, его можно применять, можно не применять; главное — точно знать, что именно и зачем вы делаете.


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

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

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

                                    У меня такое впечатление что вы смотрите на задачу с точки зрения «вот как бы нам вывести такие хитрые теоретические всеобъемлющие правила», я же смотрю «как бы упростить и автоматизировать рутинную работу при написании реальных текстов».

                                    И мои предложения надо рассматривать не с точки зрения соответствия красивым абстракциям, а с точки зрения соответствия тем задачам, на которые уходит больше всего времени при написании и редактировании текстов на практике. Вне этого они особого смысла не имеют.
                                      0
                                      Написать хороший текст. Я в курсе что определение «хороший» субъективно. Могу его для данного комментария расшифровать как «соответствующий определенному набору норм и правил, придерживаться которых считает нужным автор (редактор) этого текста»

                                      Это определение означает, что каждый должен мочь настроить свои правила для подсветки, не так ли?

                                      Я описал конкретную задачу, стоящую перед писателями в широком смысле слова, теми, кто пишет тексты.

                                      И эта конкретная задача оказалась несостоятельной. Это я вам говорю как тот, кто пишет тексты.

                                      От того что мы вместо «два вида прошедшего времени» скажем [...] смысл написанного хоть как-то изменится?

                                      Конечно. Точно так же как смысл написанного меняется между «он убил ее» и «он убивал ее. Странно, что это надо объяснять человеку, который пишет тексты — или говорит о том, как надо писать тексты.

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

                                      Смысл-то радикально поменялся. Теперь нужно научить гипотетическую программу анализировать не только время, но и вид глагола и структуру предложения, оценивать „одинаковость“ структуры, следить за последовательностью предложений. А потом выяснится, что и этого недостаточно, а надо научить программу понимать смысл написанного.

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

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

                                      я же смотрю «как бы упростить и автоматизировать рутинную работу при написании реальных текстов».

                                      Добавьте уж „мою рутинную работу“. Потому что, например, у меня при написании реальных текстов рутинная работа имеет совершенно другую природу. А у третьего человека — будет еще более другой.

                                      И мои предложения надо рассматривать не с точки зрения соответствия красивым абстракциям, а с точки зрения соответствия тем задачам, на которые уходит больше всего времени при написании и редактировании текстов на практике.

                                      Еще бы точно определить эту „практику“ и вытекающие из нее задачи. У вас правда при редактировании текста 90% времени уходит на вычленение повторов?

                                        0
                                        Это определение означает, что каждый должен мочь настроить свои правила для подсветки, не так ли?


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

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

                                        Возможно их и нет, но заранее это утверждать нельзя.

                                        Смысл-то радикально поменялся.


                                        Смысл не менялся, потому что в самом первом комментарии наряду с кратким и неточным определением был приведен пример, в котором с самого начала присутствовало все вышеперечисленное.

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

                                        Добавьте уж „мою рутинную работу“.


                                        Так все ваши вопросы сводились к тому что вам лично такая программа не нужна?

                                        Честно говоря мне это не кажется стоящей обсуждения темой.

                                        Потому что это больше всего похоже на «а давайте сделаем компьютер с графическим интерфейсом и мышью» или там «телефон с пальцевым управлением вместо стилуса» — и ответ — «мне лично такой компьютер/телефон не нужен, значит и делать его не надо».

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

                                        Изначально темой была «подсветка естественного языка».

                                        Темой моего комментария было одно из возможных практических применений такой подсветки.

                                        Темой всех ваших комментариев, если я правильно понял является то, что такое применение не нужно лично вам и недовольство неточностью использованных мной определений. Или вы имели в виду что-то другое?
                                          0
                                          Я имел в виду, что ваше предложение (а) практически неосуществимо и при этом (б) в изложенной форме не имеет смысла.
                          +1
                          Может быть, не подлежащее-сказуемое, а части речи подсвечивать (существительное одним, глагол — другим, прилагательное — третьим, предлог — четвёртым цветом). Это ближе к сути подсветки синтаксиса в языках программирования
                            0
                            Интересная идея, я бы даже заплатил за качественную реализацию. Пожалуйста продолжайте, ваше дело правое.

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое