2016 Декабрь « Буквальное мышление
Одна из вещей, которые я не упомянул в своем обзоре « Words on the Move » Джона МакУортера, заключалась в том, что он использовал минимальные пары для изучения английских гласных. Минимальная пара — это пара слов или фраз, идентичных во всех аспектах, кроме одного, выбранных таким образом, чтобы проиллюстрировать, как этот аспект приводит к различию в значении или грамматике. Например, большинство носителей английского языка находят предложение What and where I will sleep? неграмотно, но если мы изменим всего одно слово, заменив глагол спать глаголом учить , предложение улучшится для многих говорящих: Чему и где я буду учить? Этот факт можно затем использовать в качестве доказательства для вашего анализа синтаксиса wh-вопросов, или семантики глаголов, или, возможно, других теоретических вопросов. В фонологии минимальные пары нацелены не на слова, а на звуки речи. Так, например, мы знаем, что гласные /ʌ/ и /ʊ/ — это две разные гласные в английском языке, в отличие от вариантов произношения одной и той же гласной, потому что такие слова, как

Маквортер пытался сделать это с всеми английские гласные сразу, собирая то, что, как я полагаю, можно было бы назвать минимальной серией слов, все в форме /bVt/, где V обозначает любую гласную. Вот серия, которую он использовал:
- /i/ свекла
- / ɪ / бит
- /д/ наживка
- / ɛ / ставка
- /æ/ летучая мышь
- / у / загрузки
- /ʊ/ книга
- /п/ лодка
- / ɔ / купил
- / ɑ / бат
- / ʌ / но
Его серия не идеальна; обратите внимание, что книга нарушает шаблон. Как объясняет Маквортер, «вообще не существует ряда слов, которые начинаются с одного и того же согласного и заканчиваются каким-то одним и тем же другим, включающим все возможные гласные между ними». Это также может объяснить, почему для последнего пункта в списке Маквортер выбрал почти английское слово 9.
Итак, как видите, попытки найти эти минималистичные наборы доставляют массу удовольствия, острых ощущений и сюрпризов. Одна серия, о которой я думаю время от времени, состоит из односложных слов, начинающихся и заканчивающихся на /k/. Я думаю, это началось, когда я был ребенком, и впервые услышал оскорбление

Будучи подростком, я выучил глагол cack (выйти) /kæk/ из этого укуса Джорджа Карлина после смерти (начиная с 7:43)–
– но я никогда не слышал, чтобы кто-то еще использовал это выражение, и я не нашел его в поиске по словарю. Впрочем, это нормально, потому что cack также может означать «детскую обувь без каблука с мягкой кожаной подошвой», а также «дерьмо».
Много лет спустя, будучи домовладельцем, я заметил, что сантехники и мастера, с которыми мы имели дело, предпочитают говорить о герметизации столешниц и окон с помощью герметика ing вместо простого герметика . Зная о cot/caught слияние, упомянутое выше, я подозреваю, что они пытаются избежать потенциально смущающей двусмысленности слияния cock/caulk , потому что они объединили эти гласные или их клиенты. В любом случае, для говорящих, которые сохраняют различие между / ɑ / и / ɔ /,
Заполнение остальной части серии, некоторые простые: удар /kɪk/, торт /kek/ и кокс /кок/, но после них дела обстоят сложнее. Тем не менее, в последние несколько лет я был рад видеть появление остальных частей серии. Я узнал об обсерватории Кека на Гавайях. И оказывается, что keek — это слово, используемое в Северной Англии и Шотландии и означающее «подглядывать или смотреть украдкой». По-видимому, это также название социальной сети, похожей на Vine, о которой я никогда не слышал, пока не нашел ее во время написания этого поста.
Только одна последняя удерживающая гласная делала мою минимальную серию «К» незавершенной: средне-центральная гласная /ʌ/. Так близко, но увы, cuck не английское слово. Либо это?
- /я/ кик
- / ɪ / удар
- /д/ торт
- / ɛ / Кек
- /æ/ cack
- /у/ кук
- /ʊ/ повар
- /п/ кокс
- / ɔ / герметик
- / ɑ / петух
- / ʌ / куколд
Так и есть! Благодаря недавнему росту популярности речей, нападающих на феминизм и политкорректных людей, которые в него верят, я узнал, что cuck действительно английское слово, и оно существует по крайней мере с 2007 года. Это вырезка из рогоносец , архаично звучащий, но все еще актуальный термин для мужчины, чья жена занимается внебрачным сексом. Рогоносец этимологически связан с кукушка , связь заключается в том, что так же, как кукушки заставляют своих невольных жертв обеспечивать потомство кукушки, так и «кукушечный» мужчина может в конечном итоге заботиться о ребенке другого мужчины. В интересной связи с другим предметом в серии kook также может быть получено из cuckoo
Слово приобрело политическую силу во время выборов 2016 года в портмоне «cuckservative» (cuck + консерватор), которое использовалось для обозначения того, что основные консерваторы разновидности Джеба Буша являются слабый и женоподобный. Дональд Трамп, с другой стороны, не консерватор. Он говорит то, что хочет, и его не волнует, что это оскорбительно.
Ссылаясь на комментарии Трампа о том, что у Мегин Келли «кровь течет из нее где угодно», радиоведущий Раш Лимбо язвительно заметил: «Если бы Трамп был обычным республиканцем-рогоносцем, он бы уже извинился».
Но Дональд Трамп не извиняется. Затем он стал кандидатом в президенты от республиканцев, поскольку Джеб Буш, бывший фаворит, был безвозвратно отброшен назад из-за простого оскорбления Трампа, произнесенного с невидимым подмигиванием: «низкоэнергетический».
С тех пор, как Дональд превзошел поле куколдистов своей мужественной мужественностью и пышной шевелюрой, те, кто не мог видеть, что хорошее оскорбление пропадает даром, продолжали использовать его в его сокращенной форме — куколд — что в первую очередь относится к любому, кто поддерживает Хиллари. , но и любой, кто оспаривал бы Дональда Трампа в его правописании, его логике или фактах.
Прочтите остальную часть статьи GQ, чтобы узнать о других интересных историях и анализах. Но просто чтобы напомнить морфологическую историю слова, cuckold дало нам cuckold через отсечение, которое дало нам cuckservative через смешивание, которое теперь снова дало нам cuck через другое отсечение.
python — обработка разных результатов при использовании функций dump() и asXML()
Если есть разница между dump()
и asXML()
, я скорее увижу это как ошибку в asXML()
. Этот метод вынужден делать довольно много «угадывания» того, что требуется, и я легко вижу, что в некоторых обстоятельствах он ошибается.
По умолчанию pyparsing возвращает все проанализированные токены в виде плоского списка строк. Он делает это независимо от того, как был построен синтаксический анализатор. Это так, что
(A + B + C).parseString АА = А + В (AA + C).parseString и ДД = В + С (А + ДД).parseString
все возвращают одно и то же.
Давайте рассмотрим простую грамматику, кратную парам имя/возраст:
test = "Боб 10 Сью 12 Генри 7"
А вот и наш парсер:
name = Word(alphas) целое число = слово (числа) синтаксический анализатор = OneOrMore (имя + целое число) # или вы можете использовать новый синтаксис умножения синтаксический анализатор = (имя + целое число) * (1,)
С данным образцом текста и синтаксическим анализатором выше это будет:
['Боб', '10', 'Сью', '12', 'Генри', '7']
Теперь это не так сложно пройти, читая два элемента за раз. Но если бы были дополнительные необязательные поля, все стало бы сложнее. Таким образом, гораздо проще сказать pyparsing, что имя и возраст каждого человека должны быть сгруппированы вместе.
синтаксический анализатор = OneOrMore (Группа (имя + целое число))
Теперь мы получаем подсписок для каждого человека, и не нужно гадать, могут ли быть дополнительные опции.
[['Боб', '10'], ['Сью', '12'], ['Генри', '7']]
Если вы добавите имена результатов в исходный разгруппированный синтаксический анализатор, мы увидим это (я использую «новый» вызываемый синтаксис вместо многословного и отвлекающего формата вызова «setResultsName»):
парсер = OneOrMore(имя("имя") + целое число("возраст")) результат = parser.parseString(тест)
Зная, что мы теперь знаем о несгруппированных результатах, если мы запросим result.name
, какое имя мы должны получить?
Если у вас есть ситуация, когда несколько выражений имеют одно и то же имя результата, у вас есть 3 варианта:
оставить только последний анализируемый (по умолчанию, что вы видите)
добавить группировку с помощью класса Group, чтобы несколько общих результатов были разделены на разные подструктуры
добавить аргумент
listAllItems=True
кsetResultsName()
парсер = (OneOrMore(name.