Опыт статистической обработки текстов А. С. Пушкина
since  July 21 2001 (since Dec.24 1999,  Japanese ed.)

 

 

  1. Предисловие
  2. Круг произведений Пушкина, подвергнутых обработке
  3. Принципы редактирования
  4. Принципы подсчета слов
  5. Процедура компьютерной обработки
  6. Средства компьютерной работы
  7. Таблицы статистики слов в текстах Пушкина
  8. Послесловие

 

 

Предисловие

Данная страница — опыт статистики слов в художественных произведениях А. С. Пушкина. Можно просмотреть статистические таблицы отсюда. Мне хотелось бы, чтобы исследователи, при использовании в своих работах предлагаемых статистических таблиц, признавали следующие условия:

Обработка статистики механически выведена вычислительной машиной. Электронные тексты основаны на CD-ROM Полного собрания сочинений А. С. Пушкина, опубликованном фирмой F-BIT. Электронное издание, в свою очередь, публикуется на основе знаменитого Полного собрания сочинений Пушкина, изданного Академией Наук СССР.

Предлагаемые материалы ни в коей мере не претендуют на полноту и совершенство, и автор, а также фирма F-BIT, не несут никакой ответственности за любые результаты, полученные при использовании данных материалов. Это следует признать до начала работы.

возвращение к началу

 

Круг произведений Пушкина, подвергнутых обработке

Круг произведений А. С. Пушкина выбранных для статической обработки включает следующие жанры:

  - Стихотворения
  - Поэмы
  - Драмы
  - Художественная проза
  - Сказки

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

Статистической обработке подвергнуты следующие элементы структуры документа:

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

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

возвращение к началу

 

Принципы редактирования

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

  1. HTML-тэги: фрагменты, такие как <xxx> </xxx>
  2. Гиперссылки, указывающие на примечания, например: "(1)" в тексте "<A href="URL">(1)</A>".
  3. HTML-комментарии: тексты с "<!--" до "-->".
  4. Заголовки Web-страниц: тексты с "<title>" до "</title>".

В издании CD-ROM сушествуют явные опечатки. Много ошибочных вводов русских символов похожих на латинские шрифты: "a", "e", "o", и т. д. Я заменял их насколько это возможно, отыскивая их на текстовом редакторе. Я проверял символы:

A a, B, E e, K, M, H, O o, P p, C c, T, y, X x, 3

Однако в тех случаях, когда латинский символ с акцентом использован вместо русского чтобы ясно указать на акцент, я не делал исправлений. Так например, остается "атàнде": ат(cyrillic)-à(latin1)-нде(cyrillic)

возвращение к началу

 

Принципы подсчета слов

Статистическая обработка сделана при помощи Staslova, программного обеспечения написанного мной, которое разделяет слова по определению оператора и составляет таблицы с подсчетами. В данной пушкинской статистике Staslova работает по следующей инструкции:

  1. Сравнивать слова, в которых все буквы преобразованы в строчные.
  2. Классифицировать слово с смешанными русскими и латинскими символами как русское.
  3. Принимать номера и другие элементы текста, которые оператором не определены как "разделительные символы" в Staslova, в качестве предметов статистики.
  4. Сортировать слова по кодировке ISO 8859-5. В этой системе слова следуют друг за другом в порядке русского алфавита, за исключением буквы "ё", которая следует после "я". О кодировке вычислительного русского языка и системах кодировки вообще см.:

    http://czyborra.com/charsets/cyrillic.html

  5. Учитывать особенности специальных символов HTML. Например, латинский символ "à" написан "&agrave;", следовательно он будет классифицироваться по знаку "&".

