30包【楽天24】[ZIZICA サマンサタバサ サマンサタバサ 正規品 サマンサベガ ブラウン(58335)【003】 シンプルトートバッグ DINAH 小 ネイビー



30包【楽天24】[ZIZICA サマンサタバサ サマンサタバサ 正規品 サマンサベガ ブラウン(58335)【003】 シンプルトートバッグ DINAH 小 ネイビー

商品説明 Samantha Vega(サマンサベガ)のシンプルトートバッグ。フロントロゴがワンポイントになった、シンプルで合わせやすいデザインのバッグです。取り外しのできるショルダーストラップ付。 素材 合成皮革 サイズ H20 W32 D8 ブランド サマンサタバサ 取扱店 Paris Lounge パリスラウンジ

【ポイント10倍】マクマーレヴ TCマイナスイオン ネックレス黄 Mサイズ【×10セット】 送料無料!【10P03Sep16】 【エントリーでポイント最大35倍】ムッシュ サクラ咲く ミラクルシューズ(中敷き付) 2個セット(両足セット) SS90040 Sサイズ(22-24cm) PK・ピンク じんわり、じっくり、揉みほぐす ブラウン(58335)【003】 ZIZICA イルパッカー光 30包【楽天24】[ZIZICA パパイヤ]【SPDL_5】 「2点セット」一度に50カプセルに粉末をつめられます!交換用の穴板セット(別売)を使えば、他のサイズにも使えます!本体 2号用 【予約販売品】がま口ダッフルバッグ【帆布・無地】【代金引換ご利用不可】【2016年10月26日以降発送分】<かばん/帆布/ショルダーバッグ/ハンドバッグ/2way/キャンバス/高島帆布> 送料無料【中古】オールド コールハーン COLE HAAN 2WAYバッグ ハンドバッグ ショルダー ブラック フルレザー ヴィンテージ ★送料無料★LOUIS VUITTON◆ショルダーバッグ/BRW【中古】【バッグ】

ビッグブッダ BIG BUDDHA レディース バッグ・カバン ハンドバッグ ショルダーバッグ BIG BUDDHA Jasmine Shoulder Bag Leopard One Size Leopard Kanmi. フィナンシェトートバッグL【レディース】【 Kanmi. 】【カンミ】【日本製】【トートバッグ】【送料無料】[10P03Sep16] サマンサタバサ サマンサタバサ 正規品 サマンサベガ シンプルトートバッグ DINAH 小 ネイビー 【送料無料】-コクヨ(KOKUYO)デスク LEVIST フリーアドレス(SD-LVE1814LS85PAW)59044857-【代引き不可商品】【コクヨ家具】 NEC QX-S517T-PW 100Mx16p 1Gx1p レイヤ2スマートPoEスイッチ B02014-00502 【送料無料】-コクヨ(KOKUYO)ユニットパネル R付き全面パネル(PU-R615F2GDNQ3)-【代引き不可商品】【コクヨ家具】 540ベンチ型 カムシェルビングセット54×122×H183cm5段 メイチョー Viewcal ビューカル 1010mm×50M VC900C ホワイト 長期屋外用シート 良品工房 日本製牛革手作り3ウェイフォーマルバッグ B6111−02B【ポイント10倍】

ヴィヴィアンウエストウッド 財布 長財布 VIVIENNE WESTWOOD 2800V67V CHANCERY ROSE LOUIS VUITTON ルイヴィトン 財布 M61736 ポルトモネ・ビエトレゾール 長財布 モノグラム L字ファスナー財布 メンズ可 (良品・即納) 【中古】 X3767 101145591★マイケルコース(Michael Kors) 長財布 ラウンド ブラウン 茶 未使用 1◆ 【中古】 コーチ 財布 長財布 COACH F 52601 IMF1U サマンサタバサ サマンサタバサ 正規品 サマンサベガ シンプルトートバッグ DINAH 小 ネイビー スノーボード スノボ スポーツ Burton バートンCUSTOM X カスタムX10689103 2016 2017 FW メンズ スノーボード板 【受注生産品】【スポーツタイマー】トーエイライト スポーツタイマーH4 B-5981 オーダー 5mmセミドライ 2015-16 BEWET ETERNAL & NEO & RIDERS 5mmx3mm 冬用セミドライ ウエットスーツ 0824楽天カード分割 釣武者 OGREHAND(オウガハンド) ソルトウォーターロッド 釣り竿 ◆0824楽天カード分割 P11Sep16

2015-2016モデル スキー板 (単品) 【2016 K2】 COOMBACK 104  S140309001 【送料無料】 ギフト用洗剤セット/クリーンライフスタイルセット 48個入り イベント企画・幹事さん必見!プチギフト・粗品・景品・結婚式や子供会やゴルフコンペ、二次会ビンゴ、夏祭り、退職お礼などのまとめ買いでお得な特別価格 ノベルティグッズ(nt15) KVK シングルレバー式混合栓 【KM5000ZCHTTU】KM5000CHTU series 給水・給湯接続/シングルレバー混合栓【KM5000ZCHTTU】【RCP】 サンスター ガム デンタルフロス ワックス 40M×60個【送料無料】【オーラル】【歯磨き】【歯ブラシ】 吉野商会 浴槽手すり 吉野商会 バスグリップ白【送料込/送料無料】 【ポイント5倍】CxS ワックス ホルダー (5個入) サマンサタバサ サマンサタバサ 正規品 サマンサベガ シンプルトートバッグ DINAH 小 ネイビー MPV【年式02/04-06/02】【型式LW3W】【EG型式L3】ブリッツ サスパワーコアタイプLM エアクリーナー トムス TV & NAVIジャンパー レクサス IS-F USE20 H21.8〜 IS-F

ロッソモデロ マフラー COMPLETE アルファード DBA-ANH10W H19/4〜H20/4 2AZ-FE 【TAKE OFF/テイクオフ】エブリィ バン ターボ DA62V スーパー元気くん 本体のみ ブローオフ HKS スーパーSQV4キット/SUPER SQV4 KIT アルトワークス HA21S/HB21S エイチケーエス ブローオフ 【HEALTECH ELECTRONICS】【ヒールテックエレクトロニクス】【インジケーター】【カワサキ GIpro DS-K01ギアインジケーター ホワイト=限定色】【ZX-10R 2004-2007】 D000053-BK ディモーティブ Dimotiv ブレーキ・クラッチレバー セット スライド 可倒式 93年-99年 ドゥカティ 黒 OBERON CLU-1300-Y クラッッチスレーブシリンダー BMW K1200S/R/GT K1300S/R/GT ゴールド clu-1300-y ZETA ピボットパーチ CP 3フィンガー(チタンカラー/ブルー) 【USA在庫あり】 73-0707 2374141035 アチェルビス(ACERBIS) ラジエーターシュラウド 14年以降 YZ450F、YZ250F 白/黒 (上側)

NFL Super Bowl 50 THE REFLECTIVE ジャケット STARTER ROTHCO(ロスコ) N-2Bフライトジャケット ROGT7190 ブラック S【送料込/送料無料】 Obey オベイ メンズ Obey Legends Parka Jacket シャツ トップス T? 黒色 Asics Tiger アシックス タイガー メンズ Asics Tiger Men Gel-Epirus (white / blue) 白色 PLAY MOLE ボリュームネックハーフコート[ブラック/ベージュ/カーキ]725562/メンズ アウター カジュアル 中綿 ジャケット ステンカラー 中綿断熱素材 ビジネス 紳士 通勤 軽量 防寒 バイウォーム【RCP】【コンビニ受取対応商品】【10P03Sep16】 Clarks Cordella Chant Vince Camuto Lillith 2 【中古】美品◎本革 PRADA/プラダ ベルト付き オールレザーブーツ 黒 3510P03Sep16

新品★HUNTER【ハンター】ORIGINAL CHELSEA GLOSS BLK /HWFS1043RGL 【新品】 【靴】 【人気ブランド】 【レインブーツ】 【長靴】 【ブーツ】 【全国一律 送料無料】 (ナチュリーノ) Naturino Nat. Geremi (Toddler/Little Kid) Mens Navy (男児 幼稚園から中学生) ボーイズ キッズ 子供 靴 シューズ スニーカー

ぬいぐるみライフ(仮)

2011-02-12

映画「The Social Network」の脚本をNLTKで解析して遊んでみた


脚本の入手

PDFからプレーンテキストへの変換

  • ^Mを改行文字(\n)に置き換える (^Mは制御文字.ターミナルやVimだとCtrl-V Ctrl-Mで入力できる)
  • ^Lを取り除く (^Lも制御文字.Ctrl-V Ctrl-Lで入力できる)
  • シングルクォートなどの記号が変な制御文字に化けているのでPDFと照らし合わせながら置換する
  • ページ番号だけの行を取り除く
  • などなど

NLTKを使って遊ぶ

$ python
>>> import nltk
  • 文書の単語数の確認
  • 特定の単語の検索
  • 特定の単語が出現する文の検索
  • 単語の頻度分布の可視化
  • 場面ごとの登場人物の推移の可視化

データを読み込む

>>> raw = open('the_social_network.txt').read()
>>> tokens = nltk.word_tokenize(raw)
>>> text = nltk.Text(tokens)
>>> type(raw)
<type 'str'>
>>> raw
'FROM THE BLACK WE HEAR--\nMARK (V.O.)\nDid you know there are more pe
ople with\ngenius IQ\'s living in China than there\nare people of any
kind living in the\nUnited States?\nERICA (V.O.)\nThat can\'t possibly
be true.\nMARK (V.O.)\nIt is.\nERICA (V.O.)\nWhat would account for th
at?\nMARK (V.O.)\nWell, first, an awful lot of people live\nin China.
(略)
>>> type(tokens)
<type 'list'>
>>> tokens
['FROM', 'THE', 'BLACK', 'WE', 'HEAR--', 'MARK', '(', 'V.O.', ')', 'Di
d', 'you', 'know', 'there', 'are', 'more', 'people', 'with', 'genius',
'IQ', "'s", 'living', 'in', 'China', 'than', 'there', 'are', 'people',
'of', 'any', 'kind', 'living', 'in', 'the', 'United', 'States', '?', '
ERICA', '(', 'V.O.', ')', 'That', 'ca', "n't", 'possibly', 'be', 'true
(略)
>>> type(text)
<class 'nltk.text.Text'>
>>> text
<Text: FROM THE BLACK WE HEAR-- MARK ( V.O....>

文書の単語数を調べる

>>> len(tokens)
34821
>>> tokens_l = [w.lower() for w in tokens]
>>> len(set(tokens_l))
4275

Emacs vs Vim (or Vi)!!!

>>> tokens_l.count('emacs')
3
>>> tokens_l.count('vim')
0
>>> tokens_l.count('vi')
0

特定の単語が出現する文を検索する

>>> text.concordance('Facebook', lines=5)
Displaying 5 of 47 matches:
 on his desktop labeled " Kirkland Facebook " . He clicks and opens it. A menu
 's a Tuesday night ? The Kirkland Facebook is open on my desktop and some of 
hese people have pretty horrendous Facebook pics . ( MORE ) Billy Olson 's sit
does n't keep a public centralized Facebook so I 'm going to have to get all t
ry to download the entire Kirkland Facebook . Kids ' stuff . On the computer s
>>> text.concordance('bitch')
Displaying 2 of 2 matches:
 TheFacebook ? ERICA You called me a bitch on the internet , Mark . MARK That '
 published that Erica Albright was a bitch right before you made some ignorant 
>>> text.concordance('bitch.')
Displaying 1 of 1 matches:
. MARK ( V.O. ) Erica Albright 's a bitch. Do you think that 's because her fa
>>> text.concordance('CEO...Bitch')
Displaying 2 of 2 matches:
 a business card that says " I 'm CEO...Bitch " , that 's what I want for you ,
 cards out and looks at it . I 'm CEO...Bitch And over this we HEAR a woman 's 

単語の頻度分布を可視化する

>>> fdist = nltk.FreqDist(w.lower() for w in text)
>>> fdist.keys()[:50]
['.', 'the', 'to', ',', 'a', 'and', 'mark', 'you', 'i', "'s", '?', 'ed
uardo', 'of', ')', '(', 'it', 'that', 'in', 'is', 'we', "n't", 'he', '
on', 'sean', 'do', 'with', '-', ':', 'was', 'for', 'at', 'what', 'this
', '"', 'int.', 'cut', 'his', "'m", "'re", 'are', 'cameron', 'they', '
have', 'room', 'up', 'be', 'tyler', 'as', "'d", 'not']
>>> fdist.plot(50, cumulative=True)
>>> stopwords = nltk.corpus.stopwords.words('english')
>>> stopwords
['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', '
your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself
', 'she', 'her', 'hers', 'herself', 'it', 'its', 'itself', 'they', 'th
em', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom',
(略)
>>> symbols = ["'", '"', '`', '.', ',', '-', '!', '?', ':', ';', '(', ')']
>>> fdist = nltk.FreqDist(w.lower() for w in text if w.lower() not in stopwords + symbols)
>>> fdist.plot(50, cumulative=True)

場面ごとの登場人物の推移を可視化する

>>> persons = ['MARK', 'ERICA', 'EDUARDO', 'CAMERON', 'TYLER', 'SEAN']
>>> text.dispersion_plot(persons)
  • Mark Zuckerbergは映画の主人公だけあって登場シーンが多い.ボート部の兄弟がメインで登場するシーン以外ではMarkはほぼ確実に登場している.
  • Erica Albrightは最初の方と映画の半ばあたりのみ登場している.半ばのシーンについてはMarkが久し振りにEricaに話しかけたあのシーンのことだろうなーと類推できる.
  • Eduardo SaverinはMarkに次いで登場している場面が多い.
  • ボート部の兄弟のCameron WinklevossとTyler Winklevossは要所要所に台詞があるが,Mark以外の他の人物とはあまり一緒に登場していない.
  • Sean Parkerは映画の後半で登場するので,当然ながら脚本の台詞も後半から出てきている.

以上

  • 文書の単語数の確認
  • Emacs...
  • 特定の単語が出現する文の検索
  • 単語の頻度分布の可視化
  • 場面ごとの登場人物の推移の可視化

参考資料