Морфемный разбор — SСHOOLSTARS
Рассказываем, как выполнить морфемный разбор (разобрать слово по составу). Представлен план, образец и примеры разбора.
1 Морфемный разбор: разбор слова по составу
1.1 Морфемы (основные и другие) и основа слова
1.2 Основные морфемы: корень, приставка, суффикс, окончание
2 Как сделать морфемный разбор (разобрать слово по составу)?
2.1 План морфемного разбора (разбора слова по составу)
2.2 Примеры планов морфемного разбора по учебникам (книгам)
2.3 Образец устного морфемного разбора (разбора слова по составу)
3 Примеры морфемного разбора (разбора слова по составу)
Морфемный разбор: разбор слова по составу
Морфемы (основные и другие) и основа слова
Разобрать слово по составу — значит сделать его морфемный разбор, то есть указать, из каких морфем оно состоит.
Морфема
Морфема — это минимальная значимая часть слова, главная из которых — корень.
В корне заключено общее для всех однокоренных слов значение, например, игра, игрушечный, играть, игровая, игрушечка.
Другие морфемы
Кроме корня, в состав слова могут входить и другие морфемы. В русском языке есть ряд слов, в состав которых входят так называемые уникальные элементы — унификсы, не встречающиеся больше ни в каких других словах (они выделяются как суффиксы, поскольку стоят после корня и перед окончанием): в словах: аплодисменты, детвора, маскарад, попадья, стекалярус и некоторые другие. Как суффиксы выделяются и постфиксы — частицы -ся и -сь в возвратных глаголах: спрятаться, купаюсь. Кроме того, в состав слова может входить интерфикс — в русском языке это соединительная гласная о (снегопад) или е (птицелов).
Другие морфемы:
- Унификс
- Аффикс (постфикс, префикс)
- Интерфикс
Основа слова
Традиционное определение основы слова (это часть слова без окончания) не совсем точно поскольку кроме окончания в основу не входят формообразующие суффиксы глаголов -ть, -ти – показатели неопределённой формы (плыть, расти) и -л- – показатель прошедшего времени (убежал, убежала, убежало, убежали).
Основные морфемы: корень, приставка, суффикс, окончание
Корень
Корень — это главная и незаменимая часть слова, для нахождения которой необходимо подобрать родственные слова. Эта часть обозначается дугой вверху разбираемого слова.
Разберем на примере: Ветерок — в слове ветерок — ветер — корень, проверочное однокоренное слово — ветер.
В русском языке существуют слова, состоящие из корней:
- только из него: кот, лес, сад, пол;
- из двух
- Из трех: электроаппаратостроение, хромолитограф, биогеохимический.
- Из четырех: биомагнитогидродинамика.
Суффикс
Суффикс — морфема, стоящая сразу за корнем, являющаяся словообразовательной частью. Она присутствует не во всех словах. Эта часть обозначается крышечкой вверху слова.
Разберем на примере: журнальчик — в слове журнальчик — чик является уменьшительно-ласкательным суффиксом.
Существуют случаи, когда в слове присутствуют несколько суффиксов:
- Один: чемоданчик, футлярчик, портфельчик;
- Два: сыроватость, брезгливость, высказывание;
- Три: бесхитростность, хранилище, сеялка.
Приставка
Приставка — Морфема, находящаяся до корня, являющаяся словообразовательной частью. Она присутствует не во всех словах. Эта часть обозначается лежащей буквой «Г» вверху слова.
Разберем на примере: выход — в слове выход — вы является приставкой, образующей значение обратного слова от слова ход.
В русском языке существуют слова, состоящие из приставки:
- Одной: выходит, подходит, исходит:
- Двух: беспеременный, беспрогонный, безнаборный;
- Трех: поуспокоиться, незаприходованный, неприсоединившийся.
Окончание
Окончание — Морфема связующая слова в речи благодаря своей изменчивости. Эта часть обозначается рамкой, окружающей окончание.
Разберем на примере: правило — в слове правило окончание — буква о, изменяющаяся в зависимости от числа и падежа слова. Чтобы его найти необходимо изменить слово, и меняющаяся часть на его конце и есть окончание.
Слово может быть с окончанием:
- Без него— К этим словам относятся: деепричастие, заимствованные несклоняемые слова, наречие, несклоняемые прилагательные. Разберем на примере: сделав, по-моему, гороно, цвет.
- Нулевым— В таком случае слово имеет окончание в измененных формах, но в именительном падеже его нет: кот, рот, глаз, паз;
- Одним: кошка, лисица, лампа, свеча;
- Двумя: тремястами, шестьюстами.
Как сделать морфемный разбор (разобрать слово по составу)?
План морфемного разбора (разбора слова по составу)
- Часть речи. Определяем, к какой части речи относится анализируемое слово.
- Окончание и основа слова. Выделяем окончание и основу. Для определения окончания слово изменяют, например, по падежам. Изменяемая часть будет являться окончанием, остальная часть слова без окончания — основой.
- Корень. Выделяем корень. Для определения корня подбираем однокоренные слова.
- Приставка и суффикс. Определяем, входит ли в основу слова кроме корня также приставка и суффикс.
- Выделяем приставку. Для этого подбираем слова с такой же приставкой.
- Выделяем суффикс. Для этого подбираем слова с таким же суффиксом.
- Графическое обозначение.
Обозначаем части слова с помощью графических обозначений.
Примеры планов морфемного разбора по учебникам (книгам)
Образец устного морфемного разбора (разбора слова по составу)
Выполним разбор слова по составу: ПОДЕЛКА.
- Часть речи. Поделка – имя существительное.
- Окончание и основа слова. Выделяем окончание и основу. Для этого изменим слово: поделка, поделки, поделке → окончание –а. Выделим основу: поделк-.
- Корень. Выделяем корень. Для определения корня подбираем однокоренные слова: делаем, выделка, передел → корень –дел-.
- Приставка и суффикс. Определяем, входит ли в основу слова кроме корня также приставка и суффикс.
- Выделяем приставку. Для этого подбираем слова с такой же приставкой: поход, полетел, повозка → приставка по-.
- Выделяем суффикс. Для этого подбираем слова с таким же суффиксом: повозка, привычка, прожилка → суффикс –к-.
- Графическое обозначение. Обозначаем части слова с помощью графических обозначений.
ПОДЕЛКА
Примеры морфемного разбора (разбора слова по составу)
ЗЕРКАЛЬНЫЙ
ПОЗОЛОТА
ЛОВЕЦ
ЗАМАЗКА
ИГРИВЫЙ
ИГРУШКА
НОСИШКО
КОТЁНОК
КРАСИВЫЙ
§16. Разбор глагола по составу
292. Прочитай. Какую картину рисует поэт в этих строчках? Какие глаголы употреблены в переносном значении? Спиши, допиши окончания глаголов.
Выпиши глагол роняет. В какой форме он стоит? Выдели окончание, которое указывает на эту форму, и основу. Теперь поставь этот глагол в неопределенную форму. Выдели глагольный суффикс пред –ть. Подбери однокоренные слова других частей речи. Выдели корень.
293. Определи по окончаниям и суффиксам, в какой форме стоят глаголы.
Подбери и запиши по одному слову к каждой схеме. Выдели окончания и суффиксы.
294. Что можно сказать о глаголах по этим схемам? В каких из этих глаголов есть орфограммы? Запиши по одному глаголу к каждой схеме.
295. Определи, какой из данных глаголов подходит к каждой схеме. Как ты будешь определять – посмотришь тогда на суффиксы и окончания или на корень? Почему? Запиши глаголы, разбери их по составу.
296. Определи, какой из данных глаголов подходит к каждой схеме. Разбери глаголы по составу.
297. Прочитай отрывок из стихотворения И.А.Бунина. как бы ты его озаглавил? Спиши, вставь пропущенные буквы, объясни орфограммы.
Разбери по составу глаголы, возле которых стоит цифра 2. Разбери один из глаголов как часть речи.
298. Выборочное списывание. Спиши только глаголы с безударными личными окончаниями. Обозначь орфограмму в окончаниях и –тся, -ться в глаголах.
Выпиши глаголы возле которых стоит цифра 2, разбери их по составу. Не забудь сначала написать, в какой форме стоит глагол.
Выпиши однокоренные слова, определи часть речи и разбери эти слова по составу. Объясни орфограммы.
299. Поставь данные в скобках глаголы в нужную форму и прочитай текст. Выпиши эти глаголы в той форме, в которой они должны стоять в тексте. Объясни орфограммы.
Выполни разбор по составу глаголов, возле которых стоит цифра 2.
300. Сочинение. Запиши глаголы, с помощью которых можно рассказать, что делают ребята в библиотеке. Напиши сочинение по этим опорным глаголам. Заглавие придумай самостоятельно. Глаголы, которые ты подобрал, нужно употребить в тексте в форме настоящего времени.
301. Прочитай. Что общего у глаголов каждой группы и чем они отличаются? Как называются эти глаголы? Устно составь предложения с глаголами одной из групп. Запиши глаголы в указанных формах и разбери все глаголы по составу.
302. Подбери и запиши к данным глаголам по одному — два синонима. Устно составь словосочетания с глаголами-синонимами. Разбери глаголы по составу.
303. Прочитай отрывок из рассказа В.Ю.Драгунского «Он живой и светится». Что чувствует Дениска? Какое настроение героя передает автор?
В этом тексте есть три группы однокоренных слов. Найди и выпиши эти слова группами, выдели корень, напиши, какие это части речи. Найди в тексте и выпиши глаголы – исключения. Укажи их спряжение и напиши эти глаголы в форме 2-го лица ед.ч. и 3-го лица мн.ч. разбери по составу глаголы, которые отмечены в тексте цифрой 2.
304. Сочинение. Напиши сочинение на тему «День моей мамы» (моего папы, бабушки, сестры…). Расскажи что обычно делает мама (или тот, о ком ты пишешь) утром, днем, вечером.
Подготовься к сочинению. Вспомни порядок подготовки, самостоятельно составь план. Используй глаголы в форме настоящего времени 3-го лица ед. и мн.числа., предложения с однородными членами (для усиления выразительности однородные члены можно соединить повторяющимся союзом и), предложения с прямой речью.
305. Спиши текст, поставь глаголы, данные в скобках, в форму 2-го лица мн.числа. у тебя получится отрывок из «Записок охотника» И.С.Тургенева. подчеркни орфограммы – буквы безударных гласных в окончаниях глаголов.
Найди в тексте глаголы в неопределенной форме, выпиши их, выдели суффикс неопределенной формы. Найди в тексте глагол – исключение, запиши его в форме настоящего времени 2-го лица ед.числа и 3-го лица мн.ч. разбери как часть речи глаголы любите, можете. Разбери по составу глаголы выехать, дышишь, выходите.
306. Самодиктант. Подбери и запиши 15-20 глаголов с изученными орфограммами (частица не, -тся и –ться; мягкий знак после букв шипящих в неопределенной форме и в форме 2-го лица ед. ч., буквы безударных гласных в личных окончаниях.)
307. Поработай над своей устной речью. Подготовь устный рассказ на тему «Что нового я узнал о глаголе в этом году». Составь и запиши план рассказа. Подбери примеры к каждому пункту плана.
parslet — конструкция синтаксического анализатора
синтаксический анализатор — это не что иное, как класс, производный от Parslet::Parser
. Самый простой синтаксический анализатор, который можно было бы написать,
выглядеть так:
класс SimpleParser < Parslet::Parser правило (: a_rule) { ул ('simple_parser') } корень (: a_rule) конец
Язык, распознаваемый этим синтаксическим анализатором, представляет собой просто строку «simple_parser». Правила парсера очень похожи на методы и определяются с помощью
. правило(имя) {определение_блока}
За кулисами это действительно определяет метод, который возвращает все, что вы вернуться из него.
У каждого парсера есть корень. Это указывает, где должен начинаться синтаксический анализ. Это как точка входа в ваш парсер. С корнем, определенным следующим образом:
корень(:мой_корень)
вы создаете метод #parse
в вашем синтаксическом анализаторе, который начнет синтаксический анализ
вызвав метод #my_root
. У вас также будет #root
(экземплярный) метод, который является псевдонимом корневого метода. Следующие вещи
действительно одно и то же:
SimpleParser.new.parse(строка) SimpleParser.new.root.parse(строка) SimpleParser.new.a_rule.parse(строка)
Знание этих вещей дает вам большую гибкость; Я объясню, почему в конец главы. А пока просто позвольте мне указать, что, поскольку все это Ruby, ваш любимый редактор отлично подсветит синтаксис кода парсера.
Атомы: внутренняя часть синтаксического анализатора
Совпадающие строки символов
Анализатор состоит из атомов синтаксического анализатора (или парлетов, отсюда и название). атомы - это то, что появляется внутри ваших правил (и, возможно, где-то еще). мы уже встретил атом, строка атом:
ул('простой_парсер')
Это возвращает экземпляр Parslet::Atoms::Str
. Эти атомы парсера
все они происходят от Parslet::Atoms::Base
и, по сути, имеют только
один метод, который вы можете вызвать: #parse
. Так это работает:
str('foobar').parse('foobar') # => "foobar"@0
Атомы — это небольшие синтаксические анализаторы, которые могут распознавать языки и выдавать ошибки, просто
как настоящие подклассы Parslet::Parser
.
Совпадение диапазонов символов
Второй атом парсера, о котором вам нужно знать, позволяет вам сопоставлять диапазоны символов:
совпадение('[0-9a-f]')
Приведенный выше атом соответствует числам от нуля до девяти и буквам «а».
на «f» — да, вы угадали — например, шестнадцатеричные числа. Внутри
такого парслета сопоставления, по сути, является регулярным выражением, которое соответствует
один символ ввода. Поскольку мы будем так часто использовать диапазоны с #match
и поскольку печатать ('[]') утомительно, вот еще один способ
написать выше #match
атом:
матч ['0-9a-f']
Совпадения символов являются экземплярами Parslet::Atoms::Re
. Вот
еще несколько примеров диапазонов символов:
match['[:alnum:]'] # буквы и цифры match['\n'] # новые строки match('\w') # символы слова match('.') # любой символ
The wild wild
#any
Последний пример выше соответствует регулярному выражению /./
, что соответствует
любой один символ. Для этого есть специальный атом:
любой
Состав атомов
Из этих основных атомов можно составить сложные грамматики. Следующее несколько разделов расскажут вам о различных способах составления атомов.
Простые последовательности
Соответствие «foo» и затем «bar»:
str('foo') >> str('bar') # то же, что и str('foobar')
Последовательности соответствуют экземплярам класса Парслет::Атомы::Последовательность
.
Повторение и его особые случаи
Для моделирования повторяющихся атомов следует использовать #repeat
:
ул('foo').повторить
Это позволит foo повторяться любое количество раз, включая ноль. Если вы
смотрим подпись для #повторяем
в Parslet::Atoms::Base
,
вы увидите, что на самом деле у него два аргумента: min и max . Итак, следующее
код все понятно:
str('foo').repeat(1) # соответствует 'foo' хотя бы один раз str('foo').repeat(1,3) # не менее одного и не более 3 раз str('foo').repeat(0, nil) # по умолчанию: то же, что и str('foo').repeat
Повторение имеет особый случай, который часто используется: соответствие чему-либо
один раз или вообще не может быть достигнуто с помощью repeat(0,1)
, но также
через красивое:
str('foo').maybe # то же, что и str('foo').repeat(0,1)
Все они соответствуют Parslet::Atoms::Repetition
. Обратите внимание на это
небольшой поворот к #возможно
:
str('foo').maybe.as(:f).parse('') # => {:f=>nil} str('foo').repeat(0,1).as(:f).parse('') # => {:f=>[]}
Нулевое значение #maybe
равно нулю. Это обслуживание
интуиция, что foo.maybe
либо дает мне foo
, либо
вообще ничего, не пустой массив. Но будь по-твоему!
Чередование
Важнейшим методом построения грамматик является чередование. Без то ваши грамматики будут различаться только количеством совпадающих вещей, но не в содержании. Вот как это выглядит:
ул('foo') | str('bar') # соответствует 'foo' ИЛИ 'bar'
Обычно это читается как «foo» или «bar».
Приоритет оператора
Операторы, которые мы выбрали для комбинации атомов парслета, имеют оператор приоритет, который вы ожидаете. Скобки не нужны, чтобы выразить чередование последовательностей:
str('s') >> str('последовательность') | str('se') >> str('quence')
И многое другое
Атомы парслета не так красивы, как атомы верхушки дерева. Ну вот, мы сказали это. Однако кажется, что в них есть другая эстетика; они являются чистым Ruby и хорошо интегрируются с остальной частью вашей среды. Иметь посмотри на это:
# Также занимает место после важных элементов, таких как ';' или ':'. Назовите это # указав символ, который вы хотите сопоставить, в качестве аргумента: # # arg >> (spaced(',') >> arg).repeat # def с интервалом (символ) строка (символ) >> соответствует ['\s'] конец
или даже так:
# Превращает любой атом в выражение, соответствующее левой скобке, # атом, а затем правая скобка. # # в квадратных скобках (сумма) # def в квадратных скобках (атом) с интервалом ('(') >> атом >> с интервалом (')') конец
Вы могли бы сказать, что поскольку parslet — это просто старые объекты Ruby (PORO ™), это позволяет создавать очень плотный код. Включение модулей, наследование классов,… все ваши инструменты должны хорошо работать с parslet.
Построение дерева
По умолчанию parslet просто возвращает вам те строки, которые вы ему вводите. Parslet не будет генерировать парсер для вас и не будет генерировать ваш
абстрактное синтаксическое дерево для вас. Метод #as(name)
позволяет вам
чтобы точно указать, как вы хотите, чтобы ваше дерево выглядело:
str('foo').parse('foo') # => "foo"@0 str('foo').as(:bar).parse('foo') # => {:bar=>"foo"@0}
Итак, вы думаете: #as(name)
позволяет мне создать хеш, большое дело.
Это не все. Вы заметите, что аннотирование всего, что вы хотите сохранить
в вашей грамматике с #as(name)
автоматически создает разумное дерево
состоит из хэшей, массивов и строк. Это действительно немного волшебно: Parslet
имеет набор умных правил, которые объединяют аннотированный вывод ваших атомов в
дерево. Вот еще несколько примеров с атомом слева и результирующим
дерево (при условии успешного синтаксического анализа) справа:
# Обычные строки просто отображаются в строки ул('а').Повторить "ааа"@0 # Массивы фиксируют повторение не строк str('a'). repeat.as(:b) {:b=>"aaa"@0} str('a').as(:b).repeat [{:b=>"a"@0}, {:b=>"a"@1}, {:b=>"a"@2} ] # Поддеревья объединяются - немаркированные строки отбрасываются str('a').as(:a) >> str('b').as(:b) {:a=>"a"@0, :b=>"b"@1} str('a') >> str('b').as(:b) >> str('c') {:b=>"b"@1} # #возможно вернет nil, а не пустой массив ул('а').maybe.as(:а) {:а=>"а"@0} ул('а').maybe.as(:а) {:а=>ноль}
Захват ввода
Дополнительные материалы для чтения — можете пропустить это.
Иногда синтаксическому анализатору необходимо сопоставить что-то, что уже было сопоставлено против. Например, подумайте о документах Ruby:
. ул = <<- ЗДЕСЬ Это часть heredoc. ЗДЕСЬ
Ключом к сопоставлению такого рода документов является захват части входных данных сначала, а затем построить остальную часть парсера на основе захваченной части. Вот как это выглядит в простейшем виде:
match['ab'].capture(:capt) >> # создаем захват динамический { | с, с | str(c. captures[:capt]) } # и сопоставить с использованием захвата
Этот синтаксический анализатор соответствует либо «aa», либо «bb», но не соответствует смешанным формам «ab» или «ba».
В последнем примере представлены два новых понятия для такого сложного синтаксического анализатора: #capture(name) Метод
и код dynamic { ... }
блокировать.
Добавление #capture(name)
к любому парсеру захватит эти парсеры
приводит к получению хэша в контексте синтаксического анализа. Тогда и только тогда, когда парсер match['ab']
успешно, он сохраняет либо «a», либо «b» в context.captures[:capt]
.
Единственный способ получить этот хеш в процессе синтаксического анализа — это динамический { ... }
кодовый блок. (по причинам, не зависящим от
рамки этого документа) В таком блоке можно:
динамический { |источник, контекст| # создавать парсеры, используя случайность ранд < 0,5 ? ул('а'): ул('б') # Или используя контекстную информацию ул(контекст. захваты[:захват]) # Или .. выполняя другую работу (потребляет 100 символов, а затем 'a') источник.потребить(100) ул('а') }
Scopes
Что делать, если вы хотите проанализировать heredocs, содержащиеся внутри heredocs? это все черепашки
путь вниз, в конце концов. Чтобы иметь возможность вспомнить, какая строка использовалась для
построить внешний heredoc, вы должны использовать #scope { ... }
блок, который был введен в parslet 1.5. Подобно открытию блока Ruby, он позволяет
вам записывать результаты (присваивать значения переменным) тем же именам, которые вы
уже используется во внешней области видимости — без уничтожения значений внешней области видимости для
эти захваты! .
Вот пример:
str('a').capture(:a) >> область {str('b').capture(:a) } >> динамический { | с, с | ул(c.captures[:a]) }
Это анализирует «аба» — если вы понимаете это, вы понимаете области действия и захватывает. Поздравляю.
И еще
Теперь вы точно знаете, как создавать парсеры с помощью Parslet. Ваши парсеры будет выводить сложные структуры, состоящие из бесконечных массивов, сложных хэшей и несколько остатков струн. Но ваши навыки программирования подводят вас, когда вы пытаетесь чтобы использовать все эти данные. Выбирая ключи за ключами в хеше за хешем, вы чувствовать себя тараканом, только что прочитавшим произведения Кафки. Это не весело. Этот это не то, на что вы подписались.
Пришло время познакомить вас с Parslet::Transform и его работой.
python - pyparsing: анализ предложения со специальными словами в нем
спросил
Изменено 6 лет, 1 месяц назад
Просмотрено 981 раз
Я пытаюсь написать программу с pyparsing, которая анализирует все строки, содержащие специальные слова. Я написал следующий код, но он не работает:
из импорта pyparsing * слово = слово (альфа) предложение = OneOrMore (слово) день = буквально ("день") предложение_end_with_happy = предложение + день + предложение ret = предложение_end_with_happy.parseString ("привет, это хороший день, и все в порядке")
Я попытался разобрать предложение со специальным словом "день", но при разборе возникли ошибки...
pyparsing.ParseException: ожидаемый «день» (в символе 42), (строка: 1, столбец: 43)
- питон
- парсинг
1
Использовать отрицательный прогноз при определении слова
; в противном случае слово
соответствует дню
, а предложение
будет потреблять его.
из импорта pyparsing * день = ключевое слово ("день") слово = ~ день + слово (альфа) предложение = OneOrMore (слово) предложение_конец_с_счастливым = предложение («первое») + день + предложение («последнее») ret = предложение_end_with_happy.