FrontPage / Learning Programming

概要

  • Unix環境でのプログラミング方法,研究室の実験環境を学ぶ
  • 自然言語処理で頻繁に使われる処理を題材としてプログラミング演習を行うことで,スムースに研究に取り組める力を養います

内容

  1. Unix環境でのプログラミング方法
  2. 研究室の実験環境
  3. Pythonプログラミングのチュートリアル
    • Pythonの基本的な使い方.ipythonの使い方,pipの使い方など
    • 分からないことはどう調べれば良いのか
  4. 言語処理100本ノック 2015
    • 自然言語処理に関するプログラムを実際に作ってもらい,互いにコードレビューを行います。
    • 問題に対する答えは一つではありません。どんな方法でも,無理矢理でも解いてみてください。

2017年度

日時
金曜日 14:40-16:10
参加者
阿部,伊藤,栗林,田上,吉成,王
書いたコード
https://github.com/cl-tohoku/100knock-2017

scalaで書いてみた 000-059(松林) ソースコードの場所はこのページの編集コメントに書いてあります。

記録のとり方

  • やったことだけ書く
  • 以前の記録と同じことを書いても良い
    • 何度も書かれているということは,それだけ重要だということを意味する

予定・記録

  • 3/23(木) 15:00-17:00
    • (16) - (19)
    • 例外
      • Python における例外の投げ方
      • 研究レベルのコードでは例外処理を書く必要はない
      • エラーが発生するような状況ではプログラムに止まってもらった方が良い
    • ord()
    • %%bash
    • $()
    • 標準入力・標準出力・パイプ
    • split コマンドの使い方
    • numpy とは
    • set
      • set 内包表記
    • unix で sort するときは LC_ALL=C を指定すると速い
    • sorted(seq, key, reversed)
    • ラムダ式
    • collections.Counter
      • most_common([n])
    • list.count()
  • 3/9(木) 14:40-
    • (13) - (15)
    • ふつうのファイルは改行記号で終わる
      • POSIX の規格
    • zip() は短い方に合わせる
    • コードのパフォーマンスの測定の仕方
      • %%timeit
      • %timeit
      • %time
    • 副作用
    • PEP 498: 書式化済み文字列リテラル
      • Python 3.6 から f'{式}' が使える
    • file.readline() はファイル末尾まで読んだら空文字を返す
    • %file, %load
    • itertools.islice()
      • seq[start:stop:step] のイテレータ版
      • itertools は極めて重要
    • /dev/null : 不必要な出力のゴミ捨て場
    • queue module
    • collections.deque(デック)
  • 3/3(金) 14:40-
    • (10) - (12)
    • Appendix
    • git pull をするな
      • 明示的に fetch と merge を叩く
    • git branch -D master
    • IPython から UNIX コマンドを叩く方法
    • IPython での特殊な変数展開
      • $var, {var} : IPython で定義された変数が優先して展開される
      • $$var : シェルの環境変数が展開される
    • "$var" : ダブルクォートで囲うのは良い習慣
    • ディレクトリ構成
      • data/ : 加工前のデータを格納
      • work/ : 中間生成物を格納
    • sum(iterable)
    • 命名規則
    • docstring
    • with 構文
      • contextlib
    • file.open(filepath, mode, encoding)
      • mode はデフォルトで "r"
      • encoding は macOS で普通なら utf-8 だが,locale の設定によって変わる
    • file.close()
      • with 構文を使えば,with 以下の文が終了するか例外発生時に自動的に実行される
      • ファイルオブジェクトを変数に bind しなければ参照カウントが増えないので close() を呼ぶ必要もない
    • ファイル読み書き
      • file.read()
      • file.readlines()
      • file.write()
      • file.writelines()
    • ファイルオブジェクトはイテレータなので何度も read できない
    • 同じファイルを何度も読みたい時:
      • file.seek(0) : ストリームの位置を先頭にする.使えない場合もある
      • file.close() してから open() し直す
      • 同じ変数に bind し直せば古いファイルオブジェクトの参照カウントが減るので close() しなくても良い説
    • コマンドのオプションの調べ方
      • --help, -h
      • man
    • BSD 系と GNU 系コマンドの違い
    • wc, grep -c
    • sed, tr, expand
    • zip(*iterable) : 転置
      • 引数のアンパック
    • a, *b = iterable
      • アンパック代入
    • print() 関数の引数にファイルを指定できる
    • Python における iterable とは
  • 2/22(水) 14:40-
    • (4)
      • 連想配列
      • ハッシュテーブル
      • sequence の真偽値
      • enumerate()
      • 短絡評価
      • 三項演算子
      • item in seq の時間計算量
      • https://wiki.python.org/moin/TimeComplexity
      • 明示的な行継続
      • 非明示的な行継続
      • 辞書内包表記 (dict-comprehension)
      • dict() に tuple を生成する generator を渡す
      • 辞書内包表記に基づく方法と generator に基づく方法の速度差
      • 辞書内包表記の syntax は融通が効かない
      • itertools.starmap()
      • zip(*seq)
      • if __name__ == '__main__'
      • トップレベルの if 文以下の文は global な名前空間を汚す
      • Code Golf
      • False == 0, True == 1
      • Shift + Tab で docstring 表示
      • Ctrl + Shift + - でセル分割
      • Shift + j/k でセル複数選択
      • Shift + m で複数選択したセルの統合
  • 2/17(金) 14:40-
    • (0) - (3)
      • スライス
      • reversed()
      • イテレータ
      • 予約語
      • __builtin__
      • zip()
      • 内包表記
      • map, filter
      • ジェネレータ(オブジェクト,式)
      • next()
      • lambda
      • list.pop()
      • str.join()
      • str.format()
      • str.split()
      • str.strip()
      • 正規表現
      • re module
      • raw string
      • 文字列メソッドと re module のパフォーマンス
      • enumerate(seq, start)
  • 2/10(金) 14:40-
    • 各種設定

