LoginSignup
4
2

More than 3 years have passed since last update.

書籍「15Stepで踏破 自然言語処理アプリケーション開発入門」をやってみる - 1章メモ「演習に入るまえの予備知識」

Last updated at Posted at 2019-11-11

内容

15stepで踏破 自然言語処理アプリケーション入門 を読み進めていくにあたっての自分用のメモです。

準備

  • 個人用MacPC:MacOS Mojave バージョン10.14.6
  • docker version:Client, Server共にバージョン19.03.2

章の概要

本に記載の通り、学習環境の構築および、演習の前提となる知識(プログラミング言語とライブラリ)について押さえる。

メモ

1 序論・自然言語処理と機械学習

メモなし

2 本書の執筆・開発環境

執筆環境をrequirements.txtとして配布されているほか、Dockerfileも配布されている。

requirements.txtは下記のようにライブラリの種類とバージョンが記載されていて、pipを使って一括でライブラリをインストールすることができる。

requirements.txt
numpy==1.15.0
scipy=1.1.0
...
mecab-python3==0.996.2
neologdn==0.3.2
...
# pipでのインストール例
$ pip install --no-cache-dir -r requirements.txt

Dockerfileを利用する場合は、DockerfileからDockerコンテナをビルドして起動する。(自分はこちらで実行)

### コンテナビルド ###
# Dockerfileが置いてある場所で実行
$ ls | grep Dockerfile
Dockerfile

# リポジトリ名:15step、タグ名:latest でビルド
$ docker build -t 15step:latest .

### コンテナ起動 ###
# デフォルトでコンテナを起動するとpythonが起動した状態
$ docker run -it 15step:latest
Python 3.6.5 (default, Jun 27 2018, 08:22:23)
>>>

# 停止はquit()
>>>quit()
$

# bashを起動したのちpythonを起動する方法も
$ docker run -it 15step:latest /bin/bash
/usr/src/app# 
/usr/src/app# python
Python 3.6.5 (default, Jun 27 2018, 08:22:23)
>>>

3 機械学習のためのPythonの基礎

  • リストとタプルと辞書を使い分けれるようにする
    • タプルはimmutable
  • 三項演算子がC言語とかと比べるとより英文的な書き方
    • price = 1000 if age >= 20 else 800
    • age>=20ならばprice=1000、そうでなければprice=800が実行される
  • for文
    • listに対してはforeach的にfor val in <リスト>:
    • カウンタ変数が欲しい場合はenumerateをfor i, val in enumerate(<リスト>):
    • カウンタ変数のみが欲しい場合はrangeをfor i in range(5):
  • 関数、クラス、モジュール
    • モジュールを読み込むimport module as md
      • md.methodで関数を呼び出す
    • モジュールの関数を読み込むfrom module import method
      • methodで関数を呼び出す
  • 正規表現は正規表現パターンをあらかじめコンパイルしておけば、実行を高速化できる

4 数値計算ライブラリNumPy

  • 配列はnumpy.array(<リスト>)
  • 次元は<配列>.shape
  • スライス(複数の要素を指定して取得)は<配列>[m:n]
    • 要素m~n-1までを取得
    • m=0やn=<要素数>の場合は省略可
  • ブロードキャスティング
    • ベクトル+スカラー や 配列+ベクトル の計算時、自動的に次元を揃えてくれる
  • 四則演算は<配列1> 演算子 <配列2>で計算できる
  • 内積はnumpy.dot(<配列1>,<配列2>)
  • 最大値を取得したい場合
    • 要素の最大値を得るのはnumpy.max(<配列>)
    • 要素の最大値のインデックスを得るのはnumpy.argmax(<配列>)
  • 合計、平均、乱数、初期化(0で初期化,1で初期化)
  • 配列結合
    • 縦方向はnumpy.vstack(<配列1>,<配列2>)
    • 横方向はnumpy.hstack(<配列1>,<配列2>)

5 本書で利用するその他の主要ライブラリ

メモなし

参考引用文献

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2