英語学習をプログラミングで効率化する

IT

プログラマーではない人がプログラミングする

Python(パイソン)というプログラミング言語があります。人工知能関連でももっとも使われているようで、今一番旬な言語と言ってもいいのかもしれません。

僕は、仕事でプログラミングに関わったことはほとんどないのですが(ちょっとしたマクロなどは除く。)、「Pythonは業務効率化に向いた言語だ」とか、「プログラマーでない人こそ、Pythonを使うべきだ」とかいう言葉をWebでちらほら見ていたので、気になっていました。

とはいえ、一つの言語をある程度使えるまでマスターするのは基本的に大変なことは、なんとなくわかっていたので、ちょっと躊躇していました。

言語をマスターするための時間

しかし最近、あるWeb上で「Pythonを使えるようになるのには1000時間くらいかかる」というのを見て、なるほど、もしかすると、いつかは何とかなるかも、と思いました。というのも英語学習を多分今までで3千時間くらいやっていると思うので、1000時間がどのくらいか、どのくらい大変かが、大体イメージできるんですよね。(ちなみに、英語は実務で使えるようになるには、1万時間は必要というのは聞いたことがあります。自分の実感に近いです。)

また、今は、やり直しの英語学習をしていますが、英語学習は最近は机の上ではしていないです。一方で、プログラミングの学習は、PCの前に張り付いている時間が中心。隙間時間の使い分けがある程度できそうな気がしました。

「自分のほしいものを作る」と、「できることを増やす」を交互に

ということで、もういい年なんですが、Pythonをちょっとかじってみたくなり、少しずつ始めてみることにしました。

これも年を取ったからだと思うのですが、大事なことが3つあると思っています。それを意識しながら勉強しています。

(1)自分の欲しいものを作る

これは、実は一番大事だと思います。作るものが自分の欲しいものではないと、どうしてもモチベーションが上がらないですよね。しかし、初心者はそれほど複雑なことはできない。ですので、欲しいものを意識しつつ(2)と並行して知識をつけ、引き出しを増やしていくことが大事かな、と思います。

で、いったいPythonで何ができるの?という点については、この本を買ってイメージをつかみました。

(2)基本事項は並行して勉強し、できることを少しずつ増やしていく

家を作りたい!と思っても、トンカチやのこぎりの使い方が分からないと何もできないですね。特に言語を学ぶのであれば最低限の文法を学ぶのはどうしても必要になります。本で勉強しようかとも思ったのですが、以下のYoutubeチャンネルを見つけたので、それで勉強しました。短時間で基本文法を一通り勉強できるので、とてもお勧めです。

(3)簡単なものから作って、それを複雑にしていく

プログラムは、処理の集まりでできていますが、一度に欲張るとわけがわからなくなってしまうと思います。やりたい処理をいくつか細かいものに分けて、それがちゃんと動いてから、複雑にしていく、ということを意識するのが大事だと思います。

作るもの: オリジナル英単語帳!~和訳と学習例文が自動的に入る!

で、改めて、自分が今欲しいものを考えてみました。英語の勉強であったらいいな、と思うものとして、単語帳があります。とはいっても、最近は学習していてわからない単語があるとWebで検索して意味を取ることができますね。Weblioなどでは、それをWeb上の単語帳に登録することもできて、私も重宝しています。

一方で、辞書に出ている単語の例文ではなく、自分が学習している文章を例文に入れたい、ということが良くありました。それを自動的に入れてくれれば結構便利かな、と思い、そういうプログラムが作れないかやってみることにしました。(結論から言うと、初心者にはかなりきつい内容でした)

しかし、今は本当に便利な世の中になっていますね。わからないことがあったときやエラーがでた時にググると、結構答えを見つけられますね。

で、四苦八苦してできたのが以下です。作成時に参考にさせていただいたサイトはコメントに記載しました。

※もし少しでも誰かの参考になればよいかと思い公開しました。ご参考にしていただくのは自由ですが、もし動作に問題があっても一切責任は取れませんのでご承知おきください。また、非効率や変なコードが入っていると思いますが、初心者の悪戦苦闘中のコードなので、ご勘弁を。

#簡単な仕様説明
#事前準備1:examples.txtファイルに、自分が学習した英文を沢山入れておく
#事前準備2:その英文で知らない単語を、Excel(wordlist.xlsx)のA列に並べる
#処理概要
#Weblioのサイトから、意味を取り出し、またexamples.txtファイルから、例文を取り出す
#その結果を、result.xlsxに書き出す

#参考にさせていただいたサイト
#https://kanji.hatenablog.jp/entry/python-requests-beautifulsoup-encoding (文字化けを防ぐ)
#https://ai-inter1.com/beautifulsoup_1/#st-toc-h-7 (html要素の内容取り出し)
#https://technique-life.com/pandas_excelcell/ (Excel特定のセルへの書き出し)
#https://programming-study.com/technology/python-list-join/ (リストで取り出した例文を一つにまとめる )

import pandas as pd
import requests
from bs4 import BeautifulSoup 
import time
from os import O_BINARY
import re #正規表現モジュール

path='C:/(適当なフォルダ)/wordlist.xlsx'
wordlist=pd.read_excel(path)
for index,data in wordlist.iterrows():
  url = "https://ejje.weblio.jp/content/" + str(data[0]) #1列目(列番号0)のデータを持ってくる
  source = requests.get(url)
  source.encoding = source.apparent_encoding     
  time.sleep(1) #一秒待つ サーバに負荷をかけないように

  webdata = BeautifulSoup(source.text, "html.parser")
  translation = webdata.select("td.content-explanation")
  if not translation:#空だったら(つまり翻訳できなかったら)
        continue 


  f=open('examples.txt')
  sentencelist=[]
  sentencelist=re.findall(".*?\. |.*?\.\n|.*?\? |.*?\!|.*?\"", f.read()) #まずは例文をリストに。
  selectedsentences = [s for s in sentencelist if str(data[0]) in s] 
  allofselectedsences = ' ; '.join(selectedsentences)
  wordlist.iat[index,2]=allofselectedsences
  f.close()

wordlist.to_excel("result.xlsx", sheet_name="Sheet1", index=True, header=True)

行数にするとあまり長くないですが、これを作るのに毎日仕事終わりに1時間くらいかな?で1週間+週末数時間かかりました。。でも、プログラムを作って「動いた!うれしい!」という経験、中学生の時以来の気持ちがよみがえってきました。

エラー処理などやっていないので、どこまで実用的に使えるかはわかりませんが、とにかく動くものが作れたのはとても楽しかったです。この気持ちを大事にしていきたいです。

コメント

タイトルとURLをコピーしました