ScreenJSON是用于剧本的数据模型和对象符号/交换语法。 本质上,它是“计算机的剧本” 。
- 文字处理器可帮助人们编写脚本。
- PDF帮助人们发布和阅读脚本。
- ScreenJSON帮助计算机系统理解和分析脚本。
不耐烦的例子如下:
https://github.com/azcoppen/screen-json/tree/master/json
- JFI与居住在Meika Rouda的电影制片人进行对话
- iPhone电影制作:Soderbergh做到了,你也应该这样做
- SubJSON —可搜索电影的多语言字幕
- 认识2018年基本SF获奖者
- 我是导演,我要求男主角抓住我的胸部。
为什么需要数据驱动的方法
在1930年代,剧本是由了解华纳印刷格式的合格内部人员用打字机编写的。 在台式机和网络时代,拥有Final Draft Pro副本的任何人都可以制作脚本。 市场泛滥,质量急剧下降。 每个人都在寻找最好的新事物,但是不知所措,需要覆盖和分类。
正如Netflix的成功所表明的那样,在数字时代,电影是一项数据业务。
正如Adobe Story的Pace分析(https://helpx.adobe.com/story/help/pace-beta.html)所示,语言分析对作者可能非常有帮助。
方案A:脚本过多,时间不够
您是一家大型工作室的开发主管。 您每周在帖子中,通过电子邮件和在线(例如黑名单)收到200份脚本提交。 您有10个阅读器,每个阅读器每周处理20个脚本,或者每天处理4个脚本,费用为50美元/脚本。 每个读者可以在早上进行一次报道,在下午进行一次报道。 仅使它们工作,每月就要花费40,000美元,但最后您的办公桌上仍有200条评论。
大多数人都可以PASS
。 其中15%是CONSIDER
。 但是1-2得到RECOMMEND
。 您无法全部产生它们-您需要确定优先级。 您如何才能使全部200台磨机运行起来,以更快地达到RECOMMEND件?
您将永远需要人为因素。 但在此之前,有一些基础知识。
方案B:20个部门进行20个不同的细分
并非每个人都需要了解一切:主要是有钱人,制片人,导演和DoP。 演员只是需要双方的试镜。 装甲兵只需要知道装备枪支的时间即可。 Propmaster和位置管理器需要列表。 背景演员需要他们所在的场景。
因此,每个部门都按各自的脚本分类进行工作。 这只是精神错乱。 手动记录下来需要花费数天,这毫无意义。 导演标记他的拍摄脚本,DoP标记每个场景的镜头列表,依此类推。
方案C:无法看到森林
有时,作者可能需要10年以上的时间才能制作出第一稿,而即使经过400个修订/版本和两倍的加倍标记,脚本也永远不会完成 。 处理120页的文档可能会很费力,而且很容易失去视野。
该软件可以帮助提供即时的“直升机视图”,以进行编辑和调度,此外还可以洞察情节线,薄弱点以及人为的双眼会错过的机会。
方案D:需要标记屏幕和交互技术
底片不再是35mm负片。 数字技术每年都在改变一切。 我们现在需要描述的内容包括:
- 3D透视图(例如背景/前景焦点等)
- 360 VR透视图(例如,Oculus)
- VFX印版和CGI字符
- 多角度视频流(来自DVD)
- 感官知觉扩展(例如运动座椅)
- 通过主题/屏幕元素进行视频点播“兔子洞”导航
- 动态产品放置(例如此场景中的购买商品)
方案E:确定趋势,模式和过去的成功
计算机可以非常快速地处理大量文本数据:我们不再需要人工花2个小时来编写脚本。 我们可以在工厂中放置500个脚本,回答过去的业务问题,并估计未来的策略/性能。
- 我们会产生太多废话吗?
- 血腥程度会变得越来越差,并使听众脱敏吗?
- 我们制作的最成功脚本的常见元素是什么?
- 定型字符的百分比是多少?
- 字符在标题中出现的频率如何,连续性是否完整?
- 我们没有涵盖哪些主题?
- 哪些作家的观众反应最强?
您可以做什么分析?
质量保证
- 拼写检查/评分
- 语法检查/评分
- 抄袭检查
- 格式检查
- 性别平衡/偏见(贝希德尔)
- 写作不佳(陈词滥调,头韵等)
- 亵渎发生
- 注释评分
可视化
- 场景卡
- 弧形结构(关键图/页面标记)
- 关系图
统计分析(故障)和命名实体识别(NER)
- 场景(+频率/发生率)
- 字符(+频率/出现率)
- 位置(+频率/发生率)
- 道具(+频率/出现次数)
- S / VFX(+频率/出现率)
- 故事板和资产关联
- 作者投稿频率
- 版本比较(差异)
再加工
- 跨应用程序导入/导出
- 动态编译(每个用户)
- 组/角色访问管理
- 段落编辑
- 文档/场景加密
高级:自然语言处理
- 故事/场景的节奏,活力和兴奋
- 独创性
- 对话技巧
- 描述性
- 作者风格分析
- 高效生产的最短途径
- 形态分割
- 自动翻译
- 替代结果方案
目的
ScreenJSON可以解决特定于计算机的问题,并提供当前创作平台不具备的功能。 演示文稿中嵌入的数据从标记抽象为对象 , 属性 , 属性和变量类型 。
- 文字处理器可帮助人们编写脚本。
- PDF帮助人们发布和阅读脚本。
- ScreenJSON帮助计算机系统理解和分析脚本。
虽然正常过程可能如下所示:
Human author --> Authoring Program --> PDF file --> Hard Copy --> Human
可以以任何方式使用ScreenJSON文档,例如
Authoring Program -->
--> JSON File (disk, HTTP)
--> PDF hard copy
--> NoSQL Database
--> Production ERP/MRP
--> Programming lang
--> Translation assets
--> Archive (+ stats)
--> Secured iPad app
--> Breakdown docs (Excel/CSV)
--> Web platform(s)
--> NLP Analysis/Predictive Bot
该格式与数据的表示无关,将其留给主机应用程序。 实施应用程序可以自由操作,显示和特定于UI。
定义标准的目的是提供:
- 用于剧本的通用且数据库友好的数据模型和对象模型;
- 平台和程序之间的通用数据交换格式;
- 支持多语言创作;
- 生产前活动的方法标签(例如,细目分类);
- 支持加密和元素级访问控制策略;
- 支持Git风格的版本控制和许可数据;
- 易于访问的结构化批处理语言分析;
- 支持生产/发行技术(例如3D等)。
类结构
剧本文档倾向于集中于内容的视觉呈现以进行打印,并且通常使用样式段落在创作程序中表示。 例如,“最终草稿”使用 XML元素,而“打开屏幕播放格式”使用
标签。
当查看相同内容的数据表示时,该模式是简化的文档模型,符合可预测的继承模式。
├── Document
│ ├── Bookmark
│ ├── Scene
│ ├── Element
│ ├── General
│ ├── Action
│ ├── Character
│ ├── Parenthetical
│ ├── Dialogue
│ ├── Transition
│ ├── Shot
Document
对象由header
, footer
, cover
和其他元数据属性组成,但还包含批注 , 书签和scenes
数组。
场景对象具有诸如其标题和上下文之类的属性,但还包含一系列Elements
,例如动作描述,对话(单个或双重,音频源等)或过渡(剪切至)。
资料格式
- 每个对象都有一个符合RFC4122 UUID规范(https://www.ietf.org/rfc/rfc4122.txt)的标识符。
- 日期以ISO 8601结构(https://en.wikipedia.org/wiki/ISO_8601)中的时区偏移量表示。
- 文档许可可以是标准SPDX列表(https://spdx.org/licenses/)中的任何项目。
示例文档对象
容器Document
对象描述了Document
的内容,但是使演示文稿可以由中间程序解释。
{
“ id”:“ 37bd3b1b-160a-4a65-bbf2-7c92d400fbc1”,
“ uuid”:“ rfc4122”,
“ title”:“肖申克的赎回”,
“ lang”:“ EN”,
“ locale”:“ en-US”,
“ charset”:“ utf8”,
“ dir”:“ ltr”,
“修订”:[
{
“索引”:0,
“ version”:“草稿”,
“ date”:“ 2004-02-12T15:19:21 + 00:00”
},
{
“索引”:1,
“ version”:“ blue”,
“ date”:“ 2004-06-25T15:19:21 + 00:00”
},
{
“索引”:2
“ version”:“粉红色”,
“ date”:“ 2005-01-10T15:19:21 + 00:00”
}
],
“作者”:[
{
“ id”:“ 01979fca-6ac3-479e-9f33-d89498836eb1”,
“ first”:“ Frank”,
“ last”:“ Darabont”
}
],
“颜色”:[
{
“ title”:“ blue”,
“ rgb”:[0,0,255],
“ hex”:“#0000FF”
},
{
“ title”:“ pink”,
“ rgb”:[255,192,203],
“ hex”:“#FFC0CB”
},
{
“ title”:“紫色”,
“ rgb”:[128,0,128],
“ hex”:“#800080”
}
],
“贡献者”:[
{
“ id”:“ 8e0cd67f-f9da-46b8-98b9-16169893b439”,
“ first”:“ John”,
“ last”:“ Doe”,
“角色”:[“医生”,“编辑”]
}
],
“执照” : {
“标识符”:“ CC-BY-NC-ND-4.0”,
“ ref”:“ https://spdx.org/licenses/”
},
“注册”:[
{
“ authority”:“ WGA”,
“ identifier”:“ 4847494058”,
“ created”:“ 2004-02-12T15:19:21 + 00:00”,
“修改”:“ 2004-02-12T15:19:21 + 00:00”
}
],
“派生”:{
“ id”:“ 3608b093-1280-4834-9ea4-d9d2b8d711a6”,
“ type”:“ novella”,
“ title”:“ Rita Hayworth和Shawshank的救赎”,
“元”:{
“ isbn”:“ 978-0896214408”,
“评论”:“基于斯蒂芬·金的故事丽塔·海沃斯和肖申克的救赎”
}
},
“加密”:{
“ cipher”:“ aes-256-ctr”,
“ encoding”:“十六进制”
},
“可标记”:[
“演员”,“演员”,“特技”,“车辆”,“道具”,“ SFX”,“服装”,“化妆”,“动物”,“动物处理者”,“音乐”,“声音”, “装扮”,“绿化”,“特殊设备”,“安全”,“附加劳动”,“ VFX”,“ MFX”,“杂项”
],
“文件”:{
“书签” : [
{
“场景”:4
“ type”:“动作”,
“元素”:2
“标题”:{
“ en”:“开始”
},
“说明”:{
“ en”:“”
}
}
],
“封面”:{
“ lang”:“ EN”,
“ title”:“ SHAWSHANK赎回”,
“ author”:“ Frank Darabont”,
“ original”:“基于故事,Stephen King的Rita Hayworth和Shawshank的救赎”
},
“标题”:{
“ lang”:“ EN”,
“ cover”:是的,
“ display”:是的,
“开始”:1,
“省略”:[],
“ content”:“ Frank Darabont的《肖申克》的赎回”
},
“页脚”:{
“ lang”:“ EN”,
“ cover”:是的,
“ display”:是的,
“开始”:1,
“省略”:[],
“ content”:“(c)__DATE__版权所有Castle Rock Entertainment。__PAGE__”
},
“元”:{
“ created”:“ 2004-02-12T15:19:21 + 00:00”,
“修改”:“ 2004-02-12T15:19:21 + 00:00”
},
“样式”:[
{
“ id”:“默认”,
“ content”:“ font-family:courier; font-size:12px;”
}
],
“模板”:[
“默认”
],
“场景”:[
]
}
}
除了提供容器之外, Document
对象的目的是定义以下信息:
- 身份证明
- 本土化
- 起源/派生
- 著作权
- 发牌
- 版本控制
- 造型
- 元数据
- 书签
- 覆盖
- 标头
- 页脚
示例场景对象
定义了父Document
对象的描述性元素后,脚本的实际内容将包含在可重新排序的Scene
对象的数组中,这些对象主要由其数组索引编号(必要时被numbering属性覆盖)。
Scene
对象的目的是定义以下信息:
- 设置和上下文
- 定购
- 元数据
- 生产前需求数据
场景容器
{
“标题”:{
“编号”:1
“ context”:“ INT”,
“ setting”:“ CABIN”,
“ sequence”:“ NIGHT”,
“ description”:“出现在Card View中的注释在这里。”,
“元”:{
“ example”:“此处的自定义属性数据”
}
},
“身体”: [
],
“ cast”:[“ MAN”,“ WOMAN”],
“ locations”:[“ CABIN”,“ ROOM”],
“ props”:[“ DOOR”,“ LAMP”,“ WINDOW”,“ BED”],
“ wardrobe”:[“ BLOUSE”,“ FABRIC”],
“标签”:[“ CABIN”,“ SEX”,“ INTRO”,“ ACT-I”],
“心情”:[“暗”,“空”,“醉”,“ HOR”,“急躁”,“发闷”,“粗暴”]
}
Scene
对象由Heading
和Body
属性组成,例如提示卡(或Bootstrap面板)。 每个都需要一个上下文 (INT / EXT / POV等),一个设置 (即位置)和一个序列 (DAY / NIGHT / CONTINUOUS)。 description属性允许主机应用程序显示协作者注释的“卡片”视图。
对场景的定义至关重要的是生产故障的属性: 心情 , 关键字 , 演员和其他对多个部门有用的预生产标签 ,例如wardobe和props。 突出显示和/或注释的大写元素可以手动或自动列出以方便检索。
场景内容
Scene的Body
属性是Element
对象的数组 ,根据其type属性(动作,对话等)不同。 每个元素都可以服从主机应用程序设置的自定义访问控制策略。
{
“ type”:“动作”,
“ perspective”:“ 2D”,
“交互性”:false,
“ lang”:“ EN”,
“ charset”:“ utf8”,
“ dir”:“ ltr”,
“略过”:false,
“锁定”:错误,
“已加密”:false,
“ element”:“ p”,
“ class”:“ col-md-12”,
“访问”:[“ ABL”,“广播”,“电影摄影”,“位置”,“衣柜”,“ vfx”,“ sfx”],
“修订”:{
“版本”:1.0,
“修改”:“ 2004-02-12T15:19:21 + 00:00”
},
“样式”:[
“默认”
],
“内容”:{
“ en”:“一个黑暗的空房间。”
},
“元”:{
“注释”:[
{
“突出显示”:{
“开始”:3,
“结尾”:6
},
“贡献者”:“ 8e0cd67f-f9da-46b8-98b9-16169893b439”,
“ content”:“一定要是黑暗的吗?”
}
]
}
}
任何元素都可以调用多个样式集,并适应语言等效项,以及修订和注释 (由字符串中的开始和结束字符索引定义)。
访问策略是主机应用程序已知的策略标识符的列表,它负责管理和实现它们。
Element
对象的type
为:
- 行动
- 字符
- 对话
- 一般
- 圆括号
- 射击
- 过渡
注意:对偶对话是对dual: true
属性dual: true
对Dialogue
元素为dual: true
,并且音频方向数据(例如VO,OS)也实现为类属性。
注意: interactivity
属性保留用于将来的版本。
Element
对象的目的是定义以下信息:
- 技术实施数据(CGI,3D等)
- 访问和UI显示策略
- 多语言内容对等
- 修订跟踪和注释
脚本内容加密
加密可以应用于任何JSON值-特定元素 , 场景或整个文档 。 每个用户可以具有自己的特定私钥或密码。 GUI显示应自动检测到一个加密的段落元素,并尝试使用已为该用户存储的密码对其进行解码。
这种方法的优点在于,不需要使用后端服务器进行任何数据或握手。 对元素进行加密的作者可以在其客户端程序中设置密码,然后将其亲自提供给协作者,而无需通过有线发送。 作者可以选择隐藏任意数量的文本元素,以为不同的读者提供不同的选择视图。
使用Node的示例客户端AES加密
在此示例中,我们位于像Electron或Ionic这样的Node客户端中。 阅读器GUI可以通过提供指定的密码来加密或解密文本。
我们想对所有人以外的人隐藏对话线,除了“上线”,导演,国防部和将要说的演员之外。 每个人都可以获取该脚本的副本,但是未包含在访问策略中或没有特定密码的用户将看到一个已redacted
块。
var crypto = require('crypto'),algorithm ='aes-256-ctr',password ='password_for_specific_individual';
函数crypto(text){
var cipher = crypto.createCipher(算法,密码)
var crypted = cipher.update(text,'utf8','hex')
加密+ = cipher.final('hex');
返回加密的;
}
函数解密(文本){
var decipher = crypto.createDecipher(算法,密码)
var dec = decipher.update(text,'hex','utf8')
dec + = decipher.final('utf8');
返回dec;
}
var对话_元素=加密(“我要给他一个他不能拒绝的提议。”)
console.log(decrypt(dialogue_element));
加密输出(使用Base64而不是Hex时):
U2FsdGVkX19voPV6ClqPfhSFJFMEALJeZSmAVl/dukvbxtfFOondqaZLVdRg0/HxBV8g8B9iZYzYY2Aa/cH7Kw==
对话数据元素将表示为:
{
“ lang”:“ EN”,
“略过”:false,
“锁定”:是,
“访问”:[“ ABL”,“导演”,“电影摄影”,“演员-可可酮”],
“ type”:“对话”,
“修订”:{
“版本”:1,
“修改”:“ 2017-03-04T00:34:32 + 00:00”
},
“ element”:“ p”,
“ class”:“ col-md-12”,
“ content”:“ U2FsdGVkX19voPV6ClqPfhSFJFMEALJeZSmAVl / dukvbxtfFOondqaZLVdRg0 / HxBV8g8B9iZYzYY2Aa / cH7Kw ==”,
“注释”:[
{
“ author”:“ John Doe”,
“ data”:“我看不懂。有人可以给我发送密码吗?”
}
],
“元”:{
“ cipher”:“ aes-256-ctr”,
“ auth”:“导演”
}
}
查询ScreenJSON剧本文档
一旦存储在后端NoSQL数据库(如MongoDB,CouchDB,Neo4j甚至HTML5 localStorage)中,我们突然就有了一种搜索电影的方法。
自然语言处理(NLP)
定义:
自然语言处理(NLP)是计算机科学,人工智能和计算语言学的一个领域,涉及计算机与人类(自然)语言之间的交互,尤其涉及对计算机进行编程以有效处理大型自然语言语料库。 自然语言处理中的挑战经常涉及自然语言理解,自然语言生成(通常来自形式化的机器可读逻辑形式),连接语言和机器感知,管理人机对话系统或它们的某种组合。
句法
- https://zh.wikipedia.org/wiki/合法化
- https://zh.wikipedia.org/wiki/形态学(语言学)
- https://zh.wikipedia.org/wiki/语音提示标记
- https://zh.wikipedia.org/wiki/解析
- https://en.wikipedia.org/wiki/Sentence_boundary_disambiguation
- https://zh.wikipedia.org/wiki/斯坦明
- https://zh.wikipedia.org/wiki/Text_segmentation#Word_segmentation
语义学
- https://zh.wikipedia.org/wiki/Lexical_semantics
- https://zh.wikipedia.org/wiki/机器翻译
- https://zh.wikipedia.org/wiki/命名实体识别
- https://zh.wikipedia.org/wiki/自然语言生成
- https://en.wikipedia.org/wiki/Natural_language_understanding
- https://en.wikipedia.org/wiki/Optical_character_recognition
- https://zh.wikipedia.org/wiki/Question_answering
- https://en.wikipedia.org/wiki/Textual_entailment
- https://zh.wikipedia.org/wiki/Relationship_extraction
- https://zh.wikipedia.org/wiki/情感分析
- https://en.wikipedia.org/wiki/Topic_segmentation
- https://zh.wikipedia.org/wiki/Word_sense_disambiguation
话语
- https://zh.wikipedia.org/wiki/自动摘要
- https://zh.wikipedia.org/wiki/共同引用
- https://zh.wikipedia.org/wiki/Discourse_analysis
剧本处理研究论文
- “使用基于NLP的功能通过MEMM按类型对电影脚本进行分类” (Alex Blackstock,Matt Spitz)
- “ SceneMaker:剧本的自动可视化” (Eva Hanser,Paul Mc Kevitt,Tom Lunney,Joan Condell)
- “电影对话中的说话者识别” (A. Kundu,D。D.和S. Bandyopadhyay)
- “从剧本中预测票房:一种经验模型” (史达琳·大卫·亨特,苏珊·史密斯,萨巴·辛格)
- “利用电影脚本的结构和约定进行信息检索和文本挖掘” (贾拉,美国)
- “电影对话中的场景边界检测:一种遗传算法方法” (Amitava Kundu,Dipankar Das,Sivaji Bandyopadhyay)
- “使用自然语言处理技术和机器学习对电影的票房成功进行早期预测” (Sean O’Driscoll)
- “从故事情节到票房:绿灯电影剧本的新方法” (Eliashberg,Hui和Zhang)
- “用于学习和表征角色风格的带注释的电影对话语料库” (马萨诸塞州沃尔克,林)
- “电影对话中的性别区分特征” (Alexandra Schofield,Leo Mehr,CLFL 2016)
- “使用电影脚本评估票房性能:一种基于内核的方法” (Jehoshua Eliashberg,Sam K. Hui,Z。John Zhang)
- “使用动态人工神经网络对电影收入进行生产前预测” (M. Ghiassi,David Lio,Brian Moon)
- “解析电影剧本以从电影中提取社交网络” (Agarwal,A.,Balasubramanian,S.,Zheng,J。和Dash,S)
Github上提供了Attribution-ShareAlike(CC BY-SA)创用CC许可下的ScreenJSON,任何人均可自由使用。
https://github.com/azcoppen/screen-json