英単語を効率的に暗記する方法

英単語を効率的に覚える方法についてのメモ。ただしプログラム言語であるpythonを使う。

 

0)前提

(イ)覚えていない単語に注力したい。

単語を覚えるには単語帳を繰り返す必要がある。

しかし、単語帳には覚えている単語も覚えていない単語もある。

覚えている単語に時間や集中力を使うのは無駄。

 

なるべく覚えていない単語に注力したい。

従来のフラッシュカードはこれを反映したものだと考えられる。

 

(ロ)覚えているの定義。

(イ)より単語帳から覚えていない単語を除く必要がある。

しかし、ここで問題が生じる。

”覚えている/覚えていない”というのは連続的で、定義が曖昧である。

例)

apple  … 間髪入れず答えられる(記憶度 高)

worm    …   間髪ではないが、考えれば答えられる(記憶度 中)

taxic     …   そもそも意味がわからない(記憶度 低)

 

人の記憶は上の例よりもっと連続的で多様である。

英語を運用するという観点では、上記のapple程の瞬発性を持って記憶されていることが望ましい。

 

このことより、

覚えているの定義=単語の意味を間髪入れず答えられる

従来のフラッシュカード等ではこの定義が曖昧になっていたように思う。

 

(ハ)望ましい単語帳

(イ)、(ロ)を勘案すると、

間髪入れず単語の意味が答えられたら、それを除くことのできる単語帳

を作成する必要がある。

  

1)準備

(イ)TOEFLテスト 英単語3800の音声を用意する

TOEFLテスト 英単語3800を購入して、ここから音声をダウンロードする。

この単語帳でなくてもいいが、

英単語1→(無音)→日本語1→(無音)→英単語2→(無音)→日本語2→…

となっている必要がある。

例)

apple→(無音)→りんご→(無音)→bug→(無音)→虫→…

 

また背景音は無音である必要がある。

 

2)音声の分割

pythonを使って音声データを無音部で分割する。以下参照。 

haitenaipants.hatenablog.com

  

これにより、概略的に以下のようなファイルが作成される。

英単語1.mp3

日本語1.mp3

英単語2.mp3

日本語2.mp3

英単語3.mp3

日本語3.mp3

   ︙

 

3)暗記法

上のmp3データからプレイリストを作成し、itunes等で流すと、英単語.mp3の後に日本語.mp3が流れる。

 

ここで、英単語を聞いて日本語が流れる前に意味を答えられたら、瞬発力のある状態で記憶できていると言える。

(自分の場合1.2倍速で1秒以内で答える必要がある)

 

また、これをプレイリストから除けば、次回の繰り返しの時に覚えた単語は流れない。

 

例)

英単語2.mp3の意味を日本語2.mp3が流れる前に答えられた。

英単語2.mp3及び日本語2.mp3の削除によりプレイリストは以下のようになる。

英単語1.mp3     英単語1.mp3

日本語1.mp3     日本語1.mp3

英単語2.mp3  →  英単語3.mp3

日本語2.mp3     日本語3.mp3

英単語3.mp3        ︙

日本語3.mp3

   ︙

  

すなわち、覚えていない単語のみが残る単語帳を作成できると考えられる。

言い換えれば、間髪入れず単語の意味が答えられたら、それを除くことのできる単語帳を作成できたと言える。 

 

関連記事

haitenaipants.hatenablog.com

 

 

pythonによりpdfを画像にする方法

pythonを使ってPDFを画像にする方法についてのメモ。

ただし元は英語記事

 

環境は以下の通り

windows10 64 bit

python 3.6 ( accompanying with Anaconda )

poppler 0.51

pdf2image 0.1.14

 

1) poppler のインストール

ここから、poppler-0.51_x86.7zをダウンロードする。これを解凍するとpoppler-0.51なるフォルダーが現れるはず。

 

pathをつなぐため、以下のコマンドを実行する。

set path=%path%;C:\Users\user_name\Desktop\poppler-0.51\bin 

 

インストールの確認のため、以下のコマンドを実行する。

 pdfinfo.exe

適切に情報が帰ってきたら、popplerのインストール完了。

 

2) pdf2imageのインストール

ここから、pdf2image-0.1.14.tar.gzをダウンロード。これを解凍したら、pdf2image-0.1.14なるフォルダーがデスクトップに現れるはず。

 

上記のフォルダー内に移動して、以下のコマンドでインストールする。

python setup.py install

 

