Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
4章 構造化されたプログラムを書く
Search
Yuta
December 05, 2014
Education
0
300
4章 構造化されたプログラムを書く
Yuta
December 05, 2014
Tweet
Share
More Decks by Yuta
See All by Yuta
20160422 文献紹介
sudo
0
170
NLP2016 報告
sudo
0
190
NLP2016 発表スライド
sudo
0
220
20160218 文献紹介
sudo
0
260
20150909 発表資料
sudo
0
140
20150820 文献紹介
sudo
0
190
20150708 文献紹介
sudo
0
160
20150610 文献紹介
sudo
0
190
20150512 文献紹介
sudo
0
180
Other Decks in Education
See All in Education
20250611_なんでもCopilot1年続いたぞ~
ponponmikankan
0
170
社外コミュニティの歩き方
masakiokuda
2
190
2025年度春学期 統計学 第11回 分布の「型」を考える ー 確率分布モデルと正規分布 (2025. 6. 19)
akiraasano
PRO
0
170
Sponsor the Conference | VizChitra 2025
vizchitra
0
620
質のよいアウトプットをできるようになるために~「読む・聞く、まとめる、言葉にする」を読んで~
amarelo_n24
0
220
生成AI活用セミナー/GAI-workshop
gnutar
0
110
20250807_がんばらないコミュニティ運営
ponponmikankan
0
170
附属科学技術高等学校の概要|Science Tokyo(東京科学大学)
sciencetokyo
PRO
0
190
今までのやり方でやってみよう!?~今までのやり方でやってみよう!?~
kanamitsu
0
170
みんなのコード 2024年度活動報告書/ 2025年度活動計画書
codeforeveryone
0
290
JOAI2025講評 / joai2025-review
upura
0
430
データで見る赤ちゃんの成長
syuchimu
0
270
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
339
57k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Raft: Consensus for Rubyists
vanstee
140
7.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.9k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
It's Worth the Effort
3n
187
28k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
GraphQLの誤解/rethinking-graphql
sonatard
72
11k
A designer walks into a library…
pauljervisheath
207
24k
Transcript
入門 自然言語処理 4章 構造化されたプログラムを書く B3 須戸 悠太
4.1.1 代入 p.139 文字列の代入はコピーのあとに 新しい文字列で上書きしても影響を受けない リストの代入は「オブジェクト参照」のみ コピーされる
4.1.2 等価性 p.142 ” == “と” is “の二種類 ” ==
”はオブジェクトが同等かを判定 ” is ”はオブジェクトが内部的に 全く同一であるかを判定
4.1.3 条件分岐 p.142 if 文による条件分岐では空でない文字列や リストを真と評価 if 節が真の場合、elif 節の評価を行わない all(),any()はすべて、あるいはいずれかの
要素が条件に一致するか判定
4.2 シーケンス p.143 文字列、リストの他に「タプル」と呼ばれる シーケンスオブジェクトが存在する 任意の数のメンバを持つことができ、 添字を使ったアクセス、スライシング、 長さを調べることも可能
4.3.1 Pythonにおける コーティングスタイル p.148 インデントにはタブを使わず スペース4つを用いる 1行の長さは80字以下に 長くなってしまうようなら改行を
4.3.3 カウンタの正しい使い方 p.152 NLTKではbigrams(text)とtrigrams(text) 関数、 それらを一般化したngrams(text, n)がある 多次元構造の構築ではループ変数である i と
j が結果に利用されていないが 文法上必要である 乗算を利用する方法ではうまくいかない
4.4 関数 p.153 利点 →プログラム中のスペース節約 →関数に名前を付けることで読みやすくなる 関数の定義部分の最初の文字列 →ドキュメンテーション文字列
4.4.1 関数の入出力 p.154 関数へ情報を渡す際には仮引数を利用 ただし、必ず仮引数を取る必要はない 関数は引数の値を修正するか値を返すかの どちらかを行い、両方は行わない
4.4.2 引数を渡す p.155 オブジェクト参照(4.1)は 関数の引数として値を用いる場合も同様 Pythonは、関数へ渡された引数を値として 解釈する →値渡し
4.4.4 引数の型のチェック p.157 Pythonではプログラムを書く際に 変数の型の宣言は必要ない →様々な型の引数を柔軟に受け取れる 関数が正しく呼び出されなかった 場合に警告を出すことができる
4.4.6 機能を分割する p.159 関数の分割作業の終了後、各関数の目的を ドキュメンテーション文字列に記述(例4-1) 関数の呼び出し方と返る値を記述できる →doctestブロック
4.6.1 Pythonモジュールの構造 p.166 単なる .pyファイルにすぎない __file__変数を用いることで、すべての NLTKのモジュールについてコードの場所を 知る事ができる >>> nltk.metrics.distance.__file__
4.6.3 エラーの原因 p.168 入力データに予期しない文字が 含まれていた 関数が期待通りに動作しない 文法を正しく理解していない
4.6.4 デバッグの手法 p.170 バグの発生 →プログラマの仮定を確認する必要がある ランタイムエラーが起こる →インタプリンタがスタックトレースを表示 対話型のコマンドラインインターフェイス で同じ状況を再現してみる
デバッガによってブレークポイントにおける 変数の値を調べることができる デバッガへの指示を入力するための プロンプト(Pdb)の表示 >>> import pdb >>> import mymodule
>>> pdb.run(‘mymodule.myfunction()’)
4.6.5 防衛的プログラミング p.171 正しく動作することがわかっている小さな コードを積み上げて構築する コード修正の度に解決策を仮説し、 間違っていたら修正を元に戻す 開発、拡張、修正にあたり、一連の流れを 同時に維持管理していく →回帰テスト
4.7 アルゴリズムデザイン p.172 一般的に行われているアプローチ ・分割統治法(マージソート) ・二分探索
4.8 Pythonライブラリの例 p180 CSV CSV形式のファイルの読み書きができる すべて文字列として取得される Numpy 多次元配列オブジェクトであり、初期化と アクセスが容易
Matplotlib 数値データをグラフィカルに表示 NetworkX グラフと呼ばれる節点と辺から構成された 構造を定義し、操作する