FrontPage / Learning Programming

概要

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

内容

  1. 言語処理100本ノック 2015
    • 自然言語処理に関するプログラムを実際に作ってもらい,互いにコードレビューを行います。
    • 問題に対する答えは一つではありません。どんな方法でも,無理矢理でも解いてみてください。
  2. ほか「研究に伴うプログラミング/実装」の周辺知識

2018年度

日時
TBA
参加者
大竹、今野、佐藤(志)、佐藤(拓)、藤井
書いたコード
https://github.com/cl-tohoku/100knock-2018

このページの記録

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

予定・記録

  • 05/08(火)
    • (16)-(19)?
  • 04/24(火)
    • (12)-(15)
    • `cut` コマンド
      • `-f` で切り出すフィールド指定
      • デリミタはデフォルトでタブ文字
      • コマンドによってデリミタとされる文字が異なるので注意
    • `*` でイテラブルをバラす
      • `print(*'abc')` は `print('a', 'b', 'c')` と等価
    • `*変数` に「残りの値」を代入する (extended iterable unpacking)
      • `x, y = 'ab' # x == 'a', y == 'b'`
      • `x, *rest = 'abc' # x == 'a', rest == ['b', 'c']`
    • 以上詳細: https://qiita.com/eumesy/items/dda85b70d28da61663cb
    • `file.seek()`
    • `paste` コマンド
    • `cat` コマンド
    • `zip()` は引数にイテラブルをとる
    • Python スクリプトファイルの作り方
      • `chmod` コマンド
      • shebang
      • スクリプトファイルとしてコマンドラインから呼び出されたときだけ実行したい部分は `if __name__ == '__main__':` ブロックに書く
      • `sys.argv`
      • `argparse` モジュール
    • ★`itertools` モジュール
      • イテレータを便利に扱うためのモジュール
      • レシピ集を含め必読
      • さらなる追加関数群: `more_itertools` モジュール
    • `file.readlines()` には気を付けましょう
    • `collections.deque([iterable, maxlen])`
      • 双方向キュー / double ended queue
  • 04/17(火)
    • (08)-(11)
    • map, filter, lambda
    • filter + map より内包表記が好まれる
    • ★iterable (list, str など) の要素を for で iterate したい場合は range() で index を iterate するのでは なく, 要素を直接 iterate する
    • 変数名を capitalize するとクラス名に見える
    • random.random(population, k) seq or set からの非復元抽出
    • random.shuffle(list) list を破壊的に shuffle
    • ★ipython: [tab] による補完(e.g., クラスメンバ名)
    • ★ipython: `?` による docstring 閲覧
    • ipython: `??` による(より詳しい) docstring(?)閲覧
    • file から line を iterate する場合はとりあえず rstrip()
    • UNIX コマンドの使い方を確認するオプション: `--help`
    • `wc -l`
    • ショートオプション (e.g., `-l`) とロングオプション (e.g., `--lines`)
      • 頻繁に入力するコマンドはショートオプションを覚える
      • 稀にしか入力しないコマンドはロングオプションで書くと可読性が高い
    • 改行の数をカウントするアプローチ
      • ファイル末尾に改行を
    • `file.read()`, `file.readlines()` の使い方に注意
      • ファイルサイズが非常に大きいとメモリに載り切らない
    • tldr http://tldr.sh
      • man ページの簡易版
    • 新しいデータを処理する前にやること:ファイルの中身を確認する: `head`, `less`
    • `with` 文: `file.close()` を自動的にやってくれる
    • 使わないことを明示したい場合,変数名に `_` を使うことが多い
      • `for i, _ in enumerate(file):`
    • `diff` コマンド
    • 標準入出力
    • IPython でセルの中身をファイルに書き出す: `%%file filename`
    • `tr`, `sed`, `expand`
    • `sed` の典型的な使い方: `sed 's/old/new/g' file`
    • Python でのファイル処理では行を処理する前に `str.strip()` で改行を消すことが多い
    • `itertools.islice()`: スライスのイテレータ版
  • 03/30(金) 10:30-12:00
    • (00)-(03)
    • ★スライス
    • 文字列の連結
    • `reversed()`
    • `str.join()`
    • `list.reverse()`
    • `enumerate()`
    • 0以外の数値は True になる
    • リスト内包表記
    • 高度な話題
      • ジェネレータ
      • イテレータ
      • 遅延評価
    • ★`zip()`
      • 短いほうに合わせる
    • ★関数名に ? を付けると仕様を表示できる
    • `min()`
    • ★`str.format()`
    • ★`str.replace()`
    • ★`str.split()`
    • ★`str.strip()`
      • ファイルを読み込むときによく使う
    • `str.lstrip()`
    • `str.rstrip()`
    • lambda 式
    • `map()`
  • 03/26(月)
    • (準備)
    • 100本ノック初回(esa)
      • jupyterlab インストール: conda install -c conda-forge jupyterlab
      • git 周りの設定: ~/.ssh/config に ssh 公開鍵 path, git config --global 系
      • GitHub 当該ディレクトリに個人用ブランチ&ディレクトリ作成
  • 03/??
    • (課題図書)
    • Python
    • Shell
      • 『新しいLinuxの教科書』

TA

研究室の実験環境など

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

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

場所担当者
第1章: 準備運動清野
第2章: UNIXコマンドの基礎横井
第3章: 正規表現阿部,白井
第4章: 形態素解析伊藤,田上
第5章: 係り受け解析浅野,高橋
第6章: 英語テキストの処理栗林
第7章: データベース佐々木
第8章: 機械学習鈴木,赤間
第9章: ベクトル空間法 (I)
第10章: ベクトル空間法 (II)吉成,中村
代打水本,横井,松林,O

参考書

  • TBA

過去の記録


Last-modified: 2018-04-24 (Tue) 05:17:57 (3d)
© Inui-Suzuki Laboratory 2010-2018 All rights reserved.
Recent Changes
2018-04-27 2018-04-26 2018-04-25 2018-04-24 2018-04-23 2018-04-20 2018-04-19 2018-04-18 2018-04-17 2018-04-16 2018-04-15 2018-04-13 2018-04-12 2018-04-11 2018-04-10 2018-04-09 2018-04-08
  • Learning Programming
2018-04-07 2018-04-06 2018-04-05 2018-04-04 2018-04-03 2018-04-02 2018-03-31 2018-03-30 2018-03-29 2018-03-28 2018-03-26 2018-03-25 2018-03-24 2018-03-23 2018-03-22 2018-03-21 2018-03-20 2018-03-19 2018-03-10 2018-03-09 2018-03-08 2018-03-07 2018-03-06 2018-03-05 2018-03-03 2018-03-02 2018-03-01 2018-02-28 2018-02-27 2018-02-23 2018-02-22 2018-02-21 2018-02-19 2018-02-16 2018-02-15 2018-02-09 2018-02-08 2018-02-07 2018-02-06 2018-02-03 2018-02-02 2018-02-01 2018-01-31 2018-01-30 2018-01-29 2018-01-28 2018-01-26 2018-01-25 2018-01-24 2018-01-21