Text 建议使用什么文本处理工具来解析剧本?

Text 建议使用什么文本处理工具来解析剧本?,text,nlp,semantic-markup,searchable,Text,Nlp,Semantic Markup,Searchable,我有一些纯文本的有点结构化的剧本,格式就像这篇文章结尾的例子。我想将每种格式解析为以下格式: 这将是很容易拉起只是阶段的方向,处理一个特定的地方 这将很容易拉起属于某个特定角色的对话 我能想到的最明显的方法是使用sed或perl或php在每个块周围放置div标记,用类表示字符、位置以及是舞台方向还是对话。然后,将其作为一个网页打开,并使用jQuery提取我感兴趣的内容。但这听起来像是一种迂回的方法,也许这只是一个好主意,因为这些工具我已经习惯了。但我相信这是一个反复出现的问题,以前已经解决过

我有一些纯文本的有点结构化的剧本,格式就像这篇文章结尾的例子。我想将每种格式解析为以下格式:

  • 这将是很容易拉起只是阶段的方向,处理一个特定的地方
  • 这将很容易拉起属于某个特定角色的对话
我能想到的最明显的方法是使用
sed
perl
php
在每个块周围放置div标记,用类表示字符、位置以及是舞台方向还是对话。然后,将其作为一个网页打开,并使用jQuery提取我感兴趣的内容。但这听起来像是一种迂回的方法,也许这只是一个好主意,因为这些工具我已经习惯了。但我相信这是一个反复出现的问题,以前已经解决过了,那么有人能推荐一个更高效的工作流程,可以在Linux机器上使用吗?谢谢

以下是一些示例输入:

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

                             BOB
                Mmmm. Stackoverflow. 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. Stackoverflow. 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为例,但这也是我理解的原因。对于这种类型的文本处理任务,如果像我怀疑的那样,滚动您自己的regexp,而jQuery不是最佳实践,那么我愿意接受任何被认为是最佳实践的方法。谢谢。

如果您的输入不是太吵,也就是说,如果您可以相信一些规则,例如对话框的缩进比注释的缩进大,我会使用一个简单的方法。您在所有语言中都有很好的实现,您会发现很多关于这方面的信息

如果你的输入变化很大,那么就采用机器学习的方法,但是你需要有大量的输入和经过人工验证的输出来进行培训,这可能会很麻烦

在任何情况下,我都不会使用正则表达式来解决这样的问题。

您可以使用正则表达式将它们导出到HTML(元数据为RDF/XML)(参见此和此)

其他编剧编辑也可能提供这一功能


此外,还有一种纯文本标记语言用于剧本创作。他们提供您可能(我没有检查他们是否提供用于导入和转换的内容)用于您的事业:

Fountain是免费的、开源的,它有一些库,可以方便地在应用程序中添加支持



即使这些项目不能用于您的事业,您至少可以将其格式用于您的输出。

您是否尝试在网站上实时执行此操作?您使用jQuery的唯一原因是,如果有人在文本框中输入剧本并获得即时舞台方向输出。@ChristianStewart:如果我理解正确,他建议使用jQuery的原因是,它是一个基于类或id信息提取(X)HTML节点内容的好工具。如果你有锤子,一切看起来都像钉子;)剧本是我下载的文本文件,不需要实时或在线@dodgethesteamroller是对的,这是一个锤钉反模式,我试图通过在这里询问更好的想法来避免它。这是一个非常有趣的问题。regexp和jQuery确实是迂回的,但我认为一般来说,您有一个好主意,可以将半结构化输入转换为带有不同标记的XML,以指示剧本的语义(方向、对话、注释等)。您可能已经研究过其他关于自然语言处理的SO问题,并且看到了这些库更倾向于将自然语言文本逐字分解为词类,而这并不是您真正需要的。我倾向于Python和
pyparsing