Какой инструмент обработки текста рекомендуется для анализа сценариев?

У меня есть несколько простых текстовых сценариев, отформатированных как пример в конце этого поста. Я хотел бы разобрать каждый в некоторый формат, где:

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

Наиболее очевидный подход, который я могу придумать, заключается в использовании sed или же perl или же php размещать теги div вокруг каждого блока, с классами, представляющими персонажа, местоположение, будь то указания сцены или диалог. Затем откройте его как веб-страницу и используйте jQuery, чтобы вытащить все, что мне интересно. Но это звучит как окольный способ сделать это, и, возможно, это только кажется хорошей идеей, потому что это инструменты, к которым я привык к. Но я уверен, что это повторяющаяся проблема, которая была решена ранее, поэтому кто-нибудь может порекомендовать более эффективный рабочий процесс, который можно использовать в Linux? Благодарю.

Вот пример ввода:

      SOMEWHERE CORPORATION - OPTIONAL COMMENT
      A guy named BOB is sitting at his computer.

                             BOB
                Mmmm. Stackru. I like.

      Footsteps are heard approaching.

                             ALICE
                Where's that report you said you'd have for me?

      Closeup of clock ticking.

                             BOB (looking up)
                Huh? What?

                             ALICE
                Some more dialogue.

      Some more stage directions.

Вот как может выглядеть пример вывода:

      <div class='scene somewhere_corporation'>
       <div class='comment'>OPTIONAL COMMENT</div>
       <div class='direction'>A guy named BOB is sitting at his computer.</div>
       <div class='dialogue bob'>Mmmm. Stackru. I like.</div>
       <div class='direction'>Footsteps are heard approaching.</div>
       <div class='dialogue alice'>Where's that report you said you'd have for me?</div>
       <div class='direction'>Closeup of clock ticking.</div>
       <div class='comment bob'>looking up</div>
       <div class='dialogue bob'>Huh? What?</div>
       <div class='dialogue alice'>Some more dialogue.</div>
       <div class='direction'>Some more stage directions.</div>
      </div>

Я использую DOM в качестве примера, но опять же, только потому, что это то, что я понимаю. Я открыт для всего, что считается наилучшей практикой для такого рода задач обработки текста, если, как я подозреваю, регулярные выражения типа roll-your-own и jQuery не являются наилучшей практикой. Благодарю.

2 ответа

Вы можете использовать Celtx для импорта текстовых сценариев и экспорта их в HTML (и RDF/XML для метаданных) (см. Эту связанную ветку и этот пост в блоге, в котором описывается структура файла).

Другие редакторы сценариев, такие как Trelby, могут также предложить эту функцию.


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

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


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

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

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

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

Другие вопросы по тегам