Kuroyagi飼育日誌

学んだことの備忘録

英単語帳作成~その1~

英語の勉強って文法、語彙、発音に大きく分かれると思いますが、今回は語彙にフォーカスして勉強方法を効率化します。



語彙は可能な限り使用頻度の高いものから覚えていきたいところです。



ということで普段使う英語論文から単語抽出して頻出語句順の単語帳を作りましょうというのが今回の目的です。



ステップとしては



□1. PDFからtxt抽出
□2. txtから抽出した単語リストを生成
□3. 単語リストから同一単語のカウントして重複なし単語リストを生成
□4. 単語の頻出順にソート



となると思います。



その1ではPDFファイルからtxtを抽出するところまでやります。





練習に使ったPDFは以下のものです。



https://spie.org/Documents/Publications/00%20STEP%20Module%2008.pdf



先ずはPDFファイルから文字をテキストとして抽出します。



PythonにはPDFから文字を抽出するライブラリが複数存在しますが、Python3系で動く評判の良さそうなpdfminer3kを使います。



仮想環境を作り、環境をアクティベートしたらライブラリをインストールします。



ここからは一度失敗した部分を含みますので省略したい方は[ここまで]まで飛ばして下さい。

pip install pdfminer3k


インストールできたら早速使ってみます。



PDFファイルはとりあえずrootのフォルダに入れて、pythonでpdfminer3kを使います。venvだとscripts内にpdftxt.pyがいるのでこれを指定してあげる。


python フォルダパス/pdf2txt.py PDFファイル名.pdf

こうすると処理はしてくれるのですが、肝心のtxtは?となります。pdfminer3kは標準出力らしいので、先のコマンドを


python フォルダパス/pdf2txt.py PDFファイル名.pdf > text名.txt

と指定してあげればPDFファイルと同じディレクトリにtxtファイルが生成されるはずです。



生成されたtxtファイルを覗いてみると1ページ目の分しかtxtとして出力されていませんでした。ちなみにエラーは以下の通り。


UnicodeEncodeError: 'cp932' codec can't encode character '\xa9' in position 0: illegal multibyte sequence

軽く調べてもよく分からなかったので、こういう時はいいサンプルを探します。



[ここまで]



githubにあるsampleを含むpdfminer3kのソースを拾ってきましょう。ついでに問題が依存関係とかだったりすると嫌なので一度pdfminerは削除して、githubのソースについているsetup.pyの実行によりインストールを行います。



git clone https://github.com/jaepil/pdfminer3k.git

そうしたらcloneしてきたフォルダのトップ層にsetup.pyがあるので


python setup.py install

するといろいろとやってくれます。



仮想環境のscriptフォルダにpdf2txt.pyがインストールされたと思います。



PDFファイルはとりあえず仮想環境のrootに置きました。



pdf2txtを使うには以下のコマンドを実行します。


python パス/pdf2txt -o 出力ファイル 入力PDF

出力ファイルはパスを指定しないとgit cloneで生成されたpdfminer3kフォルダ内に生成されます。



以上でtxtファイル生成が完了しました。



■1. PDFからtxt抽出
□2. txtから抽出した単語リストを生成
□3. 単語リストから同一単語のカウントして重複なし単語リストを生成
□4. 単語の頻出順にソート



その2へ続く