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
プレゼンテーション実践
takenawa
0
6.6k
子どものためのプログラミング道場『CoderDojo』〜法人提携例〜 / Partnership with CoderDojo Japan
coderdojojapan
4
16k
2025.05.10 技術書とVoicyとわたし #RPALT
kaitou
1
230
生成AIとの上手な付き合い方【公開版】/ How to Get Along Well with Generative AI (Public Version)
handlename
0
490
Dashboards - Lecture 11 - Information Visualisation (4019538FNR)
signer
PRO
1
2.1k
ThingLink
matleenalaakso
28
4.1k
新卒研修に仕掛ける 学びのサイクル / Implementing Learning Cycles in New Graduate Training
takashi_toyosaki
1
160
AIC 103 - Applications of Property Valuation: Essential Slides
rmccaic
0
230
Pydantic(AI)とJSONの詳細解説
mickey_kubo
0
120
미국 교환학생 가서 무료 홈스테이 살면서 인턴 취업하기
maryang
0
110
SkimaTalk Tutorial for Students
skimatalk
0
1.8k
技術文章を書くための執筆技術と実践法(パラグラフライティング)
hisashiishihara
18
6.5k
Featured
See All Featured
Speed Design
sergeychernyshev
32
1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
KATA
mclloyd
30
14k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Done Done
chrislema
184
16k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
690
A designer walks into a library…
pauljervisheath
207
24k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Building Applications with DynamoDB
mza
95
6.5k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
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 グラフと呼ばれる節点と辺から構成された 構造を定義し、操作する