3) PDFを画像に変換する

適当なpdfファイルを用意し(ここでは、"test.pdf"とする)、pdfファイルのある場所で以下のコマンドを実行する。

from pdf2image import convert_from_path, convert_from_bytes

images = convert_from_path('test.pdf')
images[0].save('test.png', 'png')

 

以下の記事を参考にした

PythonでPDFを画像に変換する | ぷろぐら×でざいん

 

関連  

haitenaipants.hatenablog.com

 

haitenaipants.hatenablog.com

 

 

How to install tensorflow and keras on windows10

I am going to explain how to install tensorflow and keras on windows10.

 

This article is originally written by Japanese, and translated into English because I must practice writing English sentence.

 

Please employ this installation at your responsibility.

 

I installed the latest versions of tensorflow and keras on 24 May, 2018.

The enviroment is as shown below:

windows 10 64bit

python 3.6 (installed with anaconda)

tensorflow 1.8.0 (cpu version)

keras 2.1.5

 

(1) Install anaconda

Let me skip how to install anaconda because there are many articles about that.

 

(2) Install tensorflow

(2-1) Download win-64/tensorflow-1.8.0-py36_1.tar.bz2 from here.

 

(2-2) Move to the directry where the downloded file is, and install by the following command.

conda install tensorflow-1.8.0-py36_1.tar.bz2

 

(2-3) Invoke python interpreter, and import tensorflow by the following command.

import tensorflow as tf

 

Probably, you will be said that there is no module named "google".

 

(3) Install protobuf

Honestly, I do not know protobuf well. 

As far as I know, protobuf stands for protocol buffer, and it seems that its role is to make .py file from .proto file.

ex.)protobuf test.proto → test.py

(ref) Protocol Buffers 入門

 

(3-1) Download win-64/protobuf-3.5.2-py36h6538335_0.tar.bz2 from here.

 

(3-2) Execute the following command where the downloaded file is.

conda install protobuf-3.5.2-py36h6538335_0.tar.bz2

 

(3-3) Invoke python interpreter, and import tensorflow by the following command.

import tensorflow as tf

 

Probably, you will be said that there is no module named "absl".

 

(4) Install absl

Honestly, I do not know absl well. 

As far as I know, absl stands for Abseil, and important libraries that Google uses.

(ref) abseil / Welcome to Abseil!

 

(4-1) Download win-64/absl-py-0.2.1-py36_0.tar.bz2 from here.

 

(4-2) Execute the following command where the downloaded file is.

conda install absl-py-0.2.1-py36_0.tar.bz2

 

(4-3) Invoke python interpreter, and import tensorflow by the following command.

import tensorflow as tf

 

In my case, I succeeded to install tensorflow by the above procedure.

  

(5) Install keras

(5-1) Download win-64/keras-2.1.5-py36_0.tar.bz2 from here.

 

(5-2) Execute the following command where the downloaded file is.

conda install keras-2.1.5-py36_0.tar.bz2

 

(5-3) Invoke python interpreter, and import tensorflow and keras by the following commands.

import tensorflow as tf

import keras

 

Probably the following message is return.

Using theano backend 

And you will be said that there is no module named "theano".

 

(5-4) To chage the backend from theano to tensorflow,

you need to rewrite ~/anaconda3/etc/activated.d/keras_activated.dat.

Specifically, you chage the contents from

set "KERAS_BACKEND=theans"

to

set "KERAS_BACKEND=tensorflow"

 

(ref) KerasのバックエンドがTheanoから変更できなくなった話 - 粗大メモ置き場

 

Related articles

haitenaipants.hatenablog.com

 

haitenaipants.hatenablog.com

 

How to convert PDF to image by Python

pdf2image is a Python wrapper for poppler.

In this article, I illustrate how to convert a PDF file to a image file by pdf2image.

 

The environment is as shown below.

windows10 64 bit

python 3.6 ( accompanying with Anaconda )

 

1) Installing poppler 

Download poppler-0.51_x86.7z from here. When you extract this file, a folder named poppler-0.51 appears on Desktop.

 

To connect path, execute the following command.

set path=%path%;C:\Users\user_name\Desktop\poppler-0.51\bin 

 

Then, to check the connection,  execute the following command.

 pdfinfo.exe

If information is returned properly, you successfully connect the path to poppler. 

 

2) Installing pdf2image

