Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 5314 сообщений
Cообщения с меткой

диалоги - Самое интересное в блогах

Следующие 30  »
rss_rss_hh_new

[Перевод] Игра Престолов. Поиск авторов диалогов в книгах

Вторник, 28 Июня 2016 г. 09:32 (ссылка)





Привет Хабрахабр,



На основании результата голосования в статье Теория Графов в Игре Престолов, я перевожу обучающий материал Эрика Германи (Erik Germani), который получил социальный граф связей из 5 первых книг серии «Песнь льда и пламени», лёгший в основу вышеупомянутой статьи. Статья не содержит подробного описания методов машинного обучения, а скорее рассказывает как на практике можно использовать существующие инструменты для поиска авторов диалогов в тексте. Осторожно, много букв! Поехали.



Данный обучающий материал нацелен на новичков в машинном обучении, таких как я, когда начинал этот проект год назад. (И коим до сих пор являюсь, хотя сейчас я просто зелёный, а не ярко зелёный в этой теме.) Мы построим модель, способную определить кто говорит строку диалога в книгах Джордж Р.Р. Мартина «Песнь льда и пламени». Для этого, мы будем использовать метод условных случайных полей CRF (прим. от Conditional Random Fields) и замечательную утилиту CRFsuite от Наоаки Оказаки. Для обработки текста воспользуемся Python 2.7 и NLTK (Natural Language Toolkit).



Я хочу быть детальным с этим материалом. Надеюсь, что при описании каждого шага моих действий, вы сможете извлечь для себя новые инструменты и методы, которые будут полезны в ваших собственных проектах. Объяснения кода будут от новичка и для начинающего, того, кто понимает синтаксис Python и знает об абстракции списков, но не более того. Если вы чувствуете, что мои разъяснения кода иссушают вашу душу, пропустите их.



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


  • Мне удалось добиться хорошего результата (~75% точности) с CRFsuite из коробки


  • Тут не будет LaTeX




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



Давайте начнём.



Загрузка текста



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



Если вы новичок в области обработки естественного языка, то возможно недооцениваете каким непростым может оказаться исходный текст. У каждого файла .txt есть кодировка, которая определяет как будет описываться каждый символ. ASCII, формат в котором я прочитал прохождения игры Ocarina of Time, был вытеснен UTF-8, который может справиться со всеми специальными символами. (ASCII может представить 128 символов.) Моя копия ПЛИП (прим. Песнь Льда и Пламени) в UTF-8, что доставит небольшие неудобства, но на самом деле является бонусом.



Мы загрузим этот текст в NLTK чтобы легче манипулировать им. NLTK может проделать массу задач, и именно так я изучил Python, если это окажется интересным для вас, то взгляните на их отличную онлайн книгу. В наших целях использовать этот инструмент, чтобы разбить текст на токены. Это подразумевает разделение предложения на слова и знаки препинания, это часто делают в проектах по обработке естественного языка.

import nltk
nltk.word_tokenize("NLTK is ready to go.")
['NLTK', 'is', 'ready', 'to', 'go', '.']


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



Создайте папку и вставьте туда текстовые файлы ПЛИП. Так как книги очень большие, то общедоступного текста источника будет почти 10 Мб. Не идеально для поиска и замены в тексте. Я разделил текст на книги, но настоящие профессионалы, которые собираются анализировать больше, скорее разделят ещё каждую книгу по главам и последовательно пронумеруют.

Но не будем сейчас всё усложнять! Как только в папке оказался текст, мы можем запустить следующее:

corpus = nltk.corpus.PlaintextCorpusReader(r'corpus', 'George.*\.txt', encoding = 'utf-8')


Здесь r указывает не обрабатывать строку. Тут это неважно, т.к. я напрямую обращаюсь к папке «corpus», но если в вашем случае у папки сложное местоположение, лучше не забывать об этом.



Второй аргумент — регулярное выражение, которое указывает NLTK брать все файлы в папке, в названиях которых присутствует «George» и с расширением ".txt".



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



Корпус в NLTK очень полезен, с ним можно получить информацию из текста на разных уровнях.

corpus.words("George R. R. Martin - 01 - A Game Of Thrones.txt")[-5:]
[u'the', u'music', u'of', u'dragons', u'.']

corpus.words()[0]
u'PROLOGUE'

corpus.sents()[1][:6]
[u'\u201c', u'We', u'should', u'start', u'back', u',\u201d']


Тут мы слышим обреченного Гареда из пролога Игры Престолов и видим некоторые символы в кодировке Юникод, представленные в Python. Вы видите, что все строки Юникод начинаются с u, и содержат специальные символы. \u201c это левая кавычка, \u201d правая. Я упоминал что UTF-8 это скорее бонус, и вот почему. Давайте посмотрим что будет если мы откроем этот же файл без указания кодировки.

bad_corpus = nltk.corpus.PlaintextCorpusReader(r'corpus', '.*\.txt')
bad_corpus.sents()[1][:9]
['\xe2', '\x80\x9c', 'We', 'should', 'start', 'back', ',', '\xe2', '\x80\x9d']


Так же как \u указывает на строку в формате Юникод, \x указывает на шестнадцатеричную строку, таким образом NLTK даёт нам 3 шестнадцатеричных байта — \xe2, \x80, \x9c — и пытается разбить их. Можно видеть, что он не знает как это сделать.



Мы будем работать с параграфами, поэтому давайте взглянем на один из них:

print corpus.paras()[1]
[[u'\u201c', u'We', u'should', u'start', u'back', u',\u201d', u'Gared', u'urged', u'as', u'the', u'woods', u'began', u'to', u'grow', u'dark', u'around', u'them', u'.'], [u'\u201c', u'The', u'wildlings', u'are', u'dead', u'.\u201d']]


Вы можете заметить, как NLTK структурирует данные. Предложения это список токенов, а параграф список предложений. Достаточно легко!



Метки



Далее нам нужно подготовить данные для обучения, но чтобы сделать это, нужно определиться с метками, которые мы будем использовать. При парсинге текста, алгоритм знает принадлежность любого токена к лексической категории, каждый из которых имеет свою метку. JJ это прилагательное, NN — существительное, IN — предлог. Эти метки играют ключевую роль для достоверности работы нашей модели. The Penn Treebank (прим. проект по метке текста) выделяет 36 таких меток.



Какие же будут наши метки? Простейший вариант это имена персонажей. Это не сработает по нескольким причинам:




  1. ПЛИП содержит больше тысячи персонажей. Это слишком большой выбор для нашей бедной модели. Нам нужно отсеять как можно больше меток, чтобы правильно классифицировать полагаясь на банальную удачу.


  2. К персонажам обращаются по разному. Джоффри может быть как «Джоффри», так и «Джофф», «Принц» или даже просто «он».


  3. Если мы будем использовать имена персонажей в качестве меток, то они должны быть определены в обучающих данных. Иначе, наша модель не будет в курсе о их существовании и поэтому никак не сможет их определить.


  4. Все персонажи звучат просто напросто одинаково. (Я это понял благодаря другому опыту с машинном обучением, где я пытался разделить персонажей по их словарному запасу). У некоторых есть броские фразы, такие как «прискорбно» (прим. grievous) для Вариса и «Ходор» для Ходора, но это редкость. К тому же, для многих отведено недостаточно времени для разговоров, чтобы различить их от остальных.






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



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



«Уилл видел их» отвечал Гаред.



[...]



Сир Уэймар Ройс поглядел на небо без всякого интереса. «Ночь каждый день приходит примерно в это же время. Неужели тьма лишает тебя мужества, Гаред?»


Хотя не каждая строка диалога бывает помечена. Посмотрите дальше и увидите:



«А ты заметил положение тел?»


Вы взглянете на параграфы сверху и снизу. Вот 2 сверху:



«А оружие?»



«Несколько мечей и луков. У одного был топор, тяжелый такой, с двумя лезвиями… жестокое железо. Он лежал на земле возле этого человека, прямо у руки.»


Ни капли намёка. Два параграфа ниже:



Уилл пожал плечами. «Один сидел возле скалы. Остальные были на земле, попадали, что ли.»



«Или спали,» предположил Ройс.


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



Эта схема и поможет помечать нашей модели. Мы научим её определять собственные имена рядом с текстом и если таких не найдётся, искать в близлежащих параграфах. Тогда, нашими метками будут:



PS ±2, FN ±2, NN ±2, Другие.



PS — после говорящий. Если метка параграфа PS -2, то это будет означать что имя, говорящего часть диалога, располагается двумя параграфами выше. Если FN 1, то первое имя в следующем параграфе. NN 0 обозначает как минимум 2 имени предшествуют диалогу и нам нужен ближайший к диалогу.



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



Пометка



Теперь мы подготовим обучающие данные. Поможет нам в этом SublimeText. Я открыл текст «Игра Престолов», выделил левую кавычку, выбрал Find -> Quick Find All, и дважды нажал клавишу Home. Теперь курсор оказался возле начала каждого параграфа с диалогом. Дальше я набрал "{}". Т.к. в тексте нет фигурных скобок, то мы можем использовать их чтобы оставлять заметки, которые будем использовать в будущем.



Мы будем использовать регулярное выражение (?<=\{)(?=\}) чтобы прыгать по фигурным скобкам. Если вы не встречались с данной конструкцией, то они называются положительные ретроспективные и опережающие проверки. Первое выражение в скобках заставит SublimeText начать выделять строки, у которых в начале стоит открывающая фигурная скобка (экранированная обратным слэшем). Следущее выражение скажет остановиться когда найдется закрывающая фигурная скобка. Как вы могли заметить оба выражения состоят из конструкции ?=, только первая содержит еще и <.



Теперь вы можете переходить по скобкам нажимая на F3, что является горячей клавишей для поиска следующего в SublimeText под Windows. Такого рода оптимизация важна, т.к. вы будете помечать приблизительно тысячи диалогов. Как минимум столько сделал я. Это не было столь тяжело и время затратно как я предполагал. (Хотя возможно я вру, т.к. я закончил спустя лишь год).



Прежде чем вы приступите, хочу сделать одно замечание: подумайте над тем, хотите ли вы использовать позиционные метки (PS, FN, NN) или все же имена персонажей. Я знаю, что уже сказал что не будем использовать имена, но если вы решились использовать позиционные метки то вы связываете эти обучающие данные с соответствующей моделью. Если вы пометите диалоги Джона меткой «Jon», то в будущем у вас будет возможность поменять метку на позиционную, либо же использовать другие метки, если найдёт лучше.



Я думаю, что тут нет однозначного ответа. В прошлом году я помечал именами персонажей. Теперь же мне необходимо совершать предварительные манипуляции, которые добавляют неоднозначности. Если имя Эддарда появляется 2 параграфа выше и один параграф ниже, то какой выбрать? Это напрямую затронет поведение модели и совершая это автоматически делает процесс еще больше неточным. Поэтому я не уверен что посоветовать. Мне кажется, что с точки зрения ручной метки, легче написать имя персонажа, но, с точки зрения автоматизации, намного удобнее иметь позиционные метки.



Извлечение свойств



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



Напомни, какие свойства? Рабочими лошадками, ответственными за точность модели являются следующие функции: существуют ли в текущем, либо в соседних параграфах PS, FN или NN.



Поиск имён



Наша первая функция должна находить имена собственные. Это можно сделать с помощью определения частей речи.



sentence = corpus.paras()[33][0]
print " ".join(sentence)
print nltk.pos_tag(sentence)
" Such eloquence , Gared ," Ser Waymar observed .
[(u'\u201c', 'NN'), (u'Such', 'JJ'), (u'eloquence', 'NN'), (u',', ','), (u'Gared', 'NNP'), (u',\u201d', 'NNP'), (u'Ser', 'NNP'), (u'Waymar', 'NNP'), (u'observed', 'VBD'), (u'.', '.')]


NPP возле Ser и Waymar означает что это имена собственные. Но тут есть и минусы:


  1. Случаются ошибки. Заметили как закрывающая кавычка стала именем собственным?


  2. Определение частей речи занимает время.




%timeit nltk.pos_tag(sentence)
100 loops, best of 3: 8.93 ms per loop


asoiaf_sentence_count = 143669
( asoiaf_sentence_count * 19.2 ) / 1000 / 60
45.974079999999994


В ПЛИП много параграфов для обработки и 45 с лишним минут для определения частей речи затянет процесс тестирования и рефакторинга. Конечно, можно было бы один раз всё проанализировать и дальше работать с тем, что получилось. Но для этого пришлось бы иметь дело с ещё одной структурой данных и такое определение пришлось бы переделывать каждый раз когда исходный текст меняется. (И это неизбежно.)



К счастью, не обязательно связываться с частями речи для определения имён персонажей. Это одно из преимуществ выбора ПЛИП для анализа: существуют тонны данных которые уже получены. Давайте наскребём некоторые из них.



