Поразительная история про режиссера Быкова
15.10.2017 - 1:48
Поразительная история про режиссера Быкова | Русская весна
Известный публицист Дмитрий Ольшанский — о режиссере Юрии Быкове, снявшем
прекрасный патриотический сериал о российских чекистах «Спящие» и решившим вдруг
покаяться перед «прогрессивной либеральной общественностью»
Режиссер Быков снял сериал — что-то, говорят, древнесоветское, про американских
шпионов и хороших чекистов, а когда «честные люди» принялись его за это травить,
— он вдруг сломался и начал каяться.
И так он стал каяться, что даже сложно было сразу поверить, что это не игра.
Но нет, оказывается, не игра.
Быков написал о себе:
«Я слабый, сомневающийся человек, чья мягкость и дезориентированность в моменте
привела к тому, что лучшие умы страны от меня окончательно отвернулись».
А еще он написал:
«Я предал всё прогрессивное поколение, которое что-то хотело изменить в этой
стране.
Боюсь, что после совершенного я больше не могу быть публичной фигурой и объектом
следования. Мне придётся уйти надолго в тень и даже не для того, чтобы мои
преступления забыли, а для того, чтобы не раздражать собой окружающий мир».
Удивительные слова.
Такие знакомые-знакомые.
Еще бы, ведь в древнесоветские времена, когда человек проходил сквозь строй
партсобраний и разоблачений, и ждал ареста, — он именно так и формулировал свое
разоружение перед лицом партии и правительства, буквально в этих же выражениях.
А теперь так разоружаются перед «честными людьми».
Эта история, на самом деле, про то, что идеи во времени живут отдельно от тех
символов, которые эти идеи должны представлять.
И сталинский СССР в двадцать первом веке — это не пенсионеры с красными флагами,
не заваленная цветами могила Иосифа Виссарионыча, не книжки с названиями вроде «Эффективный
нарком и попаданцы — вместе ударим по США!», не сериалы про шпионов с чекистами,
и не современные кремлевские кабинеты, где можно встретить скорее расслабленный
цинизм, чем единомыслие и страх.
А подлинный сталинский СССР, продленный в будущее, — это «честные люди», те
самые лучшие умы.
Только они умеют навязывать вроде бы самостоятельным и образованным людям, как и
о чем им надо думать.
Так называемый кровавый режим за все восемнадцать лет своего существования ни
разу не видел ни от кого покаянного письма в бухаринском духе, с этими
классическими «я предал» и «я слабый человек, моя дезориентированность привела к
тому».
Нет за ним той настоящей, тоталитарной силы, когда не надо даже с человеком
ничего физически делать, а он уже на все готов, он сидит и рыдает, и не хочет
раздражать собой окружающий мир, поскольку лучшие умы от него отвернулись.
И хочется сказать ему, этому несчастному Быкову:
Дорогой Юрий!
Да не бойтесь вы их так!
Они, конечно, верные сталинцы — именно они, — но уже совсем не такие страшные,
как их предки в 1937-м.
Они уже — вырожденцы, говоря прямо.
Так что вы просто откройте глаза и скажите себе:
— Больше не боюсь прогрессивного поколения!
— Больше не боюсь лучших умов!
У вас получится, я в вас верю.
Сяпала Калуша по напушке и увазила бутявку. И волит:
— Калушата, калушаточки! Бутявка!
Калушата присяпали и бутявку стрямкали. И подудонились.
А Калуша волит:
— Оее, оее! Бутявка-то некузявая!
Калушата бутявку вычучили.
Бутявка вздребезнулась, сопритюкнулась и усяпала с напушки.
А Калуша волит:
— Бутявок не трямкают. Бутявки дюбые и зюмо-зюмо некузявые. От бутявок дудонятся.
А бутявка волит за напушкой:
— Калушата подудонились! Калушата подудонились! Зюмо некузявые! Пуськи бятые!
import pymorphy
morph = pymorphy.get_shelve_morph('ru')
#слова должны быть в юникоде и ЗАГЛАВНЫМИ
info = morph.get_graminfo(unicode('Вася').upper())
Задача | Как используется |
Получение начальной формы — Лемматизация | Поиск |
Постановка слова в заданную форму |
Автоматический перевод Синтез речи |
Получение всех форм слова |
Поиск Базы знаний Текстовый редактор OCR |
Грамматическое значение |
Автоматический перевод OCR Распознавание речи |
Словарность слова | OCR |
Исправление слова |
Поиск Текстовый редактор |
Страница лекции
[('съешьте', 'глаг.'), ('еще', 'нареч.'), ('этих', 'местоим. прил.'),
('мягких', 'прил.'), ('французских', 'прил.'), ('булок', 'сущ.'), ('да',
'союз'), ('выпейте', 'глаг.'), ('чаю', 'сущ.')]
<se>
<w><ana lex="между" gr="PR"></ana>М`ежду</w>
<w><ana lex="то" gr="S-PRO,n,sg=ins"></ana>тем</w>
<w><ana lex="конкурент" gr="S,m,anim=pl,nom"></ana>конкур`енты</w>
<w><ana lex="наступать" gr="V,ipf,intr,act=pl,praes,3p,indic"></ana>наступ`ают</w>
<w><ana lex="на" gr="PR"></ana>на</w>
<w><ana lex="пятка" gr="S,f,inan=pl,acc"></ana>п`ятки</w> .
</se>
<se>
<w><ana lex="вот" gr="PART"></ana>Вот</w>
<w><ana lex="так" gr="ADV-PRO"></ana>так</w>,
<w><ana lex="за" gr="PR"></ana>з`а</w>
<w><ana lex="пять" gr="NUM=acc"></ana>пять</w>
<w><ana lex="минута" gr="S,f,inan=pl,gen"></ana>мин`ут</w>
<w><ana lex="до" gr="PR"></ana>до</w>
<w><ana lex="съемка" gr="S,f,inan=pl,gen"></ana>съёмок</w> ,
<w><ana lex="родиться" gr="V,pf,intr,med=m,sg,praet,indic"></ana>род`илс`я</w>
<w><ana lex="новый" gr="A=m,sg,nom,plen"></ana>н`овый</w>
<w><ana lex="персонаж" gr="S,m,anim=sg,nom"></ana>персон`аж</w> .
</se>
'S': 'сущ.',
'A': 'прил.',
'NUM': 'числ.',
'A-NUM': 'числ.-прил.',
'V': 'глаг.',
'ADV': 'нареч.',
'PRAEDIC': 'предикатив',
'PARENTH': 'вводное',
'S-PRO': 'местоим. сущ.',
'A-PRO': 'местоим. прил.',
'ADV-PRO': 'местоим. нареч.',
'PRAEDIC-PRO': 'местоим. предик.',
'PR': 'предлог',
'CONJ': 'союз',
'PART': 'частица',
'INTJ': 'межд.'
'''
съешьте - глагол
выпейте - глагол
чаю - сущ.
'''
x = [{1001: 1, 2001: 1, 3001: 1}, # 1001 - съешьте, 2001 - ьте, 3001 - те
{1002: 1, 2002: 1, 3001: 1}, # 1002 - выпейте, 2002 - йте, 3001 - те
{1003: 1, 2003: 1, 3002: 1}] # 1003 - чаю, 2003 - чаю, 3002 - аю
y = [1, 1, 2] # 1 - глагол, 2 - сущ.
import liblinearutil as svm
problem = svm.problem(y, x) # создаем задачу
param = svm.parameter('-c 1 -s 4') # параметры обучения
model = svm.train(prob, param) # обучаем модель
# используем модель для распознания слова 'съешьте'
label, acc, vals = svm.predict([0], {1001: 1, 2001: 1, 3001: 1}, model, '') # [0] - обозначает, что часть речи нам неизвестна
“Оффлайновая версия корпуса недоступна, однако для свободного пользования предоставляется случайная выборка предложений (с нарушенным порядком) из корпуса со снятой омонимией объёмом 180 тыс. словоупотреблений (90 тыс. – пресса, по 30 тыс. из художественных текстов, законодательства и научных текстов)”.При этом в википедии написано
“The corpus will be made available off-line and distributed for non-commercial purposes, but currently due to some technical and/or copyright problems it is accessible only on-line.”
import xml.parsers.expat
class Reader:
def __init__(self):
self._parser = xml.parsers.expat.ParserCreate()
self._parser.StartElementHandler = self.start_element
self._parser.EndElementHandler = self.end_element
self._parser.CharacterDataHandler = self.char_data
def start_element(self, name, attr):
if name == 'ana':
self._info = attr
def end_element(self, name):
if name == 'se':
self._sentences.append(self._sentence)
self._sentence = []
elif name == 'w':
self._sentence.append((self._cdata, self._info))
elif name == 'ana':
self._cdata = ''
def char_data(self, content):
self._cdata += content
def read(self, filename):
f = open(filename)
content = f.read()
f.close()
self._sentences = []
self._sentence = []
self._cdata = ''
self._info = ''
self._parser.Parse(content)
return self._sentences
[[('Вод`итель', {'lex': 'водитель', 'gr': 'S,m,anim=sg,nom'}), ('дес`ятки', {'lex': 'десятка', 'gr': 'S,f,inan=sg,gen'}), ('кот`орую', {'lex': 'который', 'gr': 'A-PRO=f,sg,acc'}), ('прест`упники', {'lex': 'преступник', 'gr': 'S,m,anim=pl,nom'}), ('пойм`али', {'lex': 'поймать', 'gr': 'V,pf,tran=pl,act,praet,indic'}), ('у', {'lex': 'у', 'gr': 'PR'}), ('ВВЦ', {'lex': 'ВВЦ', 'gr': 'S,m,inan,0=sg,gen'}), ('оказ`ал', {'lex': 'оказать', 'gr': 'V,pf,tran=m,sg,act,praet,indic'}), ('им', {'lex': 'они', 'gr': 'S-PRO,pl,3p=dat'}), ('`яростное', {'lex': 'яростный', 'gr': 'A=n,sg,acc,inan,plen'}), ('сопротивл`ение', {'lex': 'сопротивление', 'gr': 'S,n,inan=sg,acc'}), ('за', {'lex': 'за', 'gr': 'PR'}), ('что', {'lex': 'что', 'gr': 'S-PRO,n,sg=acc'}), ('поплат`ился', {'lex': 'поплатиться', 'gr': 'V,pf,intr,med=m,sg,praet,indic'}), ('ж`изнью', {'lex': 'жизнь', 'gr': 'S,f,inan=sg,ins'})]]
import sys
import re
import rnc
import pos
sentences = []
sentences.extend(rnc.Reader().read('tmp/media1.xml'))
sentences.extend(rnc.Reader().read('tmp/media2.xml'))
sentences.extend(rnc.Reader().read('tmp/media3.xml'))
re_pos = re.compile('([\w-]+)(?:[^\w-]|$)'.format('|'.join(pos.tagset)))
tagger = pos.Tagger()
sentence_labels = []
sentence_words = []
for sentence in sentences:
labels = []
words = []
for word in sentence:
gr = word[1]['gr']
m = re_pos.match(gr)
if not m:
print(gr, file = sys.stderr)
pos = m.group(1)
if pos == 'ANUM':
pos = 'A-NUM'
label = tagger.get_label_id(pos)
if not label:
print(gr, file = sys.stderr)
labels.append(label)
body = word[0].replace('`', '')
words.append(body)
sentence_labels.append(labels)
sentence_words.append(words)
tagger.train(sentence_words, sentence_labels, True)
tagger.train(sentence_words, sentence_labels)
tagger.save('tmp/svm.model', 'tmp/ids.pickle')
import sys
import pos
sentence = sys.argv[1].split(' ')
tagger = pos.Tagger()
tagger.load('tmp/svm.model', 'tmp/ids.pickle')
rus = {
'S': 'сущ.',
'A': 'прил.',
'NUM': 'числ.',
'A-NUM': 'числ.-прил.',
'V': 'глаг.',
'ADV': 'нареч.',
'PRAEDIC': 'предикатив',
'PARENTH': 'вводное',
'S-PRO': 'местоим. сущ.',
'A-PRO': 'местоим. прил.',
'ADV-PRO': 'местоим. нареч.',
'PRAEDIC-PRO': 'местоим. предик.',
'PR': 'предлог',
'CONJ': 'союз',
'PART': 'частица',
'INTJ': 'межд.',
'INIT': 'инит',
'NONLEX': 'нонлекс'
}
tagged = []
for word, label in tagger.label(sentence):
tagged.append((word, rus[tagger.get_label(label)]))
print(tagged)
$ src/test.py "Съешьте еще этих мягких французских булок, да выпейте же
чаю"
[('Съешьте', 'глаг.'), ('еще', 'нареч.'), ('этих', 'местоим. прил.'),
('мягких', 'прил.'), ('французских', 'прил.'), ('булок,', 'сущ.'),
('да', 'союз'), ('выпейте', 'глаг.'), ('же', 'частица'), ('чаю',
'сущ.')]
Как чуден и глубок русский курлык
— Генератор постов
Свою библиотеку я назвал Az.
С одной стороны — это первая буква кириллицы, «азъ», и в то же время
первая и последняя буквы латиницы. Сразу дам все ссылки:
— GitHub;
— Документация: либо на
гитхабе же, либо на
Doclets.io;
— Демо.
Установить библиотеку вы можете как из npm,
так и из bower (в
обоих местах она имеет название az).
На свой страх и риск — она ещё не покрыта полностью тестами и до выхода
первой версии (который произойдет скоро, я надеюсь) у неё могут
измениться публичные API. Лицензия: MIT.
На данный момент библиотека умеет две вещи: токенизацию и анализ
морфологии. В некотором отдаленном будущем (но не в первой версии)
предполагается реализовать синтаксический анализ и извлечение смыслов из
предложений.
Зачем было придумано понятие части речи? Что такое морфологический анализ? И почему школьник лучше компьютера определяет, к какой части речи относится слово? Об этом во второй части курса «Компьютерная лингвистика» рассказывает Светлана Тимошенко из Лаборатории компьютерной лингвистики ИППИ РАН.
https://chrdk.ru/other/komputernaya_lingvistika_2
https://habrahabr.ru/post/339954/
Не так давно по работе столкнулся с задачей разбора морфологии слов, учитывая что русская морфология довольно сложная, то писать свой скрипт я не видел смысла и считаю это было бы не рационально. Недолгие поиски привели меня к библиотеки PhPMorhy (http://sourceforge.net/projects/phpmorphy/), в данной статье я хотел бы немного описать эту библиотеку.
Итак, библиотека состоит из php классов, и отдельно подключаемыми словарями. На сайте библиотеки можно скачать словари для русского(Windows-1251 и UTF-8), английского, немецкого, украинского, эстонского языков. Словари основываются на aot и ispell словарях.
Что же умеет эта библиотека? Для начала хотел обратить внимание что можно получить корень слова, морфологические формы слова, определение частей речи, грамматические формы. Я думаю многие разработчики понимают пользу таких преобразований, например, есть возможность улучшить поиск в своей системе, если получать корень слова и искать уже по нему. В данном случае моя задача состояла сбор анкоров в СЕО системе, учитывая морфологию слов.
Данная библиотека имеет разные режимы работы, которые могут влиять на скорость загрузки и обработки данных. Так как словари весят от 6 до 15мб, то есть возможность частичной подгрузки словарей. Минус библиотеки состоит в том что нельзя подгрузить сразу 2 и более словарей, к примеру что бы проверять словосочетания: игры online. Так же с кодировками, нужно запрашивать слова в той кодировке что и словарь. Все слова должны быть написаны в ВЕРХНЕМ регистре. Для получения информации о словосочетании вам придется разделать его на массив. Все слова так же будут выданы в массиве, даже если было все одно слово, на выходе вы получите многотомный массив.
Вот небольшой пример использования кода:
$keywords = mb_convert_case($row['keywords'], MB_CASE_UPPER, "UTF-8");
$list_keywords = explode(" ", str_replace("-"," ", $keywords));
foreach($list_keywords as $word){
if(!empty($word) && $word!=''){
if(eregi("[a-zA-z]", $word)){
$eng[] = $word;
}else{$rus[] = $word;}
}
}unset($keywords);
$keywords = array();
if(isset($rus) && !empty($rus)){
$morphyRUS = new phpMorphy($dir, 'ru_ru', array('storage' => PHPMORPHY_STORAGE_FILE));
array_add($keywords, $morphyRUS->getPseudoRoot($rus));
}
if(isset($eng) && !empty($eng)){
$morphyENG = new phpMorphy($dir, 'en_en', array('storage' => PHPMORPHY_STORAGE_FILE));
array_add($keywords, $morphyENG->getPseudoRoot($eng));
}
Функция array_add в данном случае делает однотомный массив и склеивает русские и английские словоформы.
Если слова нет в словаре, то он возвращает пустой массив.