Download pdf2image-0.1.14.tar.gz from here. When you extract this file, a folder named pdf2image-0.1.14 appears on Desktop.

 

Move to the above folder, and set up by the following command.

python setup.py install

 

3) Convert PDF to image

prepare a pdf file (here, I name it "test.pdf"), and execute the following code in the directory where the pdf file is. 

from pdf2image import convert_from_path, convert_from_bytes

images = convert_from_path('test.pdf')
images[0].save('test.png', 'png')

 

Note:

I moved the folder, pdf2image-0.1.14, to ~/anaconda3/Lib/site-packages, because I do not know "setup.py" well. When you do not succeed to convert PDF, please try it.

 

「失恋ショコラティエ」で学ぶ自分を好きになる方法

目次

1)はじめに

失恋ショコラティエ」はタイトル通り、失恋がメインテーマの漫画である。

失恋の痛みであったり切なさを見事に描き切った名作だ。えぐられた人も多いだろう。

 

彼女に振られた自分は「失恋ショコラティエ」を大人買いし、場所を問わず号泣した。

会社の休憩所で顔を抑えたり、電車内でハンカチを顔に押し付けてる人がいたら、多分僕です。

 

さて、「失恋ショコラティエ」にはサエコさんエレナ薫子さんまつりちゃん四人のヒロインが登場する。

 

 サエコさんを除く三人には共通点がある。それは、自分に自信がない、言い換えれば自分のことがあまり好きではない描写が少なくないのだ

サエコさんが剛のものすぎてそう感じるだけかもだが)

 

そんな彼女たちも、最終回に近くにつれ、少しずつ成長し、強くなっていく。

そこから自分を好きになる方法について何かしら得るものがあるのではないだろうか。

 

そこで、サエコさん以外のヒロイン、つまり、エレナ、薫子さん、まつりちゃんに注目することにより自分を好きになる方法について考察していく。

 

ただしネタバレを含んでいるので、読んでいない方はご注意。

 

 

2)エレナと薫子さんの場合 

エレナは爽太と戦わずにいたことを後悔していた。

「やり直せるなら戦いたい…

上手くいかなくても成功しなくてもいいから戦いたいよ…」

この場面でえぐられた人も多いだろう。僕もえぐられました。友達ですね。

そんなエレナも、六道からの言葉を思い出し、爽太と対決することを選ぶ。

ちゃんと自分に全てを話して欲しいと。

 

一方、薫子さんも、片思いしていた爽太にハッパをかけることにより、けじめをつける。

「本当に悪いと思っててバツを受けたいなら

加藤えれなさんから受けなよ!!」 

この場面でえぐられた人も多いだろう。僕もえぐられました。友達ですね。

薫子さんは、サエコや関谷との出会いを通じて、自分を褒められるような生き方を選んだのだ。

 

二人のエピソードは自分のことを好きになるために大切なことを教えてくれる。

何かに対して、ちゃんと向き合って戦った時。

自分に「よくやったね」と言えるような生き方ができた時。

そんな時、少しだけ自分を好きになれないだろうか。

 

3)まつりちゃんの場合

しかし、まつりちゃんに限っては、クライマックスに明確に何かを乗り越えるという場面がない。

最終回近くでも割とふわふわうじうじしている。

というか作品を通じて、まつりちゃんはオリヴィエに流されているという印象が強い。

 

けれど、まつりちゃん(とオリヴィエ)のエピソードは、自分を好きになる上で一番重要なことを示していると思う。

 

まつりちゃんはオリヴィエと関わっていく中で、葛藤を繰り返しながら少しずつ前に進んでいく。二股彼氏との関係を切り、時にオリヴィエと衝突しながら、色々な好きの形を知り、愛を育んでいく。

 

人との出会いによって成長していく姿。

それこそが、エレナと薫子さんにも通じる、自分を好きになるということの本質なのかなと思う。

 

身も蓋もないが、人との出会いこそが自分を好きになるためには必要なのだと思う。

 

4)最後に自分の場合

というか、なぜこの記事を書いたかというと、自分も似たような経験をしたことがあるからだ。ということで以下では自分の話をする。どこまでも月並みな話だが。

 

自分はなんというか傷つきやすい性格である。 

人に言われたことをいつまでも引きずってしまう面倒な性格をしている。

 

だから、高校に入ったぐらいから人と深く関わるのを避けてきた。

ずっとぼっちだったし、人と話していても気を使って疲れていた記憶しかない。