Существующая информация



Тут оказалась очень полезной Wiki Песни Льда и Пламени, я получил практически исчерпывающий список имён персонажей буквально скопировав страницу со списком героев. Результат можно найти тут. Если этого для вас достаточно, то встретимся в следующей главе статьи. Для тех, кому интересно как можно автоматически извлечь данные со страницы, я приведу пару способов которыми я пользовался в других проектах.



Wget



Отличная утилита которая очень проста, если вам нужно пройтись по заранее известным ссылкам. Не придётся думать как обходить ссылки, нужно лишь создать файл со списком и передать его используя флаг -i, вот так:

wget -i list_of_links.txt


Requests



В Python есть библиотека requests, которая хорошо подходит для работы с отдельными страницами.

import requests

r = requests.get("http://awoiaf.westeros.org/index.php/List_of_characters")
html = r.text
print html[:100]




pre>

Парсинг



После скачивания html, нам нужно отшелушить страницу от лишних тегов, чтобы добраться до ссылок. BeautifulSoup это HTML парсер, который позволит без лишней суеты получить ссылки. После установки и парсинга, найти все ссылки можно просто запустив:

parsed_html.find_all("a")


Тут можно почитать об этом больше.



Мне хочется рассказать еще об одном способе, в котором используется библиотека lxml. С помощью этой библиотеки можно работать с Xpath. Я новичок в Xpath, но это мощный способ двигаться по древовидной структуре.

import lxml.html

tree = lxml.html.fromstring(html)
character_names = tree.xpath("//ul/li/a[1]/@title")
print character_names[:5]
['Abelar Hightower', 'Addam', 'Addam Frey', 'Addam Marbrand', 'Addam Osgrey']


Если вы косо посмотрели на выражение Xpath сверху, то вот что оно делает:

tree.xpath("//ul        # выбирает все не нумерованные списки
            /li        # выделяет элементы списков
            /a[1]      # выделяет первую ссылку в элементе.
            /@title    # возвращает атрибут title
          ")


Теперь, нужно выделить среди результата имена и удалить то, что к имени никакого отношения не имеет. Просто пробежавшись по странице ПЛИП, я заметил элементы вида «Taena of Myr». Мы ведь не хотим чтобы наша модель сопоставляла диалогам частицу «of».



NLTK поможет в этом. В нём есть корпус текста с «плохими» словами — stopwords. Такими, которые встречаются настолько часто, что не несут никакого смысла для характеристики текста.

particles = ' '.join(character_names).split(" ")
print len(set(particles))

stopwords = nltk.corpus.stopwords.words('english')
print stopwords[:5]

particles = set(particles) - set(stopwords)
print len(particles)

# Кое что всё же проскользнёт. Т.к. Aegon I в списке ПЛИП, то римская
# цифра I будет восприниматься как имя. Нужно почистить это вручную.
"I" in particles
2167
['i', 'me', 'my', 'myself', 'we']
2146
True


И в конце нужно добавить еще некоторые, возможно, упущенные прозвища, такие как Дени, Чёрная Рыба или Джофф. Если вы довольны списком имён, то сохраните его в файле для дальнейшего использования.



Поиск имён. Часть 2



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

import itertools
from operator import itemgetter

particles = [particle.rstrip('\n') for particle in open('asoiaf_name_particles.txt')]
tokens = [u'\u201c', u'Such', u'eloquence', u',', u'Gared', u',\u201d', u'Ser', u'Waymar', u'observed', u'.']

def roll_call(tokens, particles):
   speakers = {}
   particle_indices = [i for (i, w) in enumerate(tokens) if w in particles]
   for k, g in itertools.groupby(enumerate(particle_indices), lambda (i,x): i-x):
       index_run = map(itemgetter(1), g)
       speaker_name = ' '.join(tokens[i] for i in index_run)
       speakers[min(index_run)] = speaker_name
   return speakers


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



Itertools — инструмент, заслуживающий внимания. Я часто использую его чтобы избавиться от вложенности или для перестановок. В нём нам нужна функция groupby. По причине выхода новой версии этой функции к моменту написания материала, я полностью предпочёл groupby, нежели dropwhile и takewhile, которые я использовал в рекурсивной манере.



При программировании, я подумал, что функция roll_call должна знать позиции имён, которые он нашёл. Поэтому я решил хранить все порядковые номера имён. Это можно заметить в 3-й строке кода функции.



particle_indices = [i for (i, w) in enumerate(tokens) if w in particles]


Enumerate очень помог мне при знакомстве с Python. Он принимает список и для каждого элемента возвращает связку порядкового номера и самого элемента.



4-я строка самая хитрая часть кода во всём материале и не я его писал. Она взята прямо из документации к библиотеке.

for k, g in itertools.groupby(enumerate(particle_indices), lambda (i,x): i-x):


Groupby проходит через список и группирует элементы в зависимости от результата лямбда функции. Лямбды — анонимные функции. В отличии от roll_call их не нужно заранее определять. Это лишь часть кода, которая принимает аргументы и возвращает значение. В нашем случае она просто вычитает из порядкового номер число.



Давайте взглянем как это работает.

print tokens
particle_indices = [i for (i, w) in enumerate(tokens) if w in particles]
print particle_indices

for index, location in enumerate(particle_indices):
   lambda_function = index-location
   print "{} - {} = {}".format(index, location, lambda_function)
[u'\u201c', u'Such', u'eloquence', u',', u'Gared', u',\u201d', u'Ser', u'Waymar', u'observed', u'.']
[4, 6, 7]
0 - 4 = -4
1 - 6 = -5
2 - 7 = -5


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



groupby видит -4 и присваивает значение 4 для группы. 6 и 7-й элементы оба имеют -5 и соответственно группируются.



Теперь мы знаем где находятся составные имена и должны использовать их. Что возвращает groupby? Ключ, результат нашей лямбды, и саму группу, объект grouper. Далее воспользуемся функцией map чтобы применить itemgetter(1), извлекающий из связки элемент, ко всем элементам группы и таким образом мы создадим список из позиций имён в исходном списке токенов.



После groupby нам нужно всего лишь извлечь найденные имена и сохранить их в ассоциативном массиве speakers.

roll_call(tokens, particles)
{4: u'Gared', 6: u'Ser Waymar'}


Оптимизация



Давайте сравним скорость работы этой функции с методом, в котором мы использовали части речи.



%timeit roll_call(tokens, particles)
100 loops, best of 3: 3.85 ms per loop


Не плохо, в 5-6 раз быстрее. Но мы можем улучшить результат использовав set. Множества set почти мгновенно проверяют находится ли элемент в списке.

set_of_particles = set(particle.rstrip('\n') for particle in open('asoiaf_name_particles.txt'))
%timeit roll_call(tokens, set_of_particles)
10000 loops, best of 3: 22.6 µs per loop


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



Поиск имён касательно диалогов



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



Но прежде, я бы хотел привести в порядок наши данные.



XML парсер



После успешной одно-строчной команды с Xpath, я решил написать XML парсер для наших текстовых файлов. В выборе этого формата есть тонна смысла. ПЛИП это множество книг, в которых есть главы, которые в свою очередь состоят из параграфов, и некоторые из них содержат диалоги — и нам нужно незаметно их пометить. Если бы я не перевёл текст в XML (и сначала я этого не сделал), то метки бы замусорили сам текст.



Я предпочту умолчать о скрипте ниже: он напоминает мне мои первые шаги в Python, огромные функции, костыли и переменные с длиннющими наименованиями.

from lxml import etree
import codecs
import re

def ASOIAFtoXML(input):
 # Каждый элемент input должен быть ассоциативным массивом названий глав с расположением его на диске.
 root = etree.Element("root")
 for item in input:
   title = item["title"]
   current_book = etree.Element("book", title=item["title"])
   root.append(current_book)
   with codecs.open(item["contents"], "r", encoding="utf-8") as book_file:
       #Ловушка для глав, названия которых не распознаются регулярным выражением.
       current_chapter = etree.Element("chapter", title="Debug")
       for paragraph in book_file:
           paragraph = paragraph.strip()
           if paragraph != "":
               title_match = re.match("\A[A-Z\W ]+\Z", paragraph)
               if title_match:
                   current_chapter = etree.Element("chapter", title=title_match.group())
                   current_book.append(current_chapter)
               else:
                   current_graf = etree.SubElement(current_chapter, "paragraph")
                   while paragraph != "":
                       current_dialogue = current_graf.xpath('./dialogue[last()]')
                       speaker_match = re.search("(\{(.*?)\} )", paragraph)
                       if speaker_match:
                           speaker_tag = speaker_match.group(1)
                           speaker_name = speaker_match.group(2)
                           paragraph = paragraph.replace(speaker_tag, "")
                       open_quote = paragraph.find(u"\u201c")
                       if open_quote == -1:
                           if current_dialogue:
                               current_dialogue[0].tail = paragraph
                           else:
                               current_graf.text = paragraph
                           paragraph = ""
                       elif open_quote == 0:
                           current_dialogue = etree.SubElement(current_graf, "dialogue")
                           if speaker_name:
                               current_dialogue.attrib["speaker"] = speaker_name
                           close_quote = paragraph.find(u"\u201d") + 1
                           if close_quote == 0:
                               # функция find возвращает -1 в данном случае, поэтому сравнивая с 0
                               # мы определяем нет ли там больше закрывающей кавычки. Это происходит
                               # в длинных монологах разбитых по параграфам.
                               close_quote = len(paragraph)
                           current_dialogue.text = paragraph[open_quote: close_quote]
                           paragraph = paragraph[close_quote:]
                       else:
                           if current_dialogue:
                               current_dialogue[0].tail = paragraph[:open_quote]
                           else:
                               current_graf.text = paragraph[:open_quote]
                           paragraph = paragraph[open_quote:]
   return root

tree = ASOIAFtoXML([{"title": "AGOT", "contents": "corpus/train_asoiaf_tagged.txt"}])

# Так мы сохраняем дерево в файл.
# et = etree.ElementTree(tree)
# et.write(codecs.open("asoiaf.xml", "w", encoding="utf-8"), pretty_print=True)


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



Интересное замечание по XML. Это иерархическая структура, поэтому она по своей природе требует строгого ветвления, вершина в вершине. Но это не так в прозе. В прозе диалоги находятся внутри текста. lxml предоставляет решение: text и tail. Таким образом вершина XML хранит текст, но этот текст прерывается после очередного добавления вершины.

markup = '''Worse and worse, Catelyn thought in despair. My brother is a fool.
Unbidden, unwanted, tears filled her eyes.
If this was an escape,
she said softly,
and not an exchange of hostages, why should the Lannisters
give my daughters to Brienne?
'''
graf = lxml.etree.fromstring(markup)
print graf.text
Worse and worse, Catelyn thought in despair. My brother is a fool.
Unbidden, unwanted, tears filled her eyes.


print graf[0].text
"If this was an escape,"


Что же произойдёт с оставшимся «she said softly»? Мы сохраним в его в переменной вершины tail.

print graf[0].tail
she said softly,


И так далее, добавляя к каждой вершине диалога оставшуюся часть текста.



Как следствие, это сильно упрощает нам поиск авторов диалогов, когда они нам понадобятся. А понадобятся они нам прямо сейчас!

class feature_extractor_simple:
   """Analyze dialogue features of a paragraph. Paragraph should be an lxml node."""
   def __init__(self, paragraph_node, particles, tag_distance=0):
       self.paragraph = paragraph_node
       self.particles = set(particles)
       self.tag_distance = tag_distance
       self.raw = ''.join(t for t in self.paragraph.itertext())
       self.tokens = self.tokenize(self.raw)

   def tokenize(self, string):
       return nltk.wordpunct_tokenize(string)

   def find_speakers(self, tokens):
       speakers = {}
       particle_indices = [i for (i, w) in enumerate(tokens) if w in self.particles]
       for k, g in itertools.groupby(enumerate(particle_indices), lambda (i,x): i-x):
           index_run = map(itemgetter(1), g)
           speaker_name = ' '.join(tokens[i] for i in index_run)
           speakers[min(index_run)] = speaker_name
       return speakers

   def pre_speak(self, prior_tag="FN", near_tag="NN"):
       # Имена до диалога.
       features = {}
       if self.paragraph.text is not None:
           speakers = self.find_speakers(self.tokenize(self.paragraph.text))
           if len(speakers) > 0:
               features.update({"{} {}".format(prior_tag,self.tag_distance): speakers.values()[0]})
           if len(speakers) > 1:
               features.update({"{} {}".format(near_tag,self.tag_distance): speakers[max(speakers.keys())]})
       return features

   def dur_speak(self, tag="ADR"):
       # Имена адресатов.
       features = {}
       for dialogue in self.paragraph.itertext("dialogue", with_tail=False):
           tokens = self.tokenize(dialogue)
           named = self.find_speakers(tokens)
           addressed = {k: v for (k, v) in named.items() if tokens[k-1] == "," or tokens[k + 1 + v.count(" ")].startswith(",")}
           if len(addressed) > 0:
               features.update({"{} {}".format(tag, self.tag_distance): addressed[max(addressed.keys())]})
       return features

   def post_speak(self, tag="PS"):
       features = {}
       # Имена после диалогов.
       tails = [line.tail for line in self.paragraph.iterfind("dialogue") if line.tail is not None]
       for tail in tails:
           tokens = self.tokenize(tail)
           speakers = {k: v for (k, v) in self.find_speakers(tokens).items() if k <= 1}
           if len(speakers) > 0:
               features.update({"{} {}".format(tag, self.tag_distance): speakers[min(speakers.keys())]})
               break
       return features


Пару слов об этих функциях.



Если вы новичок в Python, то не бойтесь классов. Вам просто напросто нужно написать обычные функции, передавая им в качестве аргумента self. Это позволит Python знать с каким объектом функция в данный момент работает. Класс это как фабрика клонов, а объект и есть клон. У всех клонов одинаковый ДНК, это методы и переменные, но из за их жизненного опыта их личности различаются, чем в данном контексте являются переданные им данные.



У классов есть также специальная функция __init__, которая позволяет инициализировать переменные объекта.

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

paragraph = tree.xpath(".//paragraph")[32]

example_extractor = feature_extractor_simple(paragraph, particles)
print example_extractor.raw
print example_extractor.pre_speak()
print example_extractor.dur_speak()
print example_extractor.post_speak()
"Such eloquence, Gared," Ser Waymar observed. "I never suspected you had it in you."
{}
{'ADR 0': u'Gared'}
{'PS 0': 'Ser Waymar'}


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



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



pre_speak



Как я уже говорил выше, атрибут text содержит весь текст до первой строки диалога. Нам просто нужно найти в нём имена персонажей.



dur_speak



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

for dialogue in self.paragraph.itertext("dialogue", with_tail=False)


Функция itertext в lxml позволяет получить весь текст вершины. Мы, так же, поставим флаг with_tail=False чтобы искать только вершины без «хвоста», а значит только текст диалога.



Как только мы найдём имена персонажей, нам нужно выделить в них только те, которые обособлены запятой, что позволит нам найти обращение. (например, «Нед, обещай мне.» / «Обещай мне, Нед.»)



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



post_speak



Для этой функции нам нужен только первый персонаж после диалога. Поэтому мы прерываем цикл как только нашли такого.



Функция смотрит в первые 2 токена после закрывающей кавычки. Так вы найдёте диалоги типа:

«Прощай,» сказал Джон.


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

tails = [line.tail for line in self.paragraph.iterfind("dialogue") if line.tail is not None]


Это позволило получить диалоги одной строкой. (нужно просто указать условие, чтобы убрать все результаты без «хвоста»)



CRFsuite



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



Но по факту, CRFsuite очень простая и интересная часть всего этого. Во время написания материала, я обнаружил, что у него есть библиотека для Python, но сейчас мы не будем всё усложнять и будем пользоваться исполняемым файлом с помощью командной строки.



(я планирую обновить модель, когда следующая книга, «Ветра зимы», увидит свет. Но у меня ведь есть еще пару лет пока это случится)



Всё, что нужно CRFsuite это текст с некоторыми свойствами разделенными табуляцией, как эти например:



FN 0    Graf Sent Len=4    FN 1=True    FN -2=True    FN 0=True    NN 1=True


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



Вам нужно открыть командную строку где бы crfsuite.exe не находился и там набрать следующее:

crfsuite learn -m asoiaf.model train.txt


Это создаст модель, что и является мозгом всего. Можете назвать её как угодно, я назвал свою asoiaf. Чтобы посмотреть на точность работы модели, наберите это:

crfsuite tag -qt -m asoiaf.model test.txt


Чтобы собственно запустить модель для пометки наберите

crfsuite tag -m asoiaf.model untagged.txt


untagged.txt должен выглядеть так же как и train.txt, но без атрибута правильного ответа в начале, т.е. приблизительно так:



NN -1=True    FN 0=True    FN 2=True    FN -1=True    NN 0=True


Тут можно узнать про это больше.



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



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

class feature_extractor:
   """Analyze dialogue features of a paragraph. Paragraph should be an lxml node."""
   def __init__(self, paragraph_node, particles, tag_distance=0):
       self.paragraph = paragraph_node
       self.particles = set(particles)
       self.tag_distance = tag_distance
       self.raw = ''.join(t for t in self.paragraph.itertext())
       self.tokens = self.tokenize(self.raw)
       self.speaker = self.xpath_find_speaker()

   def features(self):
       features = {}
       features.update(self.pre_speak())
       features.update(self.dur_speak())
       features.update(self.post_speak())
       return features

   def local_features(self):
       #Разнообразные свойства живут в этой функции как в комуналке
       features = []

       if self.tokens.count(u"\u201c") == 0:
           features.append("NoQuotes=True")

       prior = self.paragraph.getprevious()
       try:
           last_dialogue = list(prior.itertext("dialogue", with_tail=False))[-1].lower()
           hits = [w for w in ['who', 'you', 'name', '?'] if w in last_dialogue]
           if len(hits) > 2:
               features.append("Who Are You?=True:10.0")
       except (AttributeError, IndexError):
           pass

       try:
           dialogue = list(self.paragraph.itertext("dialogue", with_tail=False))[0].lower()
           for token in ['name', 'i am', u'i\u2019m']:
               if token in dialogue:
                   features.append("My Name=True:10.0")
                   break
       except (AttributeError, IndexError):
           pass

       if self.tokens[0] in self.particles:
           features.append("FirstSpeakerIndex0=True")

       if self.paragraph.text is not None:
           name_precount = len(self.find_speakers(self.tokenize(self.paragraph.text)))
           if name_precount > 2:
               features.append("Many Names Before=True")
           conjunctions = set([w.lower() for w in self.tokenize(self.paragraph.text)]).intersection(set(['and', 'but', 'while', 'then']))
           if len(conjunctions) > 0 and self.paragraph.find("dialogue") is not None:
               features.append("Conjunction in Head=True")

       short_threshold = 10
       if len(self.tokens) <= short_threshold:
           features.append("Short Graf=True")

       dialogue_length = sum(map(len, self.paragraph.xpath(".//dialogue/text()")))
       dialogue_ratio = dialogue_length / len(self.raw)
       if dialogue_ratio == 1:
           features.append("All Talk=True")
       elif dialogue_ratio >= 0.7:
           features.append("Mostly Talk=True")
       elif dialogue_ratio < 0.3 and not self.tokens < short_threshold:
           features.append("Little Talk=True")

       return features

   def feature_booleans(self):
       bool_features = []
       for tag in ["PS", "FN", "NN", "ADR", ]:
           label = "{} {}".format(tag, self.tag_distance)
           if label in self.features().keys():
               bool_features.append("{}=True".format(label))
           else:
               bool_features.append("{}=False".format(label))
       return bool_features

   def tokenize(self, string):
       return nltk.wordpunct_tokenize(string)

   def find_speakers(self, tokens):
       speakers = {}
       particle_indices = [i for (i, w) in enumerate(tokens) if w in self.particles]
       for k, g in itertools.groupby(enumerate(particle_indices), lambda (i,x): i-x):
           index_run = map(itemgetter(1), g)
           speaker_name = ' '.join(tokens[i] for i in index_run)
           speakers[min(index_run)] = speaker_name
       return speakers

   def xpath_find_speaker(self):
       speakers = self.paragraph.xpath(".//@speaker")
       if speakers == []:
           return "NULL"
       else:
           return speakers[0]

   def pre_speak(self, prior_tag="FN", near_tag="NN"):
       # Имена перед диалогом
       features = {}
       if self.paragraph.text is not None:
           speakers = self.find_speakers(self.tokenize(self.paragraph.text))
           if len(speakers) > 0:
               features.update({"{} {}".format(prior_tag,self.tag_distance): speakers.values()[0]})
           if len(speakers) > 1:
               features.update({"{} {}".format(near_tag,self.tag_distance): speakers[max(speakers.keys())]})
       return features

   def dur_speak(self, tag="ADR"):
       # Адресаты в диалоге
       features = {}
       for dialogue in self.paragraph.itertext("dialogue", with_tail=False):
           tokens = self.tokenize(dialogue)
           named = self.find_speakers(tokens)
           addressed = {k: v for (k, v) in named.items() if tokens[k-1] == "," or tokens[k + 1 + v.count(" ")].startswith(",")}
           if len(addressed) > 0:
               features.update({"{} {}".format(tag, self.tag_distance): addressed[max(addressed.keys())]})
       return features

   def post_speak(self, tag="PS"):
       features = {}
       # Имена поле диалога
       tails = [line.tail for line in self.paragraph.iterfind("dialogue") if line.tail is not None]
       for tail in tails:
           tokens = self.tokenize(tail)
           speakers = {k: v for (k, v) in self.find_speakers(tokens).items() if k <= 1}
           if len(speakers) > 0:
               features.update({"{} {}".format(tag, self.tag_distance): speakers[min(speakers.keys())]})
               break
       return features

paragraph = tree.xpath(".//paragraph")[-1]

example_extractor = feature_extractor(paragraph, particles)
print example_extractor.raw
print example_extractor.features()
print example_extractor.local_features()
print example_extractor.feature_booleans()
And in their hands, the daggers.
{}
['NoQuotes=True', 'Short Graf=True', 'Little Talk=True']
['PS 0=False', 'FN 0=False', 'NN 0=False', 'ADR 0=False']


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



Вариант 1: только Истинные позиционные булевы значения


Label Count Recall
PS 0   207     0.9949
FN 0    185     0.95
NULL    118     0.3492
OTHER   56      0.3939
PS - 2 44      0.5238
Item accuracy: 430 / 678 (0.6342)


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



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



Аккуратность (прим. Precision), величина которая не будет тут рассматриваться, показывает частоту ошибок первого рода. Другими словами, как часто вы ошибочно причислили человека к иллюминатам.



Полнота (прим. Recall) измеряет количество меток в проверочных данных, которые модель определила правильно.



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



Т.к. всё помечено мной, то я не сильно заинтересован в аккуратности модели. Мне нужна полнота и точность.



В первом варианте свойств, я рассматривал только истинные булевы значения. Т.е. в параграфе выше, все наборы были вида «ADR 0=True» и «PS 0=True». Точность (прим. Item accuracy) составила 63.4%.



63.4% это хорошо? Исходя из того, что NULL, PS 0 и FN 0 составляют три четверти наших проверочных данных, и они по природе своей легко находятся, мы определённо можем лучше. Теперь добавим оставшуюся часть позиционных булевых значений, ложных.



Вариант 2: все позиционные булевы значения


Label   Count  Recall
NULL    254    0.9048
PS 0    204    0.9899
FN 0    149    0.975
OTHER   24     0.2273
PS - 2  19     0.2857
Item accuracy: 515 / 678 (0.7596)


Теперь мы отлично определяем простые случаи и получили достойную точность. 75% означают, что вам нужно пометить лишь первую книгу «Игра Престолов» и одну треть «Битва Королей» и модель определить оставшиеся три четверти книг сама. Это требует много часов работы, но в пределах разумного.



И тем не менее, я не вижу причин почему бы не определять теги NULL с полнотой 98%+, поэтому давайте добавим свойство нацеленной на это.



Вариант 3: кавычки?


Label   Count  Recall
PS 0    218    0.9907
NULL    180    0.9119
FN 0    167    0.9118
OTHER   63     0.3784
PS 2    25     0.5
Item accuracy: 550 / 710 (0.7746)


Считаем количество открывающихся кавычек в параграфе.



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



Вариант 4: индекс первого имени?


Label   Count  Recall
PS 0    218    0.9907
NULL    183    0.9057
FN 0    157    0.8971
OTHER   68     0.4189
PS - 2  23     0.5484
Item accuracy: 551 / 710 (0.7761)


Это свойство содержит индекс первого имени.



хмм… возможно чересчур усложнили, давайте снова вернёмся к булевым значениям.



Вариант 5: индекс 0 имя? + избыточность


Label   Count  Recall
PS 0    216    0.986
FN 0    166    0.9265
NULL    160    1
OTHER   85     0.5811
PS 2    32     0.7143
Item accuracy: 578 / 710 (0.8141)


Вот оно! Я не правильно считал количество открывающих кавычек, тем самым портя результат.



Как только я это исправил, NULL определяется идеально… но теперь у нас кончились лёгкие способы улучшения модели. Мне теперь на самом деле нужно изловчиться, чтобы дальше улучшить результат! Посмотрим, сработает ли это…



Вариант 6: После говорящий (PS) + и — 2

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


Label   Count  Recall
PS 0    216    0.986
FN 0    166    0.9265
NULL    160    1
OTHER   84     0.5676
PS 2    32     0.7143
Item accuracy: 578 / 710 (0.8141)


Никак не влияет!



Вариант 7: последовательности??


Label   Count  Recall
PS 0    217    0.986
FN 0    168    0.9265
NULL    160    1
OTHER   82     0.5541
PS 2    30     0.6429
Item accuracy: 576 / 710 (0.8113) Instance accuracy: 56 / 142 (0.3944)


Подождите! Выяснилось, что CRF может работать с последовательностями, и на самом деле в этом и есть его смысл. Я игнорировал величину точности экземпляра (прим. Instance accuracy), т.к. она всегда была 0/1, что означает, что модель рассматривала весь текст как один длинный диалог.



Простите, мне нужно дать себе пощёчину. Предполагая что мы повысим точность — и этот открытый вопрос — как мы воспользуемся этим функционалом? Я попробовал указать длину каждой последовательности в 5 параграфов, но это не кажется мне правильным.



Возможно, если встретятся два последовательных NULLа, то это и будет последовательностью, предполагая что разговор завершён.



После того как я поигрался с этим, я так и не смог построить модель, которая бы работала с разговорами. Как я понял, она должна иметь множество специальных переходных весов (прим. transition weights), в зависимости от положения в последовательности. Таким образом, модель будет принимать разные решения, в зависимости от нашего положения, в начале, середине или в конце разговора.



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

tree = ASOIAFtoXML([{"title": "ASOIAF", "contents": "corpus/train_asoiaf_pos_tagged.txt"}])
paragraphs = tree.xpath(".//paragraph")
In [29]:
def prep_test_data(paragraphs):
   max_index = len(paragraphs)
   results = []
   for index, paragraph in enumerate(paragraphs):
       extractor = feature_extractor(paragraph, set_of_particles)
       all_features = extractor.local_features() + extractor.feature_booleans()
       for n in [-2, -1, 1, 2]:
           if 0 <= n+index < max_index:
               neighbor_features = feature_extractor(paragraphs[index + n], set_of_particles, tag_distance = n).feature_booleans()
               if neighbor_features:
                   all_features += neighbor_features      
       all_features.insert(0, extractor.speaker)
       results.append("\t".join(all_features))
   return results

results = prep_test_data(paragraphs)
In [31]:
max_index = len(results)

with codecs.open(r"new_test.txt", "w", "utf-8") as output:
   for line in results[:int(max_index/2)]:
           output.write(line + '\n')

with codecs.open(r"new_train.txt", "w", "utf-8") as output:
   for line in results[int(max_index/2):]:
           output.write(line + '\n')


Больше свойств



Я попробовал несколько других свойств:


  • Подсчёт количества имён до первой строчки диалога. В теории это место, где больше всего NN. Результата нет.


  • Свойство которое отмечает что параграф полностью или частично диалог. Это способствовало улучшению ситуации с PS -2 и FN -2, но разницы была не существенна.


  • Короткие/длинные параграфы. Мало пользы.


  • «и» либо «но» в тексте до диалога. (в попытке сфокусироваться на NN 0, где они игнорировались)




Я думал, что последний это достаточно ловкий ход, но он не сработал и мы никак не получали точность выше 81%.



Я пытался менять обучающие данные с проверочными и это дало 84%. Вам не следует тратить много времени на совершенствовании множества свойств для определенных данных, т.к. это ведёт к переобучению. По факту, смешивание обучающих данных и проверочных — хорошая идея. Я их не смешивал, т.к. думал что это приведёт к порче последовательностей, но мы же уже не используем их, так почему бы и нет? Мы их смешаем.



Немного смешали данные



Получили 82%.



Ладно! Думаю тут мы достигли предела моих навыков.



А продолжения не будет?



Давайте подведём итоги и поговорим что же можно сделать дальше.


  • Улучшить обучающие данные. Сейчас у меня есть 700 параграфов для обучения и проверки. Всего их около 40000. Радует, что я пометил 1.7% и получил в результате 80%. (хотя я сомневаюсь в 80%, на практике это было больше похоже на 75%.) Что произойдёт если мы используем 10000 параграфов для обучения? Ценность дополнительных тренировочных данных не сильно возрастает с увеличением их количества, но для редких меток, как ADR, попросту недостаточно моих 700 параграфов.


  • Тщательно изучить документацию CRFsuite. Там наверняка найдутся параметры, которые мне помогут.


  • Поэкспериментировать со взвешенными свойствами.


  • Действительно попробовать воспользоваться последовательностями.


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


  • Запасную метку. Слабым местом моей модели является то, что слишком много меток OTHER. При пометке OTHER, модель как бы говорит, смотри, я знаю что кто то говорит в этом параграфе, но ты не дал мне способа его определить. Поэтому никакой положительной стороны у метки OTHER нет — улучшением будет даже самое нелепое тыканье в темноту.


  • Метку пола. Мне нравятся диалоги с именами в конце. Этого не происходит в разговорах мужчин и женщин. Так, много диалогов Кейтилин Старк остались не помеченными потому, что, как правило, она единственная женщина в окружении и поэтому удобнее обращаться к ней просто как «она». Это будет достаточно легко обойти; мы можем искать все «она» в после диалоговой части и потом проверить заголовок главы и если это женское имя, то она нашлась.






Заключение



Хорошо! Я надеюсь, что это было кому то полезно. Спасибо, что прочитали и если вы хотите со мной связаться, то я есть в Твиттере.



Так же, я хотел бы отметить, что всё вышеупомянутое было сделано для большого критического исследования Игры Престолов. Если вы фанат этих книг и хотели бы прочесть анализ, который был возможен благодаря метке диалогов, то я скоро всё опубликую.
Original source: habrahabr.ru.

https://habrahabr.ru/post/304230/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
kseniasamohina

Выпускной показ группы № 40 - Диалоги

Понедельник, 20 Июня 2016 г. 22:07 (ссылка)
md-eksperiment.org/afisha/u...0620220556


Внимание! Друзья! Хорошего вам настроения! Ждем Вас! https://vk.com/show_obraz[/quote]

Комментарии (0)КомментироватьВ цитатник или сообщество
PogrebnojAlexandroff

Стенка на стенку, и рубаху порву зубами...

Воскресенье, 19 Июня 2016 г. 18:06 (ссылка)

Марфушеска-душека (605x593, 109Kb)
И сидит там за окошком "Василиса" вся "распрекрасная" -- мудрая-перемудрая краса (на фильмах-сказках Роу, как на дрожжах хлебных, взрощенная) длинная коса отбеленная перекисью водорода, -- рожа румянами размалёванная и помадой едко-красной на губах припухлых; в компьютер пялится... -- лицо страны блюдя. То-ли вид занятости создаёт -- в игры себя занимая, от скуки и безделья, то-ли... -- буковку знакомую ищет (чиновница, -- бедная, -- разнесчастная).

Начало: Проезд за 5 копеек, а корова -- 3 рубля, и... мамонт в придачу!

-- Тысяча девятьсот восьмидесятый год, знаете ли... -- Россия. Калмыкия, то есть. Прилавки магазинов ломятся от мясных продуктов. Там и баранина, мясо сайгака, говядина и т.д. Рыбные отделы -- это не только минтай, но и иваси и т.д. Впервые новые названия рыбы узнала там. Я молчу о фруктах, соках, овощах... Не знаю, где вы жили, но гнилую картошку никогда не ела. Тухлую рыбу тоже. Продукты были качественные. Вот лёгкая атлетика у нас "страдала" приходилось все шить и вязать. Каждое лето отдыхала в 3-х местах. А вот с 90-х-начались проблемы. Да ещё какие!

-- Долго думала что соврать? -- про 80-е особливо. Да, иваси в банках иной раз тоже выкидывали -- с покупаемым для кошек перемороженным минтаем. Гнилую картошку не ели конечно! Что ж ты тут передёргиваешь? Покупали, однако, и перебирали дома -- так как в магазинах выбирать нельзя было: такую привозили, -- отвечали продавцы, -- я чтоли её копала?! -- только и слышали. Соки? Были... -- берёзовый, томатный, яблочный -- в трёх литровых банках, разбавленные водой (как водится на заводском производстве). Про "каустиковую воду" из батарей центрального отопления, вместо грузинской "Баржоми" 90-х, упоминать не будем. Время другое и страна иная. Да и про "тухлую рыбу" никто не замечал. Вот ты врать-то горазда! Может быть откуда-то они качественными вывозились, -- продукты эти, но вот покрытая цветущей зеленью сухая колбаса -- за три с полтиной и дороже, на прилавках залёживалась на долго. И при чём тут "лёгкая атлетика" к шитью и вязанию. Ты что-то значение русских слов уже попутала в Германии-то "русской"... -- промышленность атлетикой подменила. Голой бегать привычней, что ли? Да и отдых в трёх и более местах за отпускной период -- не показатель. Можно за три недели хоть каждый день куда-нибудь ехать. Да!.. -- и сайгаков периодически -- в летние периоды выбрасывали, по 80 копеек: когда они на поля заходили... -- расстреливали солдатики из автоматов, по приказу руководства и командиров. Природу берегли таким образом. Про 90-е... -- не упоминаем. Это уже не Советский Союз был.

-- Вы всегда такие невежливые? Мы на ты не переходили. С хамами не хочу общаться.

-- Ебёт меня на что ты там переходила или не переходила? У меня в глазах не двоится, как у Петра (первого) -- алкоголика не последнего на Руси. Тебя никто не заставляет тут сидеть и общаться, как и пушку у виска не держат для этого (вспоминая не только лихие 90-е, но и более ранние годы). Хрена вы, все -- такие, се-серя любящие, в Германии делаете?

-- Странно как-то... Декабрь... 1982 года!.. Огромная очередь за сливочным маслом. Дают только по 300 граммов в одни руки, -- на человека, так сказать. Я стою с пятилетним сыном. Девятый месяц беременности, -- трудно не заметить в толпе даже. Вдруг объявляют: "Очередь не занимать!.. Масло заканчивается!.." Можете себе представить что тогда началось в магазине, если я в роддоме оказалась?.. Так-что... -- не надо людям лапшу вешать про изобилие.

-- Калмыкия, кстати, почти рядом с Волгоградом! В педвузе, -- где я тогда училась, -- была калмычка одна (дочка директора рыбзавода): одета в импорт, собственные "Жигули", денег пачками в импортном кошельке, а училась на троечки. Так вот она нам рассказывала, какой и сколько рыбы солится, коптится и вялится на папином заводе!.. Но ни разу даже понюхать никому не дала. А в магазинах, кроме селёдки "иваси", никакой рыбы-то боле-менее нормальной и небыло. Правда, моя соседка -- тётя Таня, в мае-июне бегала с утречка пораньше на "рыбалку", -- на Волгу-матушку: там, ночью, браконьеры ловили осетров,.. -- разделывали, а головы оставляли на берегу... А уж, -- мяса? Им и не пахло вовсе! Та же тётя Таня, однажды, все коленки разбила: -- упала,.. -- так быстро в универсам бежала, где кости на прилавки выбросили!.. Овощи и фрукты свежими были только осенью -- на овощных базарах, по выходным (я там даже хурму, виноград и гранаты покупала). А зимой -- в магазинах, одно гнилье!.. Даже в нос вонью шибало, когда в торговый зал войдёшь!.. Вроде бы рядом жили, и вдруг (ни с того, ни с сего) такая разница?! Откуда?..

-- Да, Вы ж не забывайте, сколько десятилетий СССР прожил в состоянии холодной войны, -- объявленной Америкой! Россия всю гонку вооружений взяла на себя, вот в магазинах и было пусто из за этого! А другие республики жили хорошо,.. -- за счёт России. У них пустых прилавков не было! И после распада СССР Россия взяла на себя долги всех республик. Расплатилась! Только сейчас эти республики с гастарбайтерами в России все. Даже Украина с Белоруссией! Я в старые времена тоже занимала: где двадцатку -- до получки, где 100 рублей -- на пальто, а где и 3 тысячи -- на машину!..

-- Вот именно, что всё гонялись: то за загнивающим капитализмом, то за престижем, то за вооружением... Только железо жрать не будешь, а подсобное хозяйство ограничивали и регулировали. Гигантоманией всё страдали. У нас самые большие трактора́, комбайны, экскаваторы... Но для земледельца и частника ничего! Трактор маленький "Беларусь" и-то в Польшу гнали, но нашим ничего нельзя было. Да и не забыл я ничего, как раз, в отличии от забывчивых и несведущих вовсе -- начиная с бандитского переворота семнадцатого, а потом -- раскулачивания крестьян, расстрелы целыми деревнями и селениями, голодомором двадцатых и тридцатых, запретами на частную собственность, колхозами и ликвидацией личного хозяйства -- когда весь скот забирали в наглую у населения, с продажей одежды и имущества от убитых; с людоедством, с концлагерями, а потом ГУЛАГами и Карлагами... и ещё много чем -- скверным, бесчеловечным и многими сейчас забытым и забитым... И всё это до того самого -- Гитлера, было! -- с его социализмом: в пику и в пример советскому, -- строю и концлагерям. А ещё знаю, как ходили чекисты по домам и конфисковывали у людей серебро и золото, и кто прятал, а они находили... -- расстрел на месте. Чем не "игил" или "гестапо-фашизм"?.. И вы про холодную войну тут будете распинаться?! Про Гитлера вспоминать? Вы хоть раз слышали его речь о причинах начала вооружённого конфликта и действий против СССР?

-- А Вы динозавров ещё не видели?.. Так долго живете,.. -- всё видали!.. А расстрелы "целыми деревнями и селениями", это про Волынскую резню и бандэровщину на Украине?! И голодомор, -- тоже на Украине был, да?! В Поволжье просто-на-просто голод был, -- в 1933 году! Вам много заплатили?.. -- троллить здесь...

-- Видел... И не только их!.. А ещё и мамонтов, в Сибире 30-х и 50-х... И что? Истерику прекрати! Течка началась, аль бешенство матки одолевает? Ты ж, дура набитая, реагировать на правду обвинением в "троллинге" и "флуде" заливном только и умеешь. Крыть тебе больше нечем, вот ты на говно и исходишь. Правда глаза колит?..

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

Просто -- ничего не бывает. На всё есть свои причины и следствие. Видите-ли... -- просто, ей, голодомор случился в Поволжской республике!..

-- Тогда Вас со 100-летием!.. Так голодать, избежать расстрела, пережить революцию, отъём скота и имущества, ГУЛаг, и всё ещё до Гитлера?! И после Гитлера 71 год!.. Завидую я Вам-с!.. А если такой патриот такой, идите ж -- работайте на благо Родины, а не верещите здесь, как нерезаная свинья!..

-- Ха-ха-ха... Боишься, что тебя премии лишат -- за срыв провокационных мероприятий? Верещишь, -- видать, как раз, -- ты... свинья недорезанная сталинистами и большевиками. А вот избежать всего негатива былого, -- уметь надо... и -- оставаться честным и справедливым, при всём этом безобразии -- не поддавшись зомбированию от власть имущих. Если бы к Лужиным и им подобным в Сибирь не припёрлись журналюги восторженные, то и они до сих пор бы жили -- не тужили. А я живу во благо своего рода и семьи -- в первую очередь. Ты уж о себе как-нибудь сама позаботься. Я даже знаю, то о чём ты не подозреваешь, а о чём догадываешься и во что веришь -- могу доказать или опровергнуть.

-- Знаете ли,.. -- в любой стране были неприглядные страницы... однако, на ум тут -- слова моей бабули приходят: ...всё-равно, -- что там у господ, -- главное -- самим не скурвиться!.. На мой взгляд, -- золотые слова бабушки. Да,.. -- всё было: и жили по-разному -- и при царе, и при советах, и сейчас... но, -- людьми остаются не окрысившиеся и не озлобившиеся.

-- Да, главное -- не скурвиться... Только тема не о любой стране, а о Советском Союзе с его рублями (деревянными) и советами -- под управлением коммунистов (с их -- обслуживанием, барским -- самих себя; закрытыми столовыми и базами -- не для трудового народа).

Многие осознают и понимают, наверное, что есть "удобная" и "неудобная" -- для кого-то, правда, но... правда -- всегда правдою остаётся.
СССР (500x375)
Помните сказку про белого бычка или про попа, который свою собаку любил очень? Так вот некоторые из вас на персонажей сказов этих русских похожи -- своих же, правдой глаголящих и глаза раскрывающих, в неком троллинге, предательстве, флуде, колониальности из паспорту красного стращаете и не только расстрелять готовы, -- горло собственными зубами перегрызть. А кто вы сами?.. Потомки стукачей, тихушников, комиссаров, партаппаратчиков, приспособленцев?.. -- оставшихся после ликвидации передового рабочего класса, крестьянства и интеллигенции бандитами-большевиками (в меньшинстве как раз бывшими, но народу мозги задурившими и запугавшими впоследствии).

Метки:   Комментарии (7)КомментироватьВ цитатник или сообщество
PogrebnojAlexandroff

Проезд за 5 копеек, а корова -- 3 рубля, и... мамонт в придачу!

Суббота, 18 Июня 2016 г. 09:24 (ссылка)

"Говорить правду
во времена всеобщей лжи,
это... -- экстремизм".





-- Проезд в транспорте 5 копеек, а на трамвае -- три... Хорошо ещё хоть память осталась о той жизни. Вот про это все забывают, но хорошо помнят лишь спец-пайки руководителей.

-- Ага... И похороны 12 рублей?.. Жаль, что две трети (мясо, мороженое) из списка в продаже отсутствовали! Уймитесь уже со своей Советской властью! Стипендия была 18-23 рубля! Хватит врать, вечно вчерашние плакальщицы!..

-- У меня стипендия была 45 рублей. И как это мороженого не было?!

-- Конечно же!.. Так и не было как раз! Москва и Ленинград вообще не считаются: жировали за счёт всей страны. Они и ностальгируют по прошлому...

-- Да бросьте! Мы с мужем студентами были. И квартиру снимали, и мясо покупали, и в кафе-мороженое ходили. И всё на две стипендии. И не в Москве, а в Омске.

-- Ты наверное был двоечником,.. хотя -- даже они получали 40 рублей. Или ты вообще не учился?

-- А я скучаю по тем временам лишь по людям... Душевнее, -- добрее были... Хоть и была зарплата низкой конечно. Кто-то выживал, а кто-то и жировал. Всё было.

-- А одежду и обувь кто покупал? Может быть тоже стипендии хватало?

-- Да... Вот классная провокация!

-- Не на рынке конечно и не с рук. Сама и шила, и вязала. Чем, кстати, и сейчас занимаюсь.

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

-- Как-раз указаны годы моего студенчества. Стипендия на первом курсе -- 40 рубликов, а за общежитие 70 копеек платили. Всё достоверно. Иногда в дальний корпус на такси ездили: 66 копеек за четверых. Ветчина 3,70 стоила. Кефир в трёхугольничке -- 7 копеек, а булочки маленькие -- в хлебном, по 3 копейки. Единственное, -- с одеждой: либо на базаре втридорога, либо в поездках или отстояв очередь. Покупали на всех, кто давал деньги. Конверт -- 5 копеек, открытка -- 4. Писали, поздравляли... Дружили и ездили в гости без проблем. А сейчас? Никуда не хочется ехать и к себе, как ни странно, тоже никого не хочется приглашать. Что-то сломалось.

-- Да-да-да... И зарплата 68 -- 250 рубликов. А пенсия колхозников 25...

-- У меня муж до 400 получал.

-- За аврал и в конце пятилетки?.. В каком году это было-то? До денежной реформы 60-х? Или он аппаратчиком штаны протирал в компартии? Они, да -- за "вредность" получали (с народом работать, сидя в кабинетах).

-- До 1989 года. Шахтёром, -- в лаве работал.

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

-- Нельзя так просто обобщать жизнь в СССР, -- очень большая разница была между республиками и даже городами.

-- Это да. Даже огромная разница была между городом и деревней (аулом). После 1983 года уже бардак начался. Тогда и инфляция в гору попёрла. В 74-м обвал экономики и в магазинах резко начало всё пропадать, а цены расти. Потом -- в 78-м, когда Афган начался...

-- Да,.. -- был дефицит продуктов питания, но на зарплаты это не влияло: у мужа на шахте хорошо платили.

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

-- Ой уж эти бедненькие москвичи! Вся страна на них пашет!

-- В том то и дело, что во всей стране нихрена небыло.

-- Всё было -- и хорошее, и плохое... И между прочим, -- красиво одевались, конечно! -- не на стипендию конечно, но работали уж когда. Хоть, и жили -- не шиковали, но, когда внезапно приходили гости -- всегда было, что на стол поставить. Сейчас мы живём несколько богаче: машины у всех, в доме полная чаща, а вот в гости некогда сходить. Да и сами гости редко приходят. К соседке за солью уже никто не заскочит.

-- Чего теперь к соседям-то переться, когда полно киосков и магазинчиков круглосуточных или работающих до позднего вечера и до ночи. А в деревнях... -- советских, -- продуктовая лавка в частном доме, которая магазином называлась, а там шаром покати -- так как "сами себя обеспечивать должны" были. Более-менее выживали кто сам шил, как моя мама: ...после работы приходила и шила нам и себе, и варила, и стирала... -- нас учила и воспитывала.

-- Я солидарна с вами. Такое же ощущение. Каждый живёт сам по себе. Соседей порой и не знаем теперь: -- никто никому не интересен.

-- Сплетничать не о ком что ли? И у кого это "у всех" машины были?!

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

-- Мы первую машину, несмотря ни на что, купили в 1980-м: подержанную -- за четыре тысячи. Брали деньги в долг. Без всяких процентов. Гараж строил муж с друзьями. Не за деньги, а за просто потом посидеть и пообщаться за ужином.

-- Ну, дак... -- еже ль "крутить ся" то и сейчас миллионером можно стать. А коль друзья есть, так они и сейчас помогут.

-- Вас почитать, так прямо разруха в СССР была! Мы даже специально за город в сельские районы ездили, там в магазинам поболе продуктов было и вещей импортных, в это были 70-е -- 80-е годы.

-- О, да! Конечно были! Так как за свои трудодни они себе ничего позволить не могли. А в Киргизии, где зимы нет, шубы продавались... Да и не продавали там, а надо было сельхозпродукцию продукцию сдать сначала. Некоторые продавцы конечно торговали на лево: тоже выкручивались. А сейчас... Что плакаться-то? Ко мне как-то -- лет надцать назад, приятели приезжали; так вот, уехав домой, они заявили: ...если бы мы так дома пиздячили, как тут -- у вас, то мы бы в полном шоколаде жили и миллионерами бы были. Вот так!?.. -- по 16 часов в бизнесе горбатиться?.. Да нахрен бы оно надо было. Как любил говаривать Владимир Ильич: -- ...талантлив русский народ, но... ленив.

-- А у нас была машина. И у родителей была. У моего папки всегда транспорт был ещё в 50-х годах. Сперва мотоциклы, потом на машины перешёл: запорожец, а потом -- жигули.

-- Мы тоже купили новенький Москвич АЗЛК. Купили в 1986 году, но не помню уже за сколько. Однако, помню, что половину суммы мы сразу отдали, а вторую -- частями. Кредит молодым семьям без процентов давало государство.

-- Ну, у нас тоже был и мопед, и мотороллер, и мотоцикл, а потом и с коляской, и запорожец, но... бензин хрен знает где брали и батя постоянно в машине мотор перебирал до винтиков и гаечек... -- то пердел, то не заводился... А с завода, так в первоочерёдку всё разобрать, перебрать и смазать надо было (чтоб по дороге на развалилось). Японцы наши тракторы и машины на металлолом покупали. Дешевле было, чем сырьём затариваться... Помним-помним такое... Но не у всех транспорт свой был или гараж.

-- Нет,.. -- не у всех.

-- Ну и мышление у вас... -- как у хохлобандеровца. Я москвичка, и никогда не ела в 3 горла. Работала на изысканиях, по всей стране мотаясь... Работала честно и зарабатывала хорошо. Точно знаю сколько вкладывалось в союзные республики и только отделившись, все поняли, что именно из Москвы шли немалые деньги... Где все заводы, фабрики, дороги,.. которые были построены в СССР? Кому они помешали? Или от ненависти к Москве всё разрушили?

-- Не знаю кто чего понял, но что-то те самые -- союзные республики, как-то сами активно развиваться стали без СССР. Особенно "сырьевые". А производство мотоциклов, как раз, с военных времён ещё тянулось -- без модернизации, модификаций и улучшений.... Так конвеером и гнали, пока спрос был.

-- Мой папка шофёр был, -- профи. Он без транспорта жить не мог.

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

-- По другому в СССР и нельзя было. Мой отец мог всё сам починить от электроприборов до канализации, от мотора до покрытия крыши и выкладки печи...

-- Этому их жизнь и в школах учили. И кружки разные были. И ничего не запрещали поначалу. Всё сами и своими руками. А заводы на оборонку и на космос -- для показухи...

-- А образование было четыре класса и коридор...

-- Да... это шахтёрская поговорка... -- три класса образования и четыре коридора церковно-приходской школы.

-- Да... и я помню такие цены. Если десятка до зарплаты осталась, то ты богач: неделю можно на неё прожить.. Летали из Оренбурга в Кемерово самолётом -- за тридцать с небольшим, и плата ЖКХ нас не душила. А всё трындели нам -- застой, застой, застой... Нынче же, несколько семей владеют недрами земли и депутаты обнаглели. У них зарплата как пенсия у прочих россиян за 10 лет. И МРОТ... Какой урод придумал этот МРОТ?! Вот всех бы депутатов посадить на этот МРОТ...

-- Вот тогда надо было капитализм делать, а не когда людей приучили жить на подачки от государства. Постепенно,.. -- как в Китае. А теперь все просят "дай"! -- зарплату, пособия, помощи... продуктов питания и одежды... обуви. Дай-дай-дай...

-- Что было, то было. У нас в Караганде была замечательная кондитерская фабрика, но увы конфет мы не видели. Если не в столицу, то за границу уходили. Только из под полы и можно было купить. До середины 70-х в магазинах было полно, но потом всё исчезать стало.

-- Да почти в каждом городе были шоколадные фабрики. Помню Серебряное копытце Свердловской фабрики, какие были вкусные!

-- Дак и Киевская Рошен, это советская фабрика -- Карла Маркса, по-моему.

-- Карагандинские особенно ценились. Они даже вкуснее московских были. Карагандинская кондитерская фабрика -- одно из крупнейших кондитерских предприятий Казахстана, мощностью 30 000 тонн. Фабрика была запущена в ноябре 1956 года. Впервые кондитерские изделия -- карамельные "подушечки", в Караганде начали производить ещё в годы Великой Отечественной войны на оборудовании, привезённом в декабре 1941 года из Астрахани. В 1970-х Карагандинская кондитерская фабрика первой из всех предприятий Советского Союза, работающих в этой отрасли, была награждена Орденом Трудового Красного Знамени. Карагандинские конфеты и сейчас можно купить в Германии, но это уже и близко не те, что были когда-то.

-- Пока натуральное масло использовали, а не маргарин. И реальное масло какао было.

-- Ой какая спорная тема... Кстати, глупо спорить о том как раньше жилось, потому что жилось всем по-разному (как, впрочем, и сейчас). Единственное, что хочу сказать -- у меня было замечательно-чудесное СССРовское детство и юность... Но не благодаря партии и правительству, а благодаря моей семье! Хотя детство у всех, наверно, это воспоминания радости и счастья (при наличии нормальных родителей, бабушек и дедушек) потому что детство, это беззаботность: ...все-все-все проблемы решают родители. Однако, я бы не хотела в качестве родителя оказаться на их месте. И слова, как и словосочетания -- достать, блат, по-знакомству, из под полы, очередь, выкинули товар и т.д., -- именно из тех самых времён.

-- Могу только присоединится к вашим словам.

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

-- Так оно и есть.

-- Я могу подтвердить. Помню, в Ленинграде 1982 года были очереди за маслом, хотя -- Ленинградская область самодостаточна. Романов много сделал для жителей тех лет. Парники, свиноводство и т.д. Отец в Москве был чиновником и я спрашивала почему так. Он отвечал: ...львиная доля в республике. Я сама убеждалась в этом, приезжая в Калмыкию. Там очередей не было? Теперь, когда русские и немцы уехали или уезжают из Калмыкии -- всё разрушили и калмыки потянулись к нам в города. Из всех наций, самые работоспособные, это -- немцы, русские и татары. Во всех сферах жизни, а не только торговля или управление. Очереди были конечно не только за маслом. Стипендия была в универе сорок пять рублей, а на пятом курсе -- пятьдесят.

-- Про деревню рязанской области напишу. Например, -- Спасск. Там все имели огород и сад. Мало того, что работали в колхозе, но и на своём участке трудились. На улицах чисто. Каждый перед своим домом убирал. Дома все богатые -- за высокими заборами: чтобы куры на улицу не выходили и не гадили. Все держали скотину. Пьяных не помню... -- редко встречала. Одни русские. Все пахали и по многу детей имели. Никто с голоду не умирал!.. Все от самих людей зависит.

-- А что если отбросить конфеты-пирожки, которые и правда были дёшевы и доступны, особенно в 70-х годах? Ну давайте посмотрим по степени доступности всех благ. Сейчас и тогда. Да, тогда действительно номенклатура и их дети получали блага без всяких очередей и в гораздо бо́льших масштабах, нежели простой народ. Ну, а теперь -- где ж эти, хоть и небольшие, бесплатные блага? Где летние пионерские лагеря или лагеря труда и отдыха? Как получить путёвку бесплатную в Артек? Куда подевались пяти-копеечные детские фильмы? А бесплатные садики? А школы? -- где небыло поборов и были бесплатные учебники... А бесплатные обеды в столовых, -- даже завтраки... Бесплатные кружки и спортивные секции... Задача была такая: ни одного ученика, не занятого в кружках и секциях. Посмотрите, что делают сейчас подростки. Они, что -- от большой занятости пьют, наркоманят, воруют, дерутся? Они как пасынки сейчас у государства. Куда ни кинь взор, -- везде платить надо. И от этого какая-то безысходность на душе́. Что ждёт их в скором будущем? Эти, придуманные нынешними дегенератами от науки -- ЕГЭ... И главное, что узнаю́т дети, когда они ещё в школе понимают: всё продаётся и всё покупается. А тогда что было? Нет, не деньги были главными. Главное -- чтоб человек пришёл в общество после школы, а не волчонок. Нынче пресса восхваляет тех, кто обманом разбогател... Всё-равно как, но лишь бы разбогател. А тогда были люди совестливые. В деревнях могли сказать родителям, что их сын сегодня не поздоровался... Я не хочу говорить о Москве и москвичах. Это был всегда город-страна -- зарубежье. В деревнях не любили москвичей, когда они приезжали. Потому что они были и тогда заносчивыми: любили денежку и часто обманывали доверчивых деревенских. Так, что -- москвичи были не советским народом и тогда. Но народ любил Москву. И защищал её во время войны. Москва -- столица. А люди в ней всё больше и чаще картавили... Вот и сейчас они стараются брать верх, потому что владеют всеми СМИ. А ведь, это -- большая сила. Зомбирование происходит именно через СМИ. А когда случилась буржуазная революция, то от условных замочков и деревянных -- даже картонных дверей, сразу перешли к металлическим дверям с двумя-тремя засовами. Стали бояться друг-друга. Почему-то человек человеку волком стал. А вы тут говорите за конфетки... Да сладкое вредно, -- особенно много. Зубы выпадут и диабет одолеет! Кушать надо здоровую пищу. Посмотрите советы врачей-диетологов. Отчего бывает избыток веса...

-- Беспредел, алкоголизм, наркомания?.. Они и в те времена были. Только не афишировали, а из городов "шваль" всякую за периметр вывозили. Поборов небыло? Бесплатные учебники?! Это когда они появились? На закате социализма? И тогда всё продавалось и покупалось... -- не хуже, чем сейчас: по великому блату и с наценкой. А так, -- не достать! Путёвки в Артек?! Ха-ха-ха...

-- Согласна с вами по всем цитатам. В Артеке я была бесплатно (1971 год), во всех кружках и ДЮСШ занималась бесплатно, образование получила бесплатно. распределилась и получила какое-никакое жильё.

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

-- Да небыли они бесплатными! Вы с какого дуба упали. Они "бесплатными" стали только в конце -- перед развалом СССР. После середины 70-х -- ближе к 80-м! Или у вас уже старческий маразм и слабоумие? Вы все даты попутали ж... За детсад все платили! И за еду в детсаде тоже. За пионерские лагеря тоже платили. Бесплатно давали только детям партаппаратчиков (как та, что из Московии про Питер и деревни сказки тут сочиняла) или круглым отличникам -- для показухи. И-то, очень редко. Больше, по-блату. Квартплата была не хилая, а потом сделали 30 % от зарплаты: справки надо было нести в жилуправление. Вы как будто с Луны свалились вчера.

-- Ох чёт вы замахнулись! Мои родители за детский сад платили. В школу деньги на обеды сдавали -- на неделю. Кто ходил в продлёнку, платили больше. Пионерских лагерей и сейчас полно, а вот про "Артек" и "Орлёнок" все слышали, но никого из нашего села там не было. Были простые лагеря -- в сёлах и хуторах (кстати, постарше когда были -- класса с шестого, то по трудовым пионерским лагерям сидели, когда надо было несколько часов на полях провести). Да и жили, многие, в общагах и бараках. Так, что -- по-разному всё у всех было. А насчёт молодёжи: ...и сейчас много замечательной детворы, а отморозков хватало и раньше! -- ...ни тюрьмы, ни детские дома не пустовали.

-- Если сделать сопоставление цен и зарплат на основные товары и продукты, то коэффициент того что было и что сейчас примерно одинаков получится. Как, кстати, и сравнить если советские цены с зарплатами, с забугорными. Я уже сотни раз сопоставлял. 1000 долляроф зарплаты в месяц = 100 рублей с СССР. От $1,25 до 2,50 или 3 стоил и стоит хлеб, и столько же в копейках -- 12, 16, 20, 24, 25 он стоил в СССР. Мясо стоило в рублях -- 1,20, 1,70, 2,20,.. а на базаре -- 3,50 -- 5,00... -- в долларовом эквиваленте было столько же как и перерасчёте на рубли, но сейчас мясо стало стоить как было на базаре в СССР. Да!.. Видиков и телеков нормальных в СССР не выпускали, а посему импортные стоили дорого -- больше запорожца и мотоцикла. Так, что -- сравнивать и плакаться, не стоит.

-- Да, нет -- не с Луны они свалились... Это нормально, -- с точки зрения психологии. Просто ностальгия замучила многих. Но не по тем, типа -- благам (в кавычках), а по разным причинам: у кого-то -- по детству, у кого-то -- по молодости, по живым родным и близким, а также друзьям и т.д. И те, кто ходил в гости или принимал гостей сам, как и раньше -- делает это и сейчас. Кто был открыт и добр с соседями, у того и сейчас не исчезли отношения и взаимовыручка. Так, что -- не во временах и правителях дело, а в людях.

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

-- Для вас и тогда всё продавалось и покупалось не хуже, чем сейчас? Совесть не продавалась. Были предатели. Они и взаправду всё продавали. Они и сейчас не прочь продать, даже Родину. Можно и задёшево. А начинали такие действительно в наше время. Начинали обыкновенными спекулянтами. Только назвали они себя на зарубежный манер фарцовщиками. Работать не хотели... А вот повнимательнее нельзя ли? Там, -- в самом верху, -- прочтите повнимательнее, о каком времени идёт речь. И ещё, хотите показать осведомлённость и свою культуру -- повежливее будьте. Ведь ваши взгляды вроде бы "либеральные". А они всегда призывают к культуре и вежливости. Восхвалять нынешнее, но при этом топтать в грязь прошлое -- удел пятой колонны. Забыли, какие времена вообще были? Война,.. -- весь мир навалился на страну. Выдержали. И построили страну заново! В 90-х развалили либерасты, и -- ещё пробежалась война. Восстановится Россия! А если не помнить хорошее в прошлом -- путь в будущее закрыт. Всего хорошего.

-- Чья б корова мычала!.. Особенно из "русской" Германии... Это фарцовщики работать не хотели? А как же снабженцы, товароведы, экспедиторы... и тому подобные, которые свою работу делали не достаточно качественно. Разве те самые "фарцовщики" -- не снабженцами были? Пыл свой поумерь -- завистливый. Дорого продавали? Да... Дороговато... Но какие расходы, таковы и доходы. Спрос рождает предложение. Было бы с кем конкурировать, были бы и цены ниже. Однако! Товары, завозимые из-за рубежа и продаваемые не только из-под полы -- были не много дешевле "чёрного рынка", а при перепродаже и по-блату -- такими же.

И это кто что выдержал?! -- спрашивается. Советского Союза нет уже более 25-ти лет. Кто, что выдержал и держал,.. -- не понимаю. Или тут про Германию, которую якобы победили в ВОВ, -- речами граголят? Если бы не так-называемые "либерасты", то кто-то до сих пор сидел бы в креслах аппартчиков и курил не бамбук конечно -- получая бесплатные блага за счёт трудового народа. Кормушки лишился что ли? Или по наследству от деда-чекиста не досталось корыта? -- который народ советский расстреливал и ссылал в ту степь... -- казахскую, или -- сибирскую... лесистую местность, -- дерева валить.

А чего же вы, граждане не страны советов уже давно, Тартарию не вспоминаете? Или Римскую империю? Как там хорошо было жить... А ещё лучше сразу с мамонтов и динозавров начнём... Там вообще всё общее было -- в реале, а не в лозунгах. Всё вокруг советское -- всё вокруг моё!

-- Где я живу -- не твоё дело. А о корове -- лучше тут не тявкай. Ты просто жучка. Значит, точно сказал -- из 5-й колонны. Мой аватар как раз для таких. Надо их выявлять! Не, вы поглядите-ка, как он проявился! Предатель! Строчи тут, брызгай слюной, злопыхай! Нормальные люди все понимают! Подсадная утка! За деньги тут уселся. А слюна у тебя уже весь твой экран забрызгала. И совсем неизвестно, чей ты. Думаю, из обыкновенной Украины -- самый настоящий укроп.

-- Да-да-да... Конечно же, -- не моё дело... Крыть те больше нечем! Вот ты и тявкаешь. С голоду что ли скулишь? Сопли распустил. Кормушки лишился... А ты из какой колоны будешь? Из первой?

Бузу затеять -- первый!.. Коммунистам жопу подлизать -- первый!.. Расстрелять своих -- первый!.. А потом всех обвинить... -- тоже первый. И сказать, что раньше мы жили лучше: с дифситом, с тремя работами, с червонцем до получки, с долгами -- если давали в долг или взаймы... -- с очередями за молоком, маслом, хлебом, мясом (если выбрасывали), синими курями -- которых этапом пешком до магазинов гнали,.. перемороженной рыбой "минтай",.. картошкой с глыбами земли -- гнилой картошкой, конечно же... со слипшимися пельменями и макаронами, с "завтраком туриста" -- который даже кошки не ели. Ну, что?.. -- первый!.. Усрался?.. -- увидав пятого, сзади... в очереди. И всё это под лозунги о светлом будущем и криками "одобрям" -- не смотря в сторону "загнивающему капитализьму", но всё время "принюхиваясь", что же там так вкусно и сытно пахнет (с его гниением в течении десятилетий советской власти).

-- А как этот рубль доставался?..

-- Ранее уж ни один человек сообщил о трудностях и нескольких подработках по шитью на дому и иных работах для выживания...

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

-- Все бы в золоте ходили, если бы всё так просто в стране советов было.

-- И это мы ещё всего лишь период после 70-х, как бы то нибыло, обсуждаем -- не упоминая голодоморы 20-х и 30-х годов. Да... На базаре дорого, а в магазинах небыло. Разве это было просто?


-- Точно!.. И за маслом была не очередь, а давка -- чуть-ли не до драки.

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

-- Вы меня совсем с панталыку сбили... Если все так тот рубль хвалят и сожалеют о потерянном времени и строе, то почему же они все в золоте ходят -- как в резервной валюте банка? Зубы, и те -- золотые...

-- Потому что технологии девятнадцатого и ранее веков -- в застое и запустении. На чёрный день копили. Сказки они рассказывают: как хорошо в стране советской жить (было). Там же "давали", а тут самим думать надо даже о прожиточном минимуме.

-- Кто как мог, так воровал...

-- А,.. ну да -- минимум давали (делая вид, что за работу платят), а остальное воровали (кто сколько и чего мог, с работы тащили): начиная от скрепки или бумаги и кончая швеллерами и стяжками на шахтах -- для гаражей и подвалов. Уголь воровать не надо было, так как шахтёрам за копейки его отпускали, но зато другим его воровать приходилось. А ещё миллиард пшеницы "собрали" -- гоняя одни и те же вагоны от станции к станции и "скрупулёзно" ведя учёт. Да,.. -- хорошо в стране советской жили. Только вот сейчас всё позабыли, ради очередного лозунга "Единая Россия" этапом в СССР.

Знаете анекдот про червя? Папа, а почему мы в гавне живём, а те черви в яблоке? Родину, сынок, не выбирают... Так и тут. Как бы "не выбирают" -- сидя за колючей проволокой границ.

Ну, дак -- шо?! Где, ты -- колонист из первых рядов? Правда глаза колит?!

И кто после этого всего совесть потерял? Те кто правду помнят и не стыдятся о ней сказать, или те кто врал, врёт и врать будет -- потеряв блага и должности насиженные? ​Родину вспомнили, да? -- которую уж как 25 лет коммунисты пропили в бане Беловежской пущи.

-- Сегодня в баню уже не ходят: сегодня баню во дворе ставят и банщика в придачу, -- вот в чем разница.

-- А в те времена без указки сверху "ни-ни"... И кажна курица на учёте -- в личном приусадебном хозяйстве.
Комментарии (3)КомментироватьВ цитатник или сообщество
Ира_Ивановна

"Как заработать миллион"

Среда, 15 Июня 2016 г. 21:12 (ссылка)

Это цитата сообщения geniavegas Оригинальное сообщение

"Как заработать миллион" – авторы: Ефим Шаулов и Евгения Шерман

Дорогие друзья!
Сегодня я покажу вам совсем новый диалог с Ефимом Шауловым, который мы написали к его стихотворению "Бизнес".



Ефим Шаулов

Полупритча-полуанекдот, – кто прочитает, тот поймёт...

*
Мужик старательный Василий,
всю жизнь трудившийся как вол,
разбогатеть мечтал в России,
но, хоть башкою бейся в пол, –
"кругом шестнадцать" и непруха,
да труд тяжёлый, на износ, –
разбогатеть в России – глухо
с зарплатой, блин, что… с "гулькин нос"!

– Марусь! – сказал жене Василий –
Чтоб нам иметь богатый дом,
на пару лет я из России
поеду в Штаты… за баблом.
Немного потерпи, родная,
промчатся пару лет, как сон,
и я, поверь мне, обещаю,
собью там баксов… миллион!


geniavegas



Серия сообщений " мои диалоги с Е.Шауловым":

Часть 1 - "Вариации на тему Репка". Авторы Е. Шаулов, Б. Коптенкова, Е. Шерман
Часть 2 - "Жене Шерман и Америке с Днём рождения!" Диалог с Ефимом Шауловым
...
Часть 18 - "Cорок бочек арестантов" – авторы: Е.Шаулов и Е.Шерман
Часть 19 - "Сексом дружбу не испортишь" – авторы Е. Шаулов и Е. Шерман
Часть 20 - "Как заработать миллион" – авторы: Ефим Шаулов и Евгения Шерман


Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
PogrebnojAlexandroff

В продолжении... (общений)

Среда, 15 Июня 2016 г. 17:37 (ссылка)

Вежливость: каков вопрос, таков и ответ (каковы попы, таковы и приходы).

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

-- Ну, наконец-то!.. Согласен, Айдар. Не все осознают и что такое "индоевропейские" (хотя их "арийскими" ранее именовали, или... -- до индийцев в Европе никто не жил?) или "русскославянские" и иные "языки" и диалекты. Это напечатано не случайно, а именно для того, что задумались и осознали, что слова -- используемые в данном (или ином) случае, являются родными для двух и более современных народов, как и первоочерёдность происхождения их может быть очень спорной. Урусы (как булгары, саарматы, хазары, скифы и прочие) жили бок о бок и с современными татарами (людьми с земли отцов, так как тата и есть отец, а ар -- участки территории), и с башкирами, и с киргизами, и с казаками/казахами... и ещё многими иными народами нашей огромной (в прошлом и настоящем) страны (пусть даже под различными наименованиями). Спасибо за пояснение твоего вопроса, которое я наконец-то увидел -- ожидая хоть от кого-то.

Комментарии (2)КомментироватьВ цитатник или сообщество
PogrebnojAlexandroff

Проходят годы

Среда, 15 Июня 2016 г. 16:56 (ссылка)

Aleksey_N__Pogrebnoj-Alexandroff (493x594, 59Kb)
Уж ни красив... -- не строен телом,
И на лице -- в морщинах, -- даль;
И отразилась "снегом" проседь,
Припорошив виски́. Печаль...

Проходят годы, и -- прошли уж:
Оставив память, о былом... --
О верном, радостном и тайном;
О непомерном,.. и... -- родном...

Осталась ль, нотка... сожалений? --
В несбыточных -- былых решений,
Или в упущенных делах, и... --
Не свершённых в планах встречах.

Возможно... -- Тайны не познать,
Коль не расскажут в кулуарах;
Коль людям веча не сказать,
И на бала́х -- кружа́ ся в парах,
Вновь(!) не вплести любви речами,
Что высшим обществам под стать.


            Сего дня, -- июня 15-ого;
            года 2016-ого -- от рождества Христова,
            в Лето 7525-е от сотворения Мира в Звёздном храме.
            © Pogrebnoj-Alexandroff
            ...просто так.



Прослушать запись Скачать файл



Примечания:
--------------------------
В озвученном произведении Алексея Погребного-Александрова "Проходят годы" использованы собственные авторские лупы, музыкальные клипы, вложения, ремиксы и иные звуковые эффекты (Aleksey Pogrebnoj-Alexandroff).

Метки:   Комментарии (12)КомментироватьВ цитатник или сообщество
PogrebnojAlexandroff

Всему своё время: приходит, и... -- уходит.

Вторник, 14 Июня 2016 г. 17:28 (ссылка)

-- Некоторые тут очередной выброс (с хамством и оскорблениями) сделали о праиндийском или санскрите. Сын / сун -- санскрит? Бред не несите ж! У них буквы такой нету, как "ы" (или "й"), вот и использует для этого "y" (игрек) (или "j" -- джей) -- современники наши, в словарях с использованием латиницы. Сати, савати и/или самати даже близко не соответствует слову "сын" или "сун(ь)".

-- А зачем это всё вообще? -- заметил Сперанский. Так можно приехать к самородку уединённого племени асов, окраин восточных земель. Смысл в чем?

-- В знании, Тимур, словесности своей.

-- Есть эффект?..

-- Есть конечно! Спорютъ, читаютъ, искать начинаютъ... -- копають ся в прошлом и соседском (но не белье, конечно). Да и понять чтобы факт тот также, что... -- не всё, о чём писали и пишут академики от науки (костеря других в некой лживости или псевдо академичности и во лженауки, как лжесвидетельстве), правда. Людям необходим пример для познания той самой правды. Самостоятельная оценка нужна. Не в споре ведь истина рождается, а в сравнении.

-- Это верно. Зерно сеять надо. А там урожай разбирать. Польза,.. -- в амбар. Беспольза,.. -- в угар.

-- Пока из болотной тины за ушко да на солнышко (бел свет) не вытягнуть, сути-то не осознать -- описываемого и пересказываемого словами своими (по подобию и образу некому). Истина на поверхности же, а не под спудом мусора, видна.

-- Вот тут, как раз, все дело в образах. Не богато нонче их воспроизводит сознание.

-- То-то и оно, что образы у всех едины и отражают увиденное или услышанное, а вот передать то словами -- понятными для всех и для каждого, не всегда получается. Засрали язык русский, подменой единых символов в передаче нюансов и тех самых, конкретных образов -- синонимами. А ведь каждый звук и нюанс в говоре -- с неким акцентом и эмоциями даже, несёт в себе частичку своего: некого таинства и желания выразить именно то, что хочется передать людям, а не то, как это требует "закон" или никчёмное "правило" на язык и словесность. На чужой роток не накинуть платок...

-- Кто-то же утвердил "морфологический разбор слова". Весьма не глупый и коварный оказался.

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

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

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

-- Археология тож двигает процесс.

-- К сожалению, -- не очень. В археологии также есть свои проблемы и косность в развитии. Кстати, в те -- наши времена, издавались и распространялись по подписке интересные материалы от общества "Знание", выпускались журналы "Наука и религия", "Техника молодёжи", "Юный техник" и "Юный натуралист", серия "ЖЗЛ" и многое другое, в которых публиковались интересные и познавательные статьи о необычном, прошлом и настоящем, будущем и возможном (как и невероятном), и что сформировало наше мировозрение с тягой к познанию. Смешно видеть и слышать, как некоторые обыватели современной молодёжи, раскрыв рот слушают новоявленных "гуру", которые от своего имени и как великое достижение в их "открытии" вещают прописные истины того времени и из тех источников.

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

-- О!.. К гадалке не ходи,.. -- на 100, и возможно -- на 1000%, -- реальность. Всё меняется, и даже в наше -- обозримое время, это хорошо заметно. Всё новое, это хорошо забытое (и забитое) старое.

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

Метки:   Комментарии (5)КомментироватьВ цитатник или сообщество
PogrebnojAlexandroff

Мерцающие звёзды

Понедельник, 13 Июня 2016 г. 18:35 (ссылка)

Мерцающие звёзды
(промельки с проблеском, в светочах знаний).



-- Книги читать не пробовали? Только не дебильные теории Мундаковых-Задорновых и иже с ними?

-- Нет. А зачем?.. -- сейчас интернет есть: в виртуальном пространстве не только читать "пробовать" можно, но и писать -- выражая или выражёвывая собственное мнение своё и мыслями делясь не токмо в кулуарах и на задворках улиц, своими. Когда берёшь книгу в руки, совершенно не знаешь кто её написал и для того чтобы понять суть дела и принять решения или выводы, надо её прочитать. У каждого своё мнение и не стоит поспешно судить о людях и авторах, не познакомившись с их жизнью и творчеством. Для кого-то и ты дебил или идиот, но разве это так на самом деле? Не ошибается лишь тот, кто ничего не делает. Видя твою фотографию и соответственно -- возраст, -- понимаю, что с твоим юношеским максимализмом до мудрости ещё далеко.

-- Бред сивой кобылы это, вот и все выводы. Типичный фолк-хисторист, быдло-гуру, каких сегодня как собак нерезаных. Такие, как этот Мудаков, свою аудиторию всегда найдут -- качество образования просело сильно...

-- Класс!.. Все эти заносчивые эпитеты можно отнести по прямому назначению и к тебе лично... А что ты сделал в жизни, кроме как нахамить в комментариях и совершенно не уважать старших? Жопу конечно целовать им не предлагаю, но мозги включить рекомендую, если уж прикидываешься быть русским и пришёл в сообщество, поднимающее вопросы о геноциде нашего народа.

-- Бред, он и в Африке -- бред. Любой здравомыслящий человек это понимает.

-- Это у тебя здравые мысли?!!! Молодой человек, тебе к психологу надо. Кто был твоими учителями?

-- Ушлый дяденька делает гешефт на идиотах, -- старо как мир.

-- О!.. Как интересно!.. А "гешефт" разве русское слово?! И ещё без кавычек употреблённое даже. Что ты тут делаешь, молодой человек?.. -- в сообществе, поднявшем вопрос о геноциде Русов.

-- Ещё раз повторюсь, вступил в диалог Фёдор: бред, -- это, как раз, -- основываясь на Вашем высказывание составлять своё мнение без просмотра передач и фильмов, а также прочтения соответствующей литературы.

-- Да, Федя... Как говаривали в СССР, -- ​Солженицына не читал, но осуждаю!.. Так и с этим критиканом молодым.

-- Объясняю популярно, -- ушлому дяденьке глубоко наплевать на Род и историю своей страны; он вливает в уши дуракам то, что они хотят услышать, и имеет с этого вполне конкретную осязаемую выгоду.

-- А чем учёные и попы лучше, или правители -- у власти народной?

-- Ой, да -- Сундаков, по курортам мировым поездил, поиздержался и стал бабло на лохах делать: благо сейчас интернет, а ущербные закомплексованные лошары, ждущие чтобы им сказку подарили "какие они великие" -- всегда найдутся...

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

-- Роман, тебе не надоело по группам славянским скакать и писать разную чушь и путать народ? Кто не скачет, тот москаль, что ли?

-- У него "гишефт" такой жизненный. Оперу видать пишет...

-- Ты тролль, Рома? Почему ты говоришь и пишешь чушь в группах славянских?

-- Пусть пишет... Чем больше напишут, тем больше останется в истории и будет над чем работать: сразу выявятся враги, иноземцы, шпионы, подсиралы, стукачи, патриоты... и многие иные -- со своим самомнением и догмами.

-- Повторяю ещё раз для особо одарённых, -- эти группы и сообщества такие же "злявяньскию" как я Папа Римский.

-- Какие бы нибыли, но ты в них тусуешься и строчишь -- делясь своим мнением. И ведь никто не блокирует тебя за это ещё, как и комментарии не удаляет.

-- Ещё раз задаю вопрос, Рома: -- Ты тролль?! Почему в славянских группах наводишь смуту и пишешь чушь?

-- Для этого совершенно не обязательно быть троллем. Его так воспитали... -- нерусские.

-- В третий раз повторяю, -- эти группы лжеславянские и русофобские: они не имеют совершенно никакого отношения к славянству.

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

-- Я не троллю! Я пытаюсь дуракам глаза раскрыть на ложь ваших гуру.

-- Так открывай! Но не словами про 6 палату и оскорблениями. Ты в их отсутствии пытаешься вякать, но ни одного обоснованного пояснения не привёл. Ни одного доказательства к той или иной теме. Ни одного вразумительного и толкового комментария от тебя ещё небыло. Это похоже на шавку в подворотне, которая лает на слона. Только вот собаки лают, а караван идёт (делая своё дело и неся поклажу на себе).

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

-- В чём-то ты пав конечно, Рома, но... -- люди разные, и выкать тут неприлично будет.

-- Я к тому, что может ты лучше начнёшь действительно пользу народу приносить российскому, а не чушь писать?! Например, -- Талмуд критиковать: о его учениях, о педофилии, об убийствах людей... Это гораздо полезней было бы, чем сидеть в славянских сообществах, смуту наводя.

-- А вот тут я с вами в корне не согласен!.. Как и против того, чтобы тут и где-либо ещё упоминали о некоторых "избранных" и тому подобных персоналиях. Разве нет иных тем, кроме того, чтобы им пиаром -- чёрным, заниматься и поминать в суе... Кстати; видя твои комментарии, Рома, о качестве твоего образования конечно же не поспоришь, и о его "хромате" -- согласишься пожалуй.

-- Наукой должны заниматься учёные, Алл...

-- Смотря какие и чему их учили. Советская средняя школа, Роман, покруче средневекового универа будет раз в 5 -- как минимум, но вот современная наука всё ж как-то на догмах церкви и магах прошлого основывается до сих пор.

-- На догмах?!

-- Не твои же она догмы старалась опровергнуть и/или подтвердить, наука ента, а церковные именно. У тя тямы и логики нет даже, простых вещей осознать.

-- В огороде бузина, а в Киеве дядька... Ты сам-то понял, что написал и к чему?!

-- Я же для русских писал, а не для тебя. Кому надо, тот поймёт и оценит. Сколько звёзд на небе, столько и тайн неразгаданных. Сколь множественно песчинок на земле, столь велико и основ в творении. Сколько людей на планете, столь множественно и мнений их будет в спорах и разговорах никчёмных даже. И в спорах не рождается истина, но выражаются мнения и зачастую -- сторонние также, однако... Всех книг не прочесть, как и мыслями во мнениях не поделиться со всеми.

-- 2х2=4 и другого мнения здесь быть не может...

-- Смотря кто считать и для кого будет: иной раз и 5 получается. И ведь всё по правилам математическим, но -- именно, 5 получится... А ты не знал, да?

-- Только яблок от этого больше не станет.

-- Зато в кармане у ростовщика и банкира прибудет... Ты видать и с задачами для начальной русской школы от Льва Николаевича Толстого не знаком. Только вот, я -- при этом, никого не защищаю, не критикую и кумиров для себя не создаю, однако -- констатирую и логически рассуждаю, всего-лишь, чего -- тебе, Рома, несвойственно. Тебя же, видать, в школе учили плохо или вовсе никак.

-- Знаете ли!.. Заявить, что Сенкевич, это -- телеведущий, -- всё-равно, что сказать: "Сталин, это -- курящий грузин с усами", или "Достоевский, это -- мужик с бородой, умеющий читать и писать"...

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


***
Не всё, что даровала нам сутьба,
Мы с честью пронести по жизни можем.
Но всё ж, как ни́был бы наш Мир тревожим, --
Проблемами, раздорами, войной...
Порою трудно спорить нам с судьбой,
И изменить, что было, мы не можем.


            Сего дня, -- июня 13-ого;
            года 2016-ого -- от рождества Христова,
            в Лето 7525-е от сотворения Мира в Звёздном храме.
            © Pogrebnoj-Alexandroff
            ...просто так.



Примечания:
--------------------------
* бабло -- шальные деньги;
* лошара -- лохи на ша́ру;
* выражёвывать -- выдавливать, мямлить, глуповато и невнятно изъясняться...
* сутьба -- от сути (жизни), но не суда (даже Всевышнего);
* в суе -- в суете;
* тя -- краткая просторечная форма слова "тебя";
* гишефт -- еврейское слово в синонимичном соответствии русскому слову "подарок" (дар).
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Leovik10

АНЕКДОТЫ ДЛЯ ВАС!

Четверг, 09 Июня 2016 г. 08:17 (ссылка)






0_105c53_aff0d7b3_orig (681x700, 4805Kb)MustBeFunny.ru







1. Служащий приходит к шефу в кабинет и говорит: 

- Моя супруга сказала мне, чтобы я попросил у Вас повысить зарплату. 

Шеф: 

- Хорошо я посоветуюсь об этом со своей женой. Читать далее



 






Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Leovik10

АНЕКДОТЫ И ЮМОР ДЛЯ ВАС!

Среда, 08 Июня 2016 г. 09:33 (ссылка)




Хочу лета! (640x480, 967Kb)MustBeFunny.ru







1. Маленький Изя никогда не кричал в магазине детских игрушек: — Купи-купи-купи!

Он начинал с какой-нибудь отвлеченной темы, например:

— Папа, а твое детство тоже было тяжелым и безрадостным? Читать далее



 






Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Leovik10

АНЕКДОТЫ!

Понедельник, 06 Июня 2016 г. 11:52 (ссылка)




Улыбнись новому дню! (600x160, 1322Kb)MustBeFunny.ru






Анекдоты. Выпуск 794




1. Девушки — как абоненты мобильной сети: то постоянно занятые, то временно не доступны, то недостаточно денег на вашем счету... Читать далее






Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Leovik10

АНЕКДОТЫ!

Пятница, 03 Июня 2016 г. 12:23 (ссылка)






Разношу всем улыбку и удачу! (347x463, 846Kb)










1. Идет бракоразводный процесс. Судья спрашивает у мужа:

— Из-за чего вы собираетесь разводиться?

— Видите ли... Моя жена хватает любые предметы, которые ей попадают под руку. Ну... все подряд — тарелки, сковородки, мясорубку — и бросает в меня.

— Скажите, а сколько вы живете вместе?

— Да вот уже 20 лет будет.

— И всё это время вы терпели?!

— Да она раньше не попадала.


2. Сначала ты не хочешь спать, а потом 6 утра.


3. — Что может быть отвратительнее, чем откусить яблоко и обнаружить там червяка?

— Откусить яблоко и обнаружить там пол червяка.


4. Детство — ложечку за маму, ложечку за папу, ложечку за друга. Повзрослели, все так же, но ложечку заменила ... рюмочка.



 



Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Leovik10

АНЕКДОТЫ.

Пятница, 03 Июня 2016 г. 06:10 (ссылка)






15599500 (321x350, 184Kb)MustBeFunny.ru




 







Анекдоты. Выпуск 790




Мужик на операционном столе:

— Доктор, а вы не забыли про наркоз?

— Наркоз? Зачем тебе наркоз? Увидишь, что я c тобой делаю – сам

отключишься.


Во время футбольного матча, жена спрашивает мужа:

— За что вон того зрителя ругают соседи?

— Он бросил бутылку в судью.

— Hу так ведь не попал!

— Вот за то и ругают.


У меня есть друг. Каждый раз, когда я прихожу к нему, он моет полы.

Однажды я спросил его, мол, что это ты, как я ни приду, все время полы моешь? А он говорит:

— Звонок у нас очень громкий, а кот — очень пугливый! (с)


Подведение итогов учений ВДВ.

Генерал: — Участвовало 100, успешно приземлились 97, потерь – НЕТ !

Журналист: — Простите, как без потерь? А где еще трое …?

Генерал: — Экипаж прыгать отказался...


Вчера психанул и ушёл из дома... Вспомнил, что живу один, вернулся...







Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Leovik10

ЮМОР ДЛЯ ВАС!

Среда, 01 Июня 2016 г. 07:58 (ссылка)




127834859_8d0b5bdceb57 (240x320, 269Kb) 

 













 







1. Каждая мать надеется, что ее дочь будет счастливее в браке, чем она сама; но ни одна мать не надеется, что ее сын женится удачнее своего отца.


2. Жена мужу:

— У меня для тебя две новости: хорошая и плохая.

— Ну и какие же?

— Я от тебя ухожу...

— Так, так... А плохая?


3. — А правда ли, что все войны на Земле из-за женщин?

— Конечно. Нарожали дураков!


4. Американец в воскресенье отдыхает дома от тяжелых будней.

Русский в понедельник отдыхает на работе от тяжелых выходных.


5. Один мальчик с детства был не по годам умен. И чтобы его не призвали в армию, называл себя дядя Федор, жил отдельно от родителей и разговаривал с собакой и котом.






 






Метки:   Комментарии (1)КомментироватьВ цитатник или сообщество

Следующие 30  »

<диалоги - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda