You may have seen “I forced a bot to watch” posts where someone claims to have “forced a bot” to read or watch hours of video and written it’s own script. Those weren’t real but in recent history it has become possible to do it for real in a pretty convincing way with OpenAI’s GPT-2 system.
This is an unbroken, unedited sample of GPT-2 ‘fine-tuned’ on all the TNG and DS9 scripts. Note that television scripts have have distinct formatting and style and all of that is copied perfectly by the bot. It even *almost* gets understands page numbers (in the first example – 28, 28, 28A).
Go to this post for better examples. Right now they are all Olive Garden themed… but may do a later post with a straightforward attempt to create realistic episodes.
28 EXT. PLAZA/SURFACE - DAY (OPTICAL) Data and Worf as before. DATA (puzzled) You left him there? He left him there? WORF Yes. He had been there for hours... then decided that I was going to kill him. Data frowns, he can't figure out how to phrase what he did... DATA I do not understand. WORF You knew? DATA I was afraid. They exchange a look... Data thinking quickly, is back to the source... DATA (continuing) I could have programmed some medical bank monitors to monitor you for a pulse response when you could enter Klingon memory. WORF We would have -- STAR TREK: "The House... " - REV. 08/10/94 - ACT FOUR 45. 28 CONTINUED: DATA But I was afraid that it would disrupt my memory. PICARD I'll tell you what I have to do. They look at him and then Picard EXITS. Data sits in command. CUT TO: 28A INT. WORF'S QUARTERS The room is DARK and distant. Worf is struggling to regain his senses as Picard ENTERS. WORF Captain... everything I saw is gone... everything. Worf regards him for a moment... then he starts to fight it off... he stops in surprise... he doesn't know how all this is going to impact his relationship with him... he's uncertain what to do... he glances at the wall panel and frowns, surprised at the way he sees Worf... he glances around the room and tries to find a way to fight it off-kilter... it's pretty night... Worf hits the wall panel and it OFF. WORF I was... heading somewhere. PICARD Worf... what's the matter? Worf decides to break for a moment... he EXITS.
That was one the first scenes I generated that impressed me, though it cheats a bit with by being mysterious enough that it’s hard to rate how coherent it is. But you could almost see as one of the more moody and experimental character-focused episodes in Season 7 TNG. Earlier networks could copy the formatting of a TV script but they totally fell apart when you tried to actually understand the content. Even which characters were present in a scene did not stay consistent from line to line. GPT-2 handles this amazingly keeping track of not just characters but subject of conversation in a scene.
Here are some more samples chosen mostly for the humor:
DAX I think we're lucky this was just a bad batch of equipment. KIRA I'm glad you think that. DAX I'm glad we're lucky. KIRA Okay. I'm going to let you use the Bajoran storage bin to backup your data on this trip. And with that, Kira heads off down the Corridor. We HOLD on a thoughtful Dax. 19 INT. OPS Kira and Dax EXIT the turbolift, followed by Sisko, who goes to the Transporter Room in frustration. DEEP SPACE: "The Wire" - 03/01/94 - ACT ONE 12. 19 CONTINUED: KIRA It's not working. DAX I'm having trouble retuning the transceiver. The adaptors won't work. KIRA Maybe they should replace us by rentals. DAX With what? KIRA With your arms. DAX With your hands. KIRA Your arms. DAX You're lifting your arms. KIRA My arms. DAX (the hurtiest) Your arms. They're my hands. Kira takes a beat, looks down at her arms for a moment. KIRA They're your hands. (a beat) You know what I see when I get this... DAX (laughing and crying) Kira, you never told anyone about your arms. DEEP SPACE: "The Wire" - 03/01/94 - ACT ONE 13. 19 CONTINUED: (2) KIRA When you get to the wormhole, you should see them grow into shape- shifters. And you'd be right... because their arms are like that... closer than you can get. They grip off your arm. Bad dreams. DAX I thought you weren't going to talk about me. KIRA I told myself I was not. But when the time comes... I want to figure out what we're doing and what we are. I always figure it out. Dax looks at her own hands. Kira's too fast for her good measure. KIRA I'm holding all the cards. I'm playing them all. I'm a prisoner in here. I can't be happier. DAX You seem like you've got a lot. KIRA You have me all. Kira takes one last look at her hands. Kira can't help her enthusiasm. Her hand. Kira takes another step toward the desk. KIRA You're not going to hurt me. DAX You're not. And that's a good thing.
This is from a later batch where I stripped out some of the very repetitive content in the scripts before training — mostly headers and footers that repeat the exact same information every page. Another sample that was weirdly hands and arms themed:
42 INT. ENGINEERING Geordi and Data at their respective consoles. GEORDI We're ready when you are, Data. DATA I will prepare enough data for your desire, Commander. GEORDI Good. Data, what was the vessel in which the shuttle was launched? DATA The vessel was slightly more complex than the starship I estimate, sir. It chose a specific set of coordinates to target the specific nodes on the Enterprise-D. GEORDI And it didn't work. That's your fault, Data. DATA I fault is very fault, sir. I should have realized that. GEORDI If you had, the Enterprise-C could have taken out a few more nodes... DATA I do not believe we could have survived the attempt on the shuttle, sir. STAR TREK: "The Loss" - REV. 10/10/90 - ACT FOUR 51. 42 CONTINUED: GEORDI I know Data, it would have been difficult for you to break into hands and legs and grab a few nodes... I've never run into a shuttle in my life that didn't get that lucky. Geordi looks down at his hands and arms, frowning. GEORDI What are you so angry about? DATA My heart... and possibly my entire psychology. GEORDI That's not good. DATA I am angry that Starfleet has let you down, Commander. GEORDI I know... but I was relieved that no one tried to destroy my shuttle.
INT. DATA'S QUARTERS Data, still in his Starfleet uniform, is sitting at a desk working at the computer. The door CHIMES. DATA Enter. The door OPENS and Geordi ENTERS. GEORDI Data, what are you doing here? DATA (stands) This is my quarters. He looks at the desk for a beat, then EXITS. DATA (continuing) You are here to examine my computer. GEORDI Computer, is there anything I can do about your... computer? DATA Computer, are you aware of what I have just said? GEORDI (nods) In case you're wondering... I've told you something before... DATA I have never spoken to my computer before. GEORDI That can't possibly be the case... Data shakes his head. DATA I have been trying, but I have been unable. GEORDI Why? DATA I have been trying for over three, four nights. GEORDI It must be a pretty long night. DATA As long as it is not. GEORDI And what does it feel like? DATA I have been experiencing a sustained, transient, and unsteady increase in the emotional neurotransmitter-like activity in my cerebral cortex. The same as if I were completely offered a cup of tea, or a coffee, or an air horn. GEORDI That sounds like someone who has been through a lot. Data nods.
I experimented with mixing other TV show scripts, the complete set of Frasier in this case. GPT-2 learns very quickly never to mix characters and language from the shows — too well, I wish it would mix them! But I swear the samples trained with some Frasier feel more like a sitcom:
ANGLE ON MAIN VIEWER (OPTICAL)
ANGLE ON MAIN VIEWER (OPTICAL) Riker's face... RIKER Captain, I am detecting a Class-M planet with high radiation unaffected by the sun. PICARD Which planet did you detect? RIKER Class-M. (beat) I'm sure it looked like a Class- M planet... (beat) What is it? PICARD A small planet with low surface radiation. RIKER (laughs) Not class-M.
Here’s another one that feels more like a sitcom, in particular, the repeated dialog lines are something I see a lot in the post-Frasier samples.
======== SAMPLE 15 ======== KIRA (to Dax, explaining) Dax, we were just talking about you. I realize you're upset about me, but I've always looked good in a tuxedo. DAX I don't look good in a tuxedo. I've always looked good in a clutch, Benjamin. And I'm glad to say, I haven't seen you since I left the homeworld. KIRA (smiles) I know you're upset, but I've always looked good in a chiffo uniform. DAX And I'm glad to see you've never worn it anymore. KIRA I've never looked good in a chiffo uniform. DAX Well, I've seen you look good in it all... when you're wearing anyone else's tux. KIRA (smiles) I never look good in a chiffo uniform. DAX (smiles) I'm glad you said you were going to be happy at the Bajoran wedding. KIRA (smiles) I'm glad you said that. Dax smiles and they walk off. DAX (re: the wedding) I suppose I'll have to mention it to someone. KIRA I'm not planning to. DAX Who's next? KIRA My husband. (a beat) I guess he'll be staying with us this year. DAX He'll probably be staying with us this year. KIRA I know. I just got here last night. DAX I mean it's just a question of... who? KIRA (beat) I'm still not sure. I've got a surprise planned for the next few weeks. Besides, it sounds like somebody's going to need a place to keep me warm. DAX I'm sure they will. KIRA I'm sure they will. DAX Now what about you... are you sure you don't want to stay with me for a while? KIRA (re: the wedding) I have a job to do... I'm a pretty gal... DAX (reacts) I hear you're married... KIRA That's right. DAX And what about Jake? KIRA He's leaving Starfleet. DAX A few weeks ago he was sent back to the Institute. KIRA (reacts) He's gone? DAX He's been living on the station all his life... KIRA (beat) ======== SAMPLE 16 ========
This sample is as long as you can get right now the limit on the output is about 1000 words in the tiny version of GPT-2 that OpenAI let’s us play with. It would still be possible to create an entire script by taking the output from one sample and using it a ‘prompt’ to generate the next sample, over and over until you have a complete script. Since the scripts do clear structure like page and act numbers it should eventually get to ACT 5 or stick an ending on there. Maybe a project for the future.
Link to some complete Star Trek scripts (where I keep generating until it literally says THE END on a line).