人間関係で失敗しない一番の方法は相手に深く関わらないことだ。

 

そんな自分だが、大学の四回生ぐらいに女の子の友達ができた。

爽太とエレナじゃないが、お互いふわふわした関係を続けていた。

 

最初はどーでもいいと思っていたが、知り合っていくうちに段々とその娘のことが好きになっていった。

なんというか、人と会うといつも気疲れするのに、その子と会うとそういうことが少なかった。自分にとって初めての体験であった。あとモテない理系大学生でしたし。

 

その子と過ごすうちに、 ちゃんと人と向き合える人間になりたいと思うようになった。

もっとはっきりいえば、この子とちゃんと向き合って付き合いたいと思った。

どこかで、いつまでも浅い関係しか築けないのはダメだと思っていたのもあった。

また今思えば、浅いつながりだけでは、彼女がどこかに行ってしまうような気がして怖かったのだと思う。

うわーチキンだわーサイテー!! (by薫子さん) 

 

とにもかくにも告白しようと思った。

だがしかし、経験のある人なら分かると思うが、こういうふわふわした関係の人に告白するってめちゃくちゃ緊張する。

人と適当な関係を築いてきた自分ならなおさらだ。自分の本当の気持ちを伝えようとすると、なぜか涙が出てきてしまう。

 

変な話だが、告白しようと思っていた時期は鬱みたいな状態だった。

心の中で、だからお前はダメなんだとか、今までの失敗とかが押し寄せてきていた。 

だけど、ちゃんと人と向き合える人間になりたかった。

 

めちゃくちゃ頑張って、夜景の綺麗なところで告白した。いつもの二人みたいなグダグダな感じだった。めちゃくちゃ緊張したが。結果はOKだった。

 

あの時ほど、自分に対して「よくやった」と思ったことはない。

告白が成功したからではなく、自分の気持ちを伝えられたのが嬉しかったからだ。

本当に今までの自分じゃありえないことを成し遂げたと思った。

 

結局、数ヶ月後にその子に振られて、「失恋ショコラティエ」を読むことになったが。

けれど、告白したことを後悔していない。

あの瞬間のおかげで、自分のことが少し好きになれたと思うのだ。

 

昔は、自分に対して、いつもヘラヘラなよなよしているなと思っていた。正直好きとも嫌いとも思っていなかった。時々、すごい嫌いだったが。

 でも今は、普段はヘラヘラしてしょーもないやつだけど、まーやる時はやるし、トータルではいいやつだと自分で思う。

言い換えれば、昔の自分とは友達になれないと思うけれど、今の自分とは友達になれそうな気がする。

 

でもそう思わせてくれたのは、やはりその彼女との出会いなのだと思う。 

 

 

PyOCRでconfigを読み込む方法

PyOCRconfigを読み込む方法についてのメモ。

 

ちなみに以下のような環境を想定している。

Windows10 64bit

python 3.6

OpenCV 3.4.1

tesseract 3.02

PyOCR 0.5

 

またPyOCRのインストール方法や基本的な使い方は以下を参照のこと。

haitenaipants.hatenablog.com

 

0)configデータの確認

tesseractをインストールすると、~\Tesseract-OCR\tessdata\configsというディレクトリがあるはず。

(自分の場合は、C:\Users\ユーザー名\AppData\Local\Tesseract-OCR\tessdata\configsにあった。)

この中のdigitsが以下のようになっていることを確認する。

tessedit_char_whitelist 0123456789-.

1)configの設定 

以下のような、image1.jpgなる画像を用意する。

f:id:haitenaipants:20180629111618p:plain

image1.jpg

この画像に対し、以下のコードを与える。

特に赤文字の箇所においてconfigを設定し、digitsを読み込んでいる。

import pyocr
import pyocr.builders
from PIL import Image

img = Image.open("image1.jpg")

tools = pyocr.get_available_tools()
tool = tools[0]

builder = pyocr.builders.TextBuilder(tesseract_layout=6)
builder.tesseract_configs.append("digits")

res = tool.image_to_string(img,
                                           lang="eng",
                                           builder=builder)

print(res)

 

結果は以下のようになる。数字だけを含んでおり、configの設定に成功していることが分かる。 

 1234567

 

以下の記事を参考にした。

qiita.com

 

関連 

haitenaipants.hatenablog.com

 

ssd kerasの学習モデル作成

ssd kerasの学習は大まかに以下の手順で行われる。
1)jpeg等の画像データの収集
2)モノの”種類”と”位置”を記したxmlファイルの作成
3)pklファイルxmlファイルをまとめたファイル)の作成
4)上で作ったpklファイルにより学習を行う

このssd kerasの学習についてのメモ。

 

参考にされる方は自己責任でお願いします。

また学習モデルの作り方を理解するには、ここここを参考に、VOC(Visual Object Classes)のデータで練習するのが一番だと思います。

 

考えている環境は以下のようである。

windows 10 64bit

python 3.6

tensorflow 1.8.0 (cpu版)

keras 2.1.5

labelimg

ssd_keras


1)ssd kerasの準備

ここから、ssd_kerasをデスクトップにダウンロードする。学習モデルもダウンロードしておく。
ssd_keras-masterというフォルダーがデスクトップに現れるはず。

この内部に、以下のようにtestというディレクトリを作成する。

ssd_keras-master/
 └test/

 

ちなみに、keras2.0以上を使っている場合は、ここを参考に、ssd_layers.pyにおいて

def get_output_shape_for(self, input_shape):

def compute_output_shape(self, input_shape):

に変更する。


2)画像の用意

例として、はてなマークを検出するモデルを作成する。

testディレクトリ内に以下の画像を用意する。

f:id:haitenaipants:20180620002328j:plain
f:id:haitenaipants:20180620003958j:plain
f:id:haitenaipants:20180620004003j:plain
左から fig1.jpg, fig2.jpg, fig3.jpg

ちなみに、画像は2枚以下だと後々困るので3枚以上用意すること。
(画像は訓練用と検証用に使われ、2枚以下だと画像が全て訓練用に使われてしまい、検証用の画像がなくてエラーが出る)


3)xmlファイルの作成

labelimgを用いて、用意した画像からxmlファイルを作成する。

labelimgの導入方法は以下の通り。
haitenaipants.hatenablog.com

ここでは、”question_mark”というラベルでラベリングした。

また、考えているディレクトリ内は以下のようになっているはず。

ssd_keras-master/
 └test/
   ├ fig1.jpg
   ├ fig2.jpg
   ├ fig3.jpg
   ├ fig1.xml
   ├ fig2.xml
   └ fig3.xml

これらを、figとxmlというディレクトリを作って、以下のように整理する。

ssd_keras-master/
 └test/
   ├ fig/ 
   │ ├ fig1.jpg
   │ ├ fig2.jpg
   │ └ fig3.jpg
   └xml/
     ├ fig1.xml
     ├ fig2.xml
     └ fig3.xml

 

4)pklファイルの作成

ssd_keras-master/PASCAL_VOCの中にあるget_data_from_XML.pyssd_keras/testにコピーアンドペーストする。

このget_data_from_XML.py内部の"aeroplane""question_mark"にする。

次に、pythonを起動して、testディレクトリ内において以下のコマンドをうつ。

import pickle
import get_data_from_XML

data =get_data_from_XML.XML_preprocessor('xml/').data

pickle.dump(data,open('test.pkl','wb'))

test.pklができていることを確認。

 

5)pklファイルの確認

上のコードに続いて、以下のコマンドを実行する。

f = open('test.pkl', 'rb')

data = pickle.load(f)

print(data.keys())

print(data['fig1.jpg'])

行列が出てきたら成功。

 

6)学習モデルの作成

ssd_keras-masterにcheckpointsというディレクトリを作っておく。

あとはこここことかを参考に、SSD_training.ipynbを書き換えてjupyter notebookで実行するのみである。

ポイントとしては、

(a) In [2]

NUM_CLASSES=4

を以下のように書き換える。

NUM_CLASSES=21 

 

(b) In [4]

gt=pickle.load(open('gt_pascal.pkl','rb'))  

を以下のように、作ったpklファイル名に書き換える。

gt=pickle.load(open('test/test.pkl','rb'))  

 

(c) In [6]

path_prefix='../../frames/'

を以下のように、画像のある場所に書き換える。

path_prefix='test/fig/' 

 

(d) In [6]

gen=Generator(gt, bbox_util, 16, '../../frames/',

               train_keys, val_keys,

               (input_shape[0], input_shape[1]), do_crop=False)

を以下のように書き換える。赤字は変更箇所を示す。

gen=Generator(gt, bbox_util, 1,'test/fig/' 

               train_keys, val_keys,

               (input_shape[0], input_shape[1]), do_crop=False)