TA

研究室の実験環境など

Pythonプログラミングのチュートリアル

100本ノックコーチ割り当て

場所担当者
第1章: 準備運動高橋諒
第2章: UNIXコマンドの基礎中山
第3章: 正規表現横井
第4章: 形態素解析清野
第5章: 係り受け解析浅野
第6章: 英語テキストの処理
第7章: データベース
第8章: 機械学習
第9章: ベクトル空間法 (I)
第10章: ベクトル空間法 (II)
代打

参考書

Linux 標準教科書 (Ver.1.1.0)
: Linux 標準教科書 (Ver.2.0)
cat, paste, join, grep, head, tail, cut, awk, sed, tr, sort, uniq, wc
http://d.hatena.ne.jp/mi_kattun/20100916/1284631280
grep
http://www.k-tanaka.net/unix/grep.html http://www.k-tanaka.net/unix/grep.html
zgrep, zdiff, zmore
http://net-newbie.com/linux/commands/index.html#MISC
bzgrep etc.
http://manpages.ubuntu.com/manpages/gutsy/ja/man1/bzgrep.1.html
nkf
文字コード変換コマンドnkfの使い方まとめ Linux http://blog.layer8.sh/ja/2012/03/31/nkf_command_option/
wc
http://www.k-tanaka.net/unix/wc.html
find
http://www.k-tanaka.net/unix/find.html

過去の記録


Last-modified: 2017-03-23 (Thu) 09:48:47 (2d)
© Inui-Okazaki Laboratory 2010-2015 All rights reserved.
Recent Changes
2017-03-23 2017-03-22
  • Learning Programming
2017-03-17 2017-03-16 2017-03-13 2017-03-11 2017-03-10 2017-03-09 2017-03-08 2017-03-07 2017-03-06 2017-03-05
  • Learning Programming
2017-03-04 2017-03-03 2017-03-02 2017-03-01 2017-02-28 2017-02-27 2017-02-26 2017-02-25 2017-02-24 2017-02-23 2017-02-22 2017-02-21 2017-02-20 2017-02-19 2017-02-18 2017-02-17 2017-02-16 2017-02-15 2017-02-14 2017-02-13 2017-02-12 2017-02-11 2017-02-10 2017-02-09 2017-02-08 2017-02-06 2017-02-05 2017-02-03 2017-02-02 2017-02-01 2017-01-31 2017-01-30 2017-01-29 2017-01-28 2017-01-27 2017-01-26 2017-01-25 2017-01-24 2017-01-23 2017-01-22 2017-01-21 2017-01-20 2017-01-19 2017-01-18 2017-01-17 2017-01-16 2017-01-15 2017-01-14 2017-01-13 2017-01-12 2017-01-11 2017-01-10 2017-01-09 2017-01-08 2017-01-07 2017-01-06 2017-01-05 2017-01-04 2017-01-03 2017-01-02 2017-01-01 2016-12-31 2016-12-26 2016-12-25 2016-12-22 2016-12-21 2016-12-20 2016-12-19 2016-12-18 2016-12-10 2016-12-09 2016-12-08 2016-12-07