При анализе разделения слов признаются три типа разделительных символов:

  1. Разделители безусловные — безусловно разделяют слова:
      ,  .  !  ?  :  ;  "  (  )  {  }  <  >  [  ]
     x'00' - x'1a'   x'1c' - x'20'
    (пробел)
  2. Разделители последовательные — функционируют в качестве разделителей когда написаны подряд больше 2 раз:
      -  =
  3. Разделители смежные — разделяют когда появляются смежно с буквами выступая в качестве разделителей:
      `  '  -

О Staslova см.:

Статистическая таблица упорядочена по литературным жанрам.

возвращение к началу

 

Процедура компьютерной обработки

Процесс составления статистических таблиц объясняется ниже. Он основан на UNIX-платформе. Например, "%" — знак приглашения на ввод команды в TCSH.

  1. Копировать схемы директории CD-ROM
    Копировать схемы файлов CD-ROM для статистической обработки. Для копирования одной операцией использовать команду tar а не cp.
    % mkdir -p ~/literature/pushkin/sochineniya
    % cd /cdrom/texty
    % tar cvf - ./stihi/ ./poemy/ ./drama/ \
    ./proza/ ./skazki/ | \
    ( cd ~/literature/pushkin/sochineniya ; tar xvf - )
    		 
  2. Удаление ненужных файлов
    Удалять такие файлы как переводы иностранных текстов редакторами собрания сочинений, не являющихся предметом статистики.
  3. Редакция по жанрам

    1. Выбирать все HTML файлы (командой find)
    2. Устранять ненужные фрагменты (HTML-тэги, комментарии, и т. д.) и заменять формы ("&xxx;" -> "&xxx|") (командой sed)
    3. Заменять кодировки Windows-CP1251 -> ISO 8859-5 (командой transce8)
    4. Заменять формат ISO 8859-5 -> ctext (командой coco)
      "Ctext" является формат мультилингвистического текста в UNIX X Window System. Staslova требует формат ctext.

    Показываю, например, Shell script, который проводит эти операции (Знак "^M" в sed строке — управляющий код (x'0d')!):


    #!/bin/sh
    #
    #	A.S. Pushkin HTML Text to CTEXT generator
    #
    
    BASEDIR="/home/isao/literature/pushkin/sochineniya"
    PUTDIR="/home/isao/literature/pushkin/sochineniya\
    /statistika/src"
    		  
    /usr/bin/find $BASEDIR/$1 -name "*.htm" \
        -exec cat {} \; | \
    /usr/bin/sed \
        -e '/^<\!--/,/^-->/d' \
        -e 's/<\!--.*-->//g' \
        -e 's/<[Tt][Ii][Tt][Ll][Ee].*\/[Tt][Ii][Tt][Ll][Ee]>//g' \
        -e 's/<[Aa] .*\/[Aa]>//g' \
        -e 's/<[^>]*>//g' \
        -e 's/\&nbsp;/ /g' \
        -e 's/\&[^;]*/&|/g' \
        -e 's/|;/|/g' \
        -e 's/^M//g' \
        -e '/^ *$/d' | \
    /usr/local/bin/transce8 -scp1251 -tiso8859.5 | \
    /usr/local/bin/coco -v '*iso-8859-5*' '*ctext*unix' \
        > $PUTDIR/$1.src
    exit
    		 

  4. Проверка опечаток и редактирование (редактором Mule)
  5. Обработка статистики слов (командой staslova)

    % staslova -s -c0 -l3 -dpushkin.def \
      < stihi.src > stihi.stat
    		 

  6. Разделение таблиц на русские и латинские (редактором Mule)
  7. Сортировка и объединение таблиц по жанрам (командами join, awk, sort)
    Показываю, например, Shell script, который проводит эти операции:


    #!/bin/sh
    #
    #        merge of statistics reports
    		
    cp stihi.stat BASE
    cp poemy.stat stat.1
    cp drama.stat stat.2
    cp proza.stat stat.3
    cp skazki.stat stat.4
    		
    for i in 1 2 3 4
    do
    # <0> put common words to J0
        /usr/bin/join BASE stat.$i > J0
    # <1> put BASE only words to J1
        /usr/bin/join -v1 BASE stat.$i > J1
        /usr/bin/awk '
            {txt=""
            txt=$NF "\x09" "0"
            $NF=txt; print $0}' J1 > J1a
    # <2> put stat.$i only words to J2
        /usr/bin/join -v2 BASE stat.$i > J2
        /usr/bin/awk -v NUM=$i '
            {txt=""
            for (i=NUM; i>0; i--) {txt=txt "0\x09"}
            txt=txt $NF
            $NF=txt; print $0}' J2 > J2a
    # sort / merge <0><1><2>
        /usr/bin/sort J0 J1a J2a > J3
        mv J3 BASE
        rm -f J*
    done
    	  
    cp BASE pushkin.stat
    exit
    		 

  8. Подсчет общего числа слов и итоги такой операции (командой awk).
    Показываю, например, Shell script, который проводит эти операции:


    #!/bin/sh
    #
    #        count of words summary
    	  
    /usr/local/bin/coco -v '*ctext*unix' '*iso-8859-5*' | \
    /usr/bin/awk '
        BEGIN { 
            c1=c2=c3=c4=c5=0; w1=w2=w3=w4=w5=0 
        }
        {
            if ( NF == 6 ) { 
                c1=c1+$2 
                if ( $2 != 0 ) w1++
                c2=c2+$3 
                if ( $3 != 0 ) w2++
                c3=c3+$4 
                if ( $4 != 0 ) w3++
                c4=c4+$5 
                if ( $5 != 0 ) w4++
                c5=c5+$6 
                if ( $6 != 0 ) w5++
            }
        }
        END {
            printf("Total&nbsp\;count\x09 %d %d %d %d %d\n",\
                c1, c2, c3, c4, c5)
            printf("\(words\)\x09 %d %d %d %d %d\n",\
                w1, w2, w3, w4, w5)
        }' | \
    /usr/local/bin/coco -v '*iso-8859-5*' '*ctext*unix' 
    exit
    		 

  9. Редактирование HTML (редактором Mule и Shell script)
    Чтобы читать таблицы с помощью программы просмотра, редактировать тексты статистики как HTML.

    1. Восстанавливать спецсимволы: "&xxx|" -> "&xxx;" (командой sed)
    2. Обрабатывать таблицы (командой sed)
    3. Вводить заголовки HTML (Mule)
    4. Заменять формат ctext -> ISO 8859-5 и кодировки ISO 8859-5 -> KOI8-R (командами coco, transce8)

возвращение к началу

 

Средства компьютерной работы

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

 элементы средства
 системаAMD K6-2 300MHz PC
 емкость памятиSD-RAM 256MB
 операционная системаFreeBSD 3.2-RELEASE
 текстовый редакторMule 2.3 (SUETSUMUHANA) + ETL шрифты
 неинтерактивный текстовый
 редактор
awk  : GNU Awk 3.0.3
sed  : утилита во FreeBSD 3.2
join  : утилита во FreeBSD 3.2
sort  : утилита во FreeBSD 3.2
 утилита замены кодировки coco V2.2 (программа в пакете Mule)
transce8 V1.13
 
возвращение к началу

 

Таблицы статистики слов в текстах Пушкина

  Просматривать статистические таблицы

  • Экран статистической таблицы состоит из трех частей (или "фрэймов"):

    1. Верхняя часть
      Алфавитный индекс. "Total" показывает общую сумму. "Latin" показывает общую сумму не русских слов.
    2. Средняя часть
      Показывает таблицу слов, с символом выбранным из верхнего индекса в качестве заголовка. В начале показана общая сумма: "Total".
    3. Нижняя часть
      Фрэйм ссылки

  • "Total count" в таблице показывает сколько раз в общей сложности данное слово появляется в тексте. "(words)" показывает сколько видов слова появляется в тексте. Например, "красавица   10" означает, что слово "красавица" появляется 10 раз в "Total count", и только 1 раз в "(words)".
  • Таблица "Latin" показывает число появления слов состоящих из символов латинских, французских, немецких и т. д. Здесь классифицируются слова написанные в кодировках ASCII, ISO 8859-1, ISO 8859-2.
  • В случаях, когда объем файла слишком велик, алфавитные таблицы делятся на несколько файлов.
  • Необходимо иметь программу просмотра поддерживающую функцию "фрэйма". Рекомендую воспользоваться IE (Microsoft Internet Explorer) версии выше 4.0 или NS (Netscape Communicator или Navigator) версии выше 4.0
  • Необходимо, разумеется, следующее условие — русский шрифт для чтения и печати русского языка.
  • Зависимо от скорости линии связи с интернетом или из-за объема данных иногда требуется много времени для вывода таблицы. Для ускорения просмотра рекомендую скачать архив.

  Скачивать архив

  • Данные архивированы tar и сжаты gzip.
  • Распаковывать архив одним из способов :

    % tar zxvf pushkin.tar.gz
    % gzcat < pushkin.tar.gz | tar xvf -
    		  

  • После распаковки открыть "preface-r.html" или "navi-r.html" и просмотреть таблицы.
  • Директория "tools" имеет программы Shell script, выбранные мной для составления статистики, как показано выше.

возвращение к началу

 

Послесловие

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

Замечания и предложения принимаются по электронной почте. Несмотря на занятость основной профессией, я отвечаю насколько это возможно.

возвращение к началу