本チュートリアルについて 14 部構成 比較的簡単なトピックから 各回 プログラミング言語 任意 チュートリアルで 新しい内容 宿題 プログラミング演習 次の週 結果について発表 もしくは話し合いをする スライドは Python で Python, C++, Java, Perl についての質問い答

Similar documents
言語モデルの基礎 2

NLP プログラミング勉強会 4 単語分割 自然言語処理プログラミング勉強会 4 - 単語分割 Graham Neubig 奈良先端科学技術大学院大学 (NAIST) 1

NLP プログラミング勉強会 5 HMM による品詞推定 自然言語処理プログラミング勉強会 5 隠れマルコフモデルによる品詞推定 Graham Neubig 奈良先端科学技術大学院大学 (NAIST) 1

スライド 1

基礎プログラミング2015

NLP プログラミング勉強会 6 かな漢字変換 自然言語処理プログラミング勉強会 6 - かな漢字変換 Graham Neubig 奈良先端科学技術大学院大学 (NAIST) 1

Prog1_12th

PowerPoint プレゼンテーション

Microsoft PowerPoint - 5Chap15.ppt

2006年10月5日(木)実施

デジタル表現論・第6回

Microsoft PowerPoint - 第3回目.ppt [互換モード]

プレポスト【解説】

ポインタ変数

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

実験 5 CGI プログラミング 1 目的 動的にWebページを作成する手法の一つであるCGIについてプログラミングを通じて基本的な仕組みを学ぶ 2 実験 実験 1 Webサーバの設定確認と起動 (1)/etc/httpd/conf にある httpd.conf ファイルの cgi-bin に関する

メソッドのまとめ

3.Cygwin で日本語を使いたい Cygwin で以下のコマンドを実行すると それ以降 メッセージが日本語になります export LANG=ja_JP.UTF-8 これは 文字コードを日本語の UTF-8 に設定することを意味しています UTF-8 は Cygwin で標準の文字コードで, 多

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog03.ppt

Cプログラミング1(再) 第2回

Prog1_10th

JavaScriptで プログラミング

ポインタ変数

Microsoft PowerPoint _2.プログラミングの基礎_final.pptx

Microsoft PowerPoint _2.プログラミングの基礎_final

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

クラウド内の Java - 動画スクリプト 皆さん こんにちは Steve Perry です 私たちが作成した人事アプリケーションを覚えていますか? 今回は そのアプリケーションをクラウド内で実行しましょう コードは GitHub の

ファイル入出力

自然言語は曖昧性だらけ! I saw a girl with a telescope 構文解析 ( パージング ) は構造的な曖昧性を解消 2

情報処理概論(第二日目)

Microsoft Word - CygwinでPython.docx

memo

Microsoft PowerPoint - ruby_instruction.ppt

PowerPoint Presentation

文字列 2 前回の授業ではコンピュータ内部での文字の取り扱い 文字型の変数 文字型変数への代入方法などを学習した 今回は 前回に引き続き 文字処理を学習する 内容は 標準入出力 ( キーボード ディスプレイ ) での文字処理 文字のファイル処理 文字を取り扱うライブラリ関数である 標準入出力 Lin

k_seminar_hands_on_for_linux_beginner.pptx


Python の基本事項の学習 このラーニングラボでは Python のシンタックス ( 構文 ) スコープ ( 有効範囲 ) 変数 演算子 単純な条件分岐の基本事項を学習します 目標 所要時間 :45 分 Python の基本的なインデントとスコープを理解しよう 変数の割り当て方法と使用方法を学習

Functional Programming

WiFiの現状

memo

ガイダンス

Prog1_6th

ポインタ変数

memo

目次 1. 動作環境チェック 動作必要環境 Java のインストール Java のインストール Firebird のインストール Firebird のインストール Adobe Reader のインストール

+ Octopress + GitHubPages でブログを作成 Name: さりんじゃー

EEM コンテキスト ライブラリのコマンド拡張

Microsoft Word - no15.docx

Si 知識情報処理

02: 変数と標準入出力

C#の基本

Microsoft Word - CompA-Ex doc

デジタル表現論・第4回

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

PowerPoint プレゼンテーション

Microsoft PowerPoint - スハ?コン利用入門_ _UNIX利用の基礎知識.pptx

再起動した状態になり パスワードを入力すると 図 2 のように DEXCS2011 のアイコ ンがデスクトップ上に表示される 2 端末を準備する メニューバーにある端末の形を左クリック 図 2 デスクトップ メニューバーに端末の形がない場合 図 3 メニューバー アプリケーション アクセサリー 端末

ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウ

1. はじめに 1. はじめに 1-1. KaPPA-Average とは KaPPA-Average は KaPPA-View( でマイクロアレイデータを解析する際に便利なデータ変換ソフトウェアです 一般のマイクロアレイでは 一つのプロー

ファイル入出力

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

講習No.12

Getting Start mdc (Mail Destination Confirm) Getting Start mdc (Mail Destination Confirm) Rev /11/3 目次 Getting Start mdc (Mail Destination Con

PowerPoint プレゼンテーション

Taro-cshプログラミングの応用.jt

情報処理概論(第二日目)

文章のトピック 文章には様々なトピックが存在する Cuomo to Push for Broader Ban on Assault Weapons 2012 Was Hottest Year in U.S. History 2

PowerPoint Presentation

メソッドのまとめ

XMLとXSLT

関数とは 関数とは 結果を得るために 処理を行う仕組み です Excel2010 には あらかじめ関数が数式として組み込まれています たとえば SUM 関数 は 指定した値をすべて合計する 仕組みです 長い計算式や複雑な計算式を作成せずに 簡単に結果を求めることができます 例合計 =A1+A2+A3

Microsoft PowerPoint - bp02.ppt

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog06.ppt

PowerPoint プレゼンテーション

slide5.pptx

C 言語の式と文 C 言語の文 ( 関数の呼び出し ) printf("hello, n"); 式 a a+4 a++ a = 7 関数名関数の引数セミコロン 3 < a "hello" printf("hello") 関数の引数は () で囲み, 中に式を書く. 文 ( 式文 ) は

Microsoft PowerPoint - kougi6.ppt

Section1_入力用テンプレートの作成

PowerPoint Presentation

これを調べるには pwd というコマンドを使います pwd とは print working directory の頭文 字をとったもので これから意味は明らかですよね 演習 1 (a) pwd を実行した結果を書け なお 立ち上げた直後の作業用ディレクトリのことをホー ムディレクトリ もしくは単に

Taro-ファイル処理(公開版).jtd

Microsoft PowerPoint - prog04.ppt

Helix Swarm2018.1アップグレード手順

PowerPoint プレゼンテーション

ポインタ変数

第 3 回情報基礎演習 UNIX / Linux: ファイルシステム シェルを理解しよう! 谷口貴志 Panda に login し 情報基礎演習クラスの VDI から Ubuntu に接続し Linux に login した後, 左 上の Activity 端末のアイオン をクリック 端末 を立ち

ex04_2012.ppt

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft PowerPoint - InfPro_I6.pptx

情報処理概論(第二日目)

Microsoft Word - tutorial3-dbreverse.docx

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

Microsoft Word - Training10_プリプロセッサ.docx

スライド 1

Microsoft PowerPoint - 計算機言語 第7回.ppt

Java Bridgeを利用した他言語によるデータロード&プロットデモ

Transcription:

自然言語処理プログラミング勉強会 0 プログラミング入門 Graham Neubig 奈良先端科学技術大学院大学 (NAIST) 1

本チュートリアルについて 14 部構成 比較的簡単なトピックから 各回 プログラミング言語 任意 チュートリアルで 新しい内容 宿題 プログラミング演習 次の週 結果について発表 もしくは話し合いをする スライドは Python で Python, C++, Java, Perl についての質問い答えられる 2 人で組んで作業をするのもおすすめ 2

環境設定 3

端末を開く Linux, Mac プログラムメニューから 端末 を選択 Windows cygwin を利用 もしくは Linux マシンに ssh で接続 4

ソフトのインストール 3 種類のソフト Linux: python: プログラミング言語のインタープリター テキスト編集ソフト (gvim, emacs など ) git: バージョン管理ソフト sudo apt-get install git vim-gnome python Windows: cygwin の setup.exe を実行 プログラム で git gvim python を選択 5

チュートリアルのファイルを github からダウンロード git clone を使ってチュートリアルのファイルをダ ウンロード $ git clone https://github.com/neubig/nlptutorial.git このファイルは nlptutorial ディレクトリにあるはず $ cd nlptutorial $ ls download/00-intro/nlp-programming-en-00-intro.pdf 6

gvim の使い方 どのテキストエディタでも良いが vim を使う場合 初めてなら vim の設定を記述する vimrc をコピーす ると使いやすくなるかも $ cp misc/vimrc ~/.vimrc vim で test.txt というファイルを作る $ gvim test.txt i を押すと入力開始 test を書く エスケープを押して :wq でファイルを保存して 終了 :w は保存 :q は終了 7

git の使い方 git を使って書いたコードの履歴管理することが可能 まず 追加したファイルを add $ git add test.txt commit で変更を保存 $ git commit ( テストファイルを追加 などのメッセージを入力 ) 他の機能は最後の commit への巻き戻し (git reset) サーバーに置いてあるコードの変更の反映 (git pull) サーバーへのコードのアップロード (git push) 8

プログラミングの基礎 9

Hello World! 1)my-program.py をエディタで開く (gvim, emacs, gedit) $ gvim my-program.py 2) 下記のプログラムを入力 3) プログラムを実行可能に $ chmod 755 my-program.py 4) プログラムを実行 $./my-program.py Hello World! 10

データタイプ 文字列 : hello, goodbye 整数 : -1, 0, 1, 3 浮動小数点 : -4.2, 0.0, 3.14 $./my-program.py string: hello float: 2.500000 int: 4 11

if/else, for 条件が満たされれば これをする そうでなければ これをする 各要素に対して これをする $./my-program.py my_variable is not 4 i == 1 i == 2 i == 3 i == 4 注意 12 range(1, 5) == (1, 2, 3, 4)

複数のデータ点の格納 キー 0 1 2 3 4 5 6 密行列 値 20 94 10 2 0 19 3 疎行列 キー 49 81 96 104 値 20 94 10 2 or キー apple banana cherry date 値 20 94 10 2 13

配列 (Python で リスト ) 密なデータの格納に適している キーは整数で 0 から始まる 5 要素のリストを作成 リストの最後尾に要素を追加 リストの長さを表示 4 番目の要素を表示 リストの各要素を表示 14

マップ (Python で 辞書 ) 疎行列に適している 引数は何でも OK キー ( alan ) と値 ( 22 ) からなる辞書を作成 新しい要素を追加 サイズを表示 1 つの要素を表示 キーが辞書内に 存在するかどうか キー 値の各組を 表示 キー順で 15

defaultdict デフォルトの値を定義する辞書の拡張 ライブラリ読み込み デフォルトを 0 に設定 存在するキーをプリント 存在しないキーをプリント 16

文字列の分割 連結 NLP で文を単語に分割することはしばしばある 文を空白区切りで単語の 配列に分割 配列を を区切りと して文字列に連結 $./my-program.py... this is a pen 17

文字列の分割 連結 NLP で文を単語に分割することはしばしばある 文を空白区切りで単語の 配列に分割 配列を を区切りと して文字列に連結 $./my-program.py... this is a pen 18

関数 関数は入力を受け取り 入力を変換し 戻り値を返す add_and_abs の入力は x と y x と y を足し 絶対値を返す add_and_abs を x=-4 と y=1 として呼ぶ 19

コマンドライン引数 最初の引数 ファイルを読み込み r で開く 1 行ずつファイルを読み込む 行末記号 \n を削除 行が空でなければ表示 $./my-program.py test.txt 20

コードのテスト 21

入力 出力の簡単なテスト 例 プログラム word-count.py はファイルの中の単語を数える 1) 小さな入力ファイルを作成 2) 人手で単語を数え 出力の正解ファイルを作成 test-word-count-in.txt test-word-count-out.txt abc bcd a1 b2 c2 d1 3) プログラムを実行 $./word-count.py test-word-count-in.txt > word-count-out.txt 4) 結果を比較 $ diff test-word-count-out.txt word-count-out.txt 22

演習問題 ファイルの中の単語の頻度を数えるプログラムを作成 this is a pen this pen is my pen a1 is 2 my 1 pen 3 this 2 テスト入力 =test/00-input.txt, 正解 =test/00-answer.txt 実行 data/wiki-en-train.word に対して 報告 単語の異なり数 数単語の頻度 23

単体テスト 各関数をテストするコードを書く 様々なテストを行い 不正解の場合はエラーを表示 全てのテストが通った場合のみ 1 を返す 24

コードのテストは必要不可欠 テストを作ることで コードを書く前に解きたい問題の意識をはっきりに デバッグに使う時間が激減 時間を置いてコードを読み返す時に分かりやすい 25

演習問題 26

演習問題 ファイルの中の単語の頻度を数えるプログラムを作成 this is a pen this pen is my pen a1 is 2 my 1 pen 3 this 2 テスト入力 =test/00-input.txt, 正解 =test/00-answer.txt 実行 data/wiki-en-train.word に対して 報告 単語の異なり数 数単語の頻度 27

擬似コード create a map counts 単語と頻度を格納するために open a file for each line in the file split line into words for w in words if w exists in counts, add 1 to counts[w] else set counts[w] = 1 print key, value of counts 28