Рубрика «грамматика» - 3

Как изучать английскую грамматику БЕЗ упражнений. Творческий подход — внедрение юнитов в главы своей книги - 1

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

Я провёл эксперимент — взял одну из самых сложных групп юнитов (Prepositions) в знаменитом учебнике «English Grammar in Use». На протяжении двух недель, я не решил НИ ОДНОГО упражнения, но написал небольшую книгу (6000 слов), в которую загнал всю теорию полностью из 16 юнитов и связал её с придуманными сценами. Также, по мере написания новых глав я повторял старые и ту теорию, которая в них встроена.

Результаты эксперимента оказались просто фантастическими! Помимо громадного роста навыка письма и увеличения активного запаса, я наблюдал, как некоторые конструкции входят в привычку и хочется их использовать потом ещё и ещё. После прохождения юнитов я решил всё-таки прогнать тесты для проверки и получил 94%. Т.е. письмо учит вас проходить тесты, но не наоборот!

Читать полностью »

В нашем проекте PT Application Inspector реализовано несколько подходов к анализу исходного кода на различных языках программирования:

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

Наш цикл статей посвящен структуре и принципам работы модуля сигнатурного поиска (PM, pattern matching). Преимущества такого анализатора — скорость работы, простота описания шаблонов и масштабируемость на другие языки. Среди недостатков можно выделить то, что модуль не в состоянии анализировать сложные уязвимости, требующие построения высокоуровневых моделей выполнения кода.

Теория и практика парсинга исходников с помощью ANTLR и Roslyn - 1
К разрабатываемому модулю были, в числе прочих, сформулированы следующие требования:

  • поддержка нескольких языков программирования и простое добавление новых;
  • поддержка анализа кода, содержащего синтаксические и семантические ошибки;
  • возможность описания шаблонов на универсальном языке (DSL, domain specific language).

В нашем случае все шаблоны описывают какие-либо уязвимости или недостатки в исходном коде.

Весь процесс анализа кода может быть разбит на следующие этапы:

  1. парсинг в зависимое от языка представление (abstract syntax tree, AST);
  2. преобразование AST в независимый от языка унифицированный формат;
  3. непосредственное сопоставление с шаблонами, описанными на DSL.

Данная статья посвящена первому этапу, а именно: парсингу, сравнению функциональных возможностей и особенностей различных парсеров, применению теории на практике на примере грамматик Java, PHP, PLSQL, TSQL и даже C#. Остальные этапы будут рассмотрены в следующих публикациях.
Читать полностью »

Разбор естественного языка: грамматическая нотация - 1

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

  • Морфологический — анализ словоформ и их характеристик (число, падеж, и т.д.);
  • Синтаксический — выделение структуры предложения (отношения между словами);
  • Семантический — выделение смысла исходя из «модели мира»;

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

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

Из-за отсутствия у меня глубоких знаний в области нейронных сетей я решил следовать более проторенной тропой, а именно разработать BNF-подобную грамматическую нотацию и реализовать анализатор, использующий грамматические правила, описанные с её помощью. С этой точки зрения при разработке практически полезного анализатора основная работа заключается именно в построении достаточной системы правил (что у меня далеко до завершения). В следующем посте я опишу устройство реализованного анализатора, а пока хочу сфокусироваться на разработанной грамматической нотации.
Читать полностью »

Никто не забыт, ничто не забыто

С момента прихода в нашу школу Интернета, грамотность детей становится хуже и хуже. На форумах они часто пишут с нарочитыми ошибками (чтобы было “прикольно”), однако в результате забывают правила русского языка. Ситуация на сегодняшний день катастрофическая.

(публикация НГС.Новости от 2006 года)

Подобные жалобы, наверное, появились не вчера, и их можно найти, наверное и в древних письмах. Но сегодня ситуация с языком сложилась совсем новая: грамотность на форумах низкая, ошибки «ться-тся», «с перва» не прекращаются. (Оставим даже за скобками заимствования — для которых нет строгих формальных правил.) Ведь, если подумать — кошмар, люди не в состоянии запомнить простые школьные правила или хотя бы ставить знаки препинания. Язык ждёт катастрофа! Неужели?

Заметное многим «засорение» языка — не катастрофа и даже не проблема, а симптом процессов, с которыми язык вполне справится.
Читать полностью »

Дуглас Крокфорд

2007-02-21

Введение

В 1973 году на первом ежегодном симпозиуме «Принципы языков программирования» (Principles of Programming Languages Symposium) Вон Пратт представил статью «Нисходящий парсер с операторным предшествованием» (Top Down Operator Precedence). В этой статье Пратт описал метод синтаксического разбора, который объединяет лучшие стороны рекурсивного спуска и метода операторного предшествования Флойда. Метод Пратта очень похож на рекурсивный спуск, но требует меньше кода и работает гораздо быстрее. Пратт заявил, что его метод прост в освоении, реализации и использовании, необычайно эффективен и очень гибок. Благодаря своей динамичности он может использоваться для расширяемых языков.

Но если метод действительно безупречен, почему же разработчики компиляторов по сей день его игнорируют? В своей статье Пратт предположил, что БНФ-грамматики и их многочисленные модификации, а также связанные с ними теоремы и автоматы заняли нишу раньше и теперь препятствуют развитию теории синтаксического анализа в других направлениях.

Есть и другое объяснение: этот метод наиболее эффективен для динамических, функциональных языков программирования и использовать его в статическом, процедурном языке куда сложнее. Свою статью Пратт иллюстрирует на примере Lisp и играючи строит синтаксические деревья по потоку лексем. Но методы синтаксического разбора не особо ценятся в сообществе Lisp-программистов, которые проповедуют спартанский отказ от синтаксиса. С момента создания Lisp предпринималось немало попыток придать этому языку богатый синтаксис в стиле ALGOL: CGOL Пратта, Lisp-2, MLISP, Dylan, Interlisp's Clisp, оригинальные М-выражения Маккарти и так далее. Но все они провалились. Для Lisp-сообщества согласованность программ и данных оказалась важнее выразительного синтаксиса. С другой стороны, подавляющее большинство программистов любит синтаксис, поэтому сам Lisp так и не стал популярен. Методу Пратта нужен динамический язык, но сообщество динамических языков исторически не пользовалось синтаксисом, который так удобно реализуется методом Пратта.
Читать полностью »

image

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

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

Читать полностью »

image

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

Читать полностью »

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

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

Читать полностью »

Большинство из нас проходили русский язык. Но, так как это происходило в переходном возрасте, мы проходили его мимо. Кто-то в это время работал, кто-то занимал первые места на спортивных соревнованиях, кто-то играл на приставках, а большинство вкладывали всё своё доступное время в общение с компьютером.
image
Именно поэтому мы не всегда грамотно пишем, показывая себя не с лучшей стороны. Несмотря на то, что я умею программировать, мне с трудом удаётся понять алгоритм расстановки запятых (такое ощущение, что эти правила специально запутали).

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

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

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

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

Самое забавное, что для решения это типичной проблемы давным-давно было придумано решениеЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js