Лекция Стивена Вольфрама

ВНИМАНИЕ!!!

БЛОГ ПЕРЕЕХАЛ НА НОВЫЙ АДРЕС https://blog.wolframmathematica.ru

Онлайн машина вычисления знаний Wolfram|Alpha ®

Онлайн машина вычисления знаний Wolfram|Alpha ®

вторник, 28 мая 2013 г.

Анализ текста в Mathematica: выделение цитат, цветов и многое другое... на примере книги "Вспомнить все" Арнольда Шварценеггера
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_Large.png
Анализ текста в Mathematica: выделение цитат, цветов и многое другое... на примере книги "Вспомнить все" Арнольда Шварценеггера
Общее количество использованных в посте встроенных функций или символов: 122

Список имен используемых встроенных функций и символов в порядке их появления в коде:
Short | Set (=) | Import | FileNameJoin | List ({...}) | NotebookDirectory | StringLength | Plus (+) | StringCount | Tally | Characters | StringReplace | Thread | Rule (->, ->) | CharacterRange | Sort | Function (&) | Less (<) | Part ([[…]]) | ToCharacterCode | Slot (#) | Panel | Rotate | BarChart | Span (;;) | All | ChartLabels | Placed | Map (/@) | Style | Bold | Axis | Times (*, ×) | Degree | ColorFunction | ColorData | ImageSize | GridLinesStyle | Dashed | PlotRangePadding | BarSpacing | Pi (π) | Power (^) | CompoundExpression (;) | Cases | Blank (_) | Condition (/;) | Pattern (:) | Greater (>) | ReplaceAll (/.) | FullForm | DeleteCases | StringSplit | RegularExpression | StringJoin (<>) | Length | ListLogPlot | Joined | True | PlotRange | AspectRatio | PlotStyle | Thick | Frame | FrameLabel | FontFamily | ListLogLogPlot | SetDelayed (:=) | Block | StringPosition | Alternatives (|) | StringTake | StringDrop | Select | Nearest | Grid | Transpose | Background | None | Orange | LightGray | ItemStyle | Directive | Alignment | Left | Dividers | White | Red | Green | Blue | Yellow | Black | Gray | Pink | Brown | Flatten | Partition | Riffle | Mean | Graphics | EdgeForm | Rectangle | Spacings | TextAlignment | Center | With | Increment (++) | Dynamic | Button | If | Equal (==) | Appearance | ItemSize | Pane | Image | RawArray | ColorSpace | Interleaving | Join | PlotLegends | LineLegend | Above
Некоторое время назад в Интернете на сайте журнала Esquire я встретил небольшую красивую статью о цветах, которые использовали авторы в своих произведениях. Ниже вы можете увидеть одну из созданных в статье интерактивных визуализаций. Саму статью можно увидеть перейдя по ссылке.
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_1.gif
Само собой, у меня появилось желание создать программу в Mathematica, которая позволила бы создавать подобные (и не только) объекты для любых произведений, которые мне интересны.
В качестве интересующего меня произведения я возьму книгу Арнольда Шварценеггера (Arnold Schwarzenegger) “Вспомнить все” (Total Recall). Выбрал я ее по многим причинам, на которых я сейчас не буду останавливаться.
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_2.gif
Вступительные слова...
Что-ж, давайте загрузим текст в Mathematica:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_3.gif
Перед тем, как приступить к основной работе, можно немного развлечься и произвести разнообразный анализ текста. Для начала, давайте найдем сколько символов использовано в тексте:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_4.gif
Теперь узнаем из скольких абзацев состоит текст:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_5.gif
А также сколько в тексте предложений
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_6.gif
Теперь найдем количество вхождений каждого из символов, предварительно сделав все буквы строчными:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_7.gif
Отсортируем символы:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_8.gif
Теперь построим их распределение:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_9.gif
Также отобразим только те символы, которые встречаются часто (например, больше 1000 раз):
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_10.gif
Теперь можем найти самые распространенные слова, предлоги и пр.:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_11.gif
Можно легко определить количество разнообразных слов и предлогов, которые использованы в тексте:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_12.gif
Теперь выведем список 200 самых часто встречающихся слов и предлогов:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_13.gif
или их распределение в логарифмическом:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_14.gif
или дважды логарифмическом масштабе:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_15.gif
Выделение цитат, создание цветового портрета произведения
Итак, перейдем к реализации задуманного. Для начала создадим функцию, которая искала бы определенное слово в тексте:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_16.gif
Теперь создадим функцию, выделяющую предложение, которое содержит слово с заданной позицией. Для этого нам понадобится знать те позиции, на которых находятся точки:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_17.gif
Теперь можем создать саму функцию:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Она сама по себе интересна, так как позволяет выцеплять из всего текста предложения по интеерсующей тематике, скажем, если мы хотим, можно выцепить все предложения со словом “терминатор”:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_18.gif
или “слай”:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_19.gif
После того, как эта функция создана, можно приступить к выделению цветов. Для начала, создадим правила цветов:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Теперь выделим места в тексте, содержащие упоминания о цвете:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_20.gif
Отсортируем их в порядке появления:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_21.gif
Отобразим карту цветов, как на сайте Esquire:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_22.gif
Добавим возможность увидеть предложение по нажатию на соответствующий цвет:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_23.gif
Аналогично можно сделать с любыми объектами:
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_24.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_25.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_26.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_27.gif
Реализация алгоритмов для оригинального текста
Само собой интересно посмотреть на аналогичные вещи, только для оригинального текста. Приведу тот же текст, чтобы не путать, только все теперь будет относиться к оригиналу. При этом будет произведено сравнение оригинала и перевода.
Загрузим текст в Mathematica:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_28.gif
Найдем сколько символов использовано в тексте:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_29.gif
Узнаем из скольких абзацев состоит текст:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_30.gif
Количество предложений в тексте:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_31.gif
Количество вхождений каждого из символов, отсортируем их и  построим их распределение:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_32.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_33.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_34.gif
Отобразим только те символы, которые встречаются больше 1000 раз:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_35.gif
Самые распространенные слова, предлоги и пр.:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_36.gif
Количество разнообразных слов и предлогов, которые использованы в оригинальном тексте:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_37.gif
Список 200 самых часто встречающихся слов и предлогов:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_38.gif
их распределение в логарифмическом:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_39.gif
и дважды логарифмическом масштабе:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_40.gif
Функция, которая ищет определенное слово в тексте:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_41.gif
Функция, выделяющую предложение, которое содержит слово с заданной позицией:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_42.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Выцепим все предложения со словом “terminator”:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_43.gif
или “sly”:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_44.gif
Выделим цвета:
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_45.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_46.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_47.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_48.gif
Пример с транспортом:
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_49.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_50.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_51.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Analiz_teksta_v_Mathematica_vydelenie_citat_cvetov_i_mnogoe_drugoe_52.gif

Блог принадлежит “Русскоязычной поддержке Wolfram Mathematica
При любом использовании материалов блога, ссылка на блог обязательна.
SpikeyСоздано с помощью Wolfram Mathematica 9

Комментариев нет:

Отправить комментарий