第3回 11月2日 サーバ上でのビジュアルプログラミングによるDS技術
の編集
Top
/
第3回 11月2日 サーバ上でのビジュアルプログラミングによるDS技術
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
島部/menu/template
[[専門ゼミ(戸田)]] *目次 [#dd2fe839] #CONTENTS **1. 目標 [#i67428c5] **【目標】 [#udebb2c6] ビジュアルプログラミングによるデータ処理を行う。Blocklyというオープンソースのビジュアルプログラミングを用いる。使用するプログラミング言語は主にJavascript/Pythonである。 **2. 環境構築及び実行 [#e321d51d] **【参考資料】 [#udebb2c6] 以下のページを見ながら環境構築・課題を行った。~ [[ビジュアル・プログラミング]] ***必要なもの [#j04453c8] -パソコン(OSはいずれでもよいがLinuxで運用するのが普通だと思う) - - - - ***Windows SubSystem for Linux2(WSL2)(Linux、UNIXでも可) [#v743175a] とりあえず、WSL2のインストールから始める。以下のサイト見ながらでできる。 https://docs.microsoft.com/ja-jp/windows/wsl/install-win10 一応ここにその内容を記す。まず、管理者権限でPowerShellを開き、次のコマンドを入力する。 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 次に、同じくpowershellでwindowsのどのシステムを使用しているか次のコマンドで確認する。 systeminfo | Select-String "システムの種類" → x64 や ARM64 などが表示される %%コマンドプロンプトの場合はこれ%%~ %% systeminfo | find "システムの種類"%% 次にwindowsのバージョンとビルド番号を確認する。~ Windows ロゴ キー + R キー を押して、「 winver 」と入力し、 [OK] を選択する。 (または、Windows コマンド プロンプトで ver コマンドを入力)。 #ref(ver_build.png,,40%) 上図が出るので、適切なバージョンを満たしているか確認する -x64 システムの場合: バージョン 1903 以降、 ビルド 18362 以上。 -ARM64 システムの場合: バージョン 2004 以降、 ビルド 19041 以上。 --18362 より前のビルドは WSL 2 をサポートしていません。 Windows 更新アシスタントを使用して、お使いのバージョンの Windows を更新します。Windows 10 バージョン 1903 または 1909 を実行している場合は、Windows メニューから [設定] を開き、[更新とセキュリティ] に移動して、[更新プログラムのチェック] を選択します。 ビルド番号は、18362.1049+ または 18363.1049+ で、マイナー ビルド番号は .1049 より大きい必要があります。windowsのマイナービルド番号を満たしていない場合は、windowsマークをクリックして、歯車マークをクリックして設定を開きWindows Updateを行う。 WSL 2 をインストールする前に、" 仮想マシン プラットフォーム " オプション機能を有効にする必要がある。~ 管理者として PowerShell を開き、以下を実行する。 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart PCを&size(20){&color(red,white){再起動};};して WSL のインストールを完了し、WSL 2 に更新する。 次にWSL2Linuxカーネル更新プログラムパッケージをダウンロードする。システムがx64の場合はx64、ARM64の場合はARM64をクリックする。 [[x64:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi]] [[ARM64:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi]] ダウンロード後、ダウンロードしたファイルを実行する。 次に、次のコマンドで、新しい Linux ディストリビューションをインストールする際の既定のバージョンとして WSL 2 を設定する。 wsl --set-default-version 2 次に、Ubuntu 20.04 LTSをMicrosoft Storeからインストールする。 下のリンクに行って入手を選択する。 [[Ubuntu 20.04 LTS:https://www.microsoft.com/store/apps/9n6svws3rx71]] 複数のデバイスで使うか聞かれたら必要ないと答える。 -ubuntuのインストールボタンが出ない場合は、下記のエラー対応集(10)へ その後、起動し、ユーザー名とパスワードを設定する。どちらも覚えるか&size(20){&color(red,white){記録};};しておく。 --このユーザー名およびパスワードは、インストールする Linux ディストリビューションごとに固有であり、Windows ユーザー名とは関係ありません。 ユーザーがユーザー名およびパスワードを作成すると、そのアカウントがディストリビューションの既定のユーザーとなり、起動時に自動的にサインインされます。 このアカウントは、Linux 管理者と見なされ、sudo (Super User Do) 管理コマンドを実行できます。 ***WSL2のBlocklyのための環境構築 [#s827ee10] ここから、Ubuntuで作業する。Ubuntuで次のコマンドを実行する。 sudo apt update sudo apt -yV upgrade WSL2を再起動する(Ubuntuを閉じて再度開く)。再起動後、次のコマンドを実行する。 sudo apt install apache2 apache2 -v -このコマンドはapache2というWebサーバーソフトウェアをインストールしている。インターネット上で企業や官公庁の公式サイトで情報を入手したり、動画やSNSを利用したりする場合には、必ずWebサーバーソフトウェアのお世話になる。そのうち半数でApacheが稼働している。 ***WSL2へのpyenv(python)のインストール [#m9448d25] 以下のコマンドはpythonを使用するために必要な機能をインストールしている。 sudo apt install -y build-essential libffi-dev zlib1g-dev liblzma-dev libbz2-dev libreadline-dev libsqlite3-dev git net-tools libssl-dev ここでWSL2(Ubuntu)を再起動。 次に以下のコマンドでpyenv本体のダウンロードとインストールをする。 git clone https://github.com/pyenv/pyenv.git ~/.pyenv 次に、以下のコマンドで.bashrcの更新をする。 echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc source ~/.bashrc WSL2(Ubuntu)を再起動。再起動後に次へ 以下のコマンドでpyenvがインストールできたかを確認(pyenvはLinuxにおいて、Pythonの実行環境を管理するツール。つまりいろんなバージョンのpythonを管理する有能) pyenv -v 以下のコマンドでpythonのインストール pyenv install 3.8.5 # 例えば,version 3.8.5 pyenv versions # インストール済みのpyenvのバージョンを確認できる pyenv global 3.8.5 以下必要なライブラリのインストール python -m pip install pyocr matplotlib pydotplus pulp pandas scikit-learn graphviz opencv-python docopt sudo apt install tesseract-ocr libtesseract-dev tesseract-ocr-jpn sudo apt-get dist-upgrade sudo apt-get install build-essential sudo apt-get update sudo apt-get install graphviz mecab libmecab-dev mecab-ipadic-utf8 cd ~ sudo apt install swig →エラーが出たらエラー対応集(11)へ sudo apt install python3-pip sudo pip3 install mecab-python3 sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev https://www.engineer-log.com/entry/2019/10/31/tesseract5-install 下記のライブラリは必要に応じてインストールする(専門ゼミでは飛ばす) -自然言語処理系のBlockを動かす場合 git clone https://github.com/neologd/mecab-ipadic-neologd.git cd mecab-ipadic-neologd sudo bin/install-mecab-ipadic-neologd → 所要時間約13分 cd /etc sudo vim mecabrc # ここで:set pasteをし,aを押し,以下にコピペで変更する dicdir = /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd :wq で保存 -手書き文字認識(OCR)や画像処理系のBlockを動かす場合 cd git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git cd ~/opencv mkdir build cd build cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_OPENGL=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D OPENCV_GENERATE_PKGCONFIG=ON .. make -j7 → 所要時間約7分 sudo make install *** エラー対応集 [#ee6d4148] (10)「Ubuntu 20.04」のインストール項目が出ない場合、 -管理者powershellで以下コマンドを打ちインストールする curl.exe -L -o ubuntu-2004.appx https://aka.ms/wslubuntu2004 -エクスプローラーで「C:\Windows\System32」に行くと下の方に「Ubuntu 20.04」に似た名前のフォルダができているので、それをクリックしてインストールする --ubuntuのコンソール画面が出ればOK 参考「https://qiita.com/choco227/items/38c141b6b105d9a7cf56」 %%20.04前後のverだとpip installやBlockly操作が上手くいかない可能性%% (11)「E: Unable to locate package swig」の表示で,swigのインストールができない -以下のコマンドを試した後に再度「sudo apt install swig」を実行 git clone https://github.com/swig/swig.git 参考「https://askubuntu.com/questions/893932/sudo-apt-get-install-swig-on-ubuntu-14-04」 ***WSL2内でのBlockly環境構築 [#v88fa7b7] ダウンロードすべきファイルを以下のzipファイルにまとめたので、これをダウンロード&解答し、任意のフォルダに置く。~ #ref(20201118product.zip) エクスプローラーのパスのところで、\\wsl$と入力しEnter。アクセス許可がないと言われたら許可する。 #ref(ubuntu_dir.png,,70%) -これによって、Ubuntu(Blocklyサーバー側)のファイルにアクセスできる -以下のパスを辿る Ubuntu-20.04 > var > www > html Ubuntu-20.04 > usr > lib > cgi-bin 簡単アクセスのため、両方を右クリックで「クイックアクセスにピン止めする」~ #ref(ubuntu_copy.png,,50%) DLした「20201118product」にある「html」の中身を、「/var/www/html」に入れる。~ 「20201118product」にある「cgi-bin」の中身を「/usr/lib/cgi-bin」に入れる。 htmlにはBlocklyサイトを構成するファイル、cgi-binにはpythonで動かすデータ処理に関するファイルが入っている 次に以下のchmodコマンドでファイルのアクセス権限を変更する -Linuxでは管理者/準管理者グループ/外部ユーザの人に対してと、読み込み/書き込み/実行許可に対しての2種類設定する -r(読み込み許可)、w(書き込み許可)、x(実行許可)とし、r=4, w=2, x=1と表現する -例えば「chmod 755」は、後ろに指定したファイルに対し、管理者はr,w,x全て可能、準管理者グループはr,xが可能、外部ユーザもr,xが可能を意味する(「ll /usr/lib/」などを打つと、そのディレクトリ内のファイルがr,w,xが可能か確認できる) sudo chmod 777 /usr/lib/cgi-bin sudo chmod 777 /usr/lib/cgi-bin/kaiki*.cgi sudo chmod 777 /var/www/html 例題では「回帰分析ブロック」を動かすので、以下のコマンドで「kaiki~.cgi」の編集画面を開く -Blockly処理時にはpythonのプログラムをそのまま認識できないので、cgiファイルにpythonのコードを書き込むことでデータ処理できるようにしている sudo nano /usr/lib/cgi-bin/kaiki_Analyze.cgi sudo nano /usr/lib/cgi-bin/kaiki_keisu.cgi sudo nano /usr/lib/cgi-bin/kaiki_yosoku.cgi 上のコマンドで開いた後、以下の二つの部分のrthetaというところを先ほど設定した自分のユーザー名に変更する #!/home/rtheta/.pyenv/shims/python 「Ctrl+X」→「y」→「Enter」で保存する。 次のコマンドでcgiモジュールを有効にできる。これはcgi-binに入っているファイルを実行するためのmodを有効にしている。 sudo a2enmod cgid %%次に、CSVファイル入れるところ作る。%% %% cd%%~ %% mkdir kaiki%%~ %% sudo chmod 777 kaiki%% %%入れるとき拒否られたら次のコマンドをubuntuで。chmodで読み込みや書き込みを他の人からでもできるようにしている。%%~ %% sudo chmod 777 /var/www/html%%~ %% sudo chmod 777 /usr/lib/cgi-bin%%~ %% cgi-binなかったら次のコマンド。cgi-binディレクトリを作成している%%~ %% mkdir /usr/lib/cgi-bin%%~ %% その後以下を実行。ファイルの権限を変えてる。755にするのは、この後のウェブ上のサイトから他のパソコンからでも使えるようにするため。(しかし書き込みはできない。これについて知りたかったらchmodについて調べて)%%~ %% sudo chmod 755 /usr/lib/cgi-bin%%~ %% sudo chmod 755 /usr/lib/cgi-bin/kaiki.cgi%%~ %% python -m pip install pandas%%~ %% python -m pip install scikit-learn%%~ %%以下のコマンドでエディタ開ける。%%~ %% sudo nano /usr/lib/cgi-bin/kaiki.cgi%%~ %%上のコマンドで開いた後、以下の二つの部分のzetaというところを自分のUbuntuのユーザー名に変える%%~ %% #!/home/zeta/.pyenv/shims/python%%~ %% wine.to_csv('/home/zeta/kaiki/123456.csv', header=False, index=False)%%~ %%「Ctrl+X」→「y」→「Enter」で保存する。%%~ %%次のコマンドでCGIモジュールを有効にできる。これはcgi-binに入っているファイルを実行するためのmodを有効にしている。%%~ %% sudo a2enmod cgid%%~ ***Blocklyの実行[#ic4c479f] 次のコマンドをWSL2上で実行するとサーバーが立ち上がる。 sudo service apache2 restart 自分のWSL2のIPアドレスを調べるためにWSL2上で次のコマンドを実行する。 ifconfig #ref(ifco.PNG,,40%) WSL2のIPアドレスはeth0のinetのところに書かれているIPアドレスである。次に自分のWindowsでそのIPアドレスをGoogle Chromeに入力し移動すると、Blocklyを開くことができる。 -Google Chromeはキャッシュが残るため&COLOR(red){シークレットタブで開くこと}を推奨 --Google Chrome上で「Ctrl+shift+n」を押すことでシークレットタブが開ける~ --シークレットタブでブロックの更新が反映されないときは、通常タブで開いて更新されているか確認する #ref(blockly_index.png,,40%) ***ビジュアルプログラミングの例題(回帰分析) [#fef035eb] 以下のデータを用いる。 #ref(kaiki_keisu_yosoku.csv) -このCSVファイルは、数種類の説明変数と1つの目的変数から構成されたデータとなっている -このデータを「回帰Block」に入れることで、目的変数と説明変数の関係(関数)を予測する。 #ref(kaiki_data.png,,40%) -csvファイルの一行目はデータ数を表す。 -二行目は、回帰分析であれば、1~11列が説明変数、12列目が目的変数など、入力と出力のような関係を表す。 -三行目は、その列のデータのラベルである。文字であれば何でもよい。 -四行目は、その列のデータの型である。例えば、intやfloat、stringなどが入る。 -それ以下の行は、データである。 #ref(Block1.png,,40%) まず、「FILE_INPUT」から入力「CSV読み込み」ブロック、「ANALYZE→DIV1」から分析「回帰分析」ブロック(上図オレンジ)、「OUTPUT」から出力「CSV出力」ブロックを取り出す。 #ref(Block2.png,,60%) 赤ブロックの「CSVファイルを選択してください」をクリックして、先ほどのcsvを入れる -入れるとデータの中身(1599)が表示される -入力、分析、出力ブロックをパズルのように合体させ、上図の形を作る **【課題の進捗】 [#udebb2c6] 環境構築は終わり、ビジュアルプログラミングの例題(回帰分析)に取り組んだが、実行時に下の画像のように「Ajax失敗」と出て、エラーを解決できなかった。 ~ #ref(Block3.png,,60%) 中央の歯車をクリックし、ラベルリストに左のブロックのいずれかを入れる --「ラベルを一つ選択」を入れると一列を目的変数、別一列を説明変数とする単回帰分析になる --「ラベルを一つ選択」を複数入れると、それらの列を説明変数、一列を目的変数とする重回帰分析となる --「ラベルをまとめて選択」を入れると、ある列からある列を説明変数、一列を目的変数とする重回帰分析となる オレンジ右端で回帰予測をするか回帰係数を出力するかを選べる -例えば「ラベルをまとめて選択」にした場合、目的変数の欄にl(CSVのl列)、説明変数の欄にa~k(CSVのa~k列)と入れれば重回帰分析が行える ※自分のノートPCが原因だと思われる 単回帰or重回帰、回帰予測or回帰係数を選択したら、右上の「実行」をクリックする -出力ファイル保存画面が出るので保存 -出力ファイルを開くと回帰予測なら「Predictの列」、回帰係数なら別CSVファイルが新たにできているので、確認する 実行時に「Ajax失敗」と出る場合、下記のエラー対応を参照 ***Blockly実行時のエラー対応 [#a1100621] #ref(error_f12.png,,60%) (1)表面的なエラー対応 -Blocklyの画面で「F12キー」を押し、上図のディベロッパー画面を出す -右上の赤×を押すと、赤字のエラー文が出てくる -400番台の数字エラーなら、PC側のエラーを表し、赤字の文を見て対処する -500番台やその他のエラーはubuntu側のエラーなので(2)へ (2-1)内部的なエラー対応(ubuntu側) ubuntuで以下のコマンドを打つ vim /var/log/apache2/error.log -この「error.log」のファイル内にはBlockly操作で起こったエラーが記される -最下部(「↓キー」で移動)に最新のエラーが表示されているので、それを見て対処する (2-2)「error.log」に「(2)No such file or directory: AH01241: exec of '/usr/lib/cgi-bin/kaiki_Analyze.cgi' failed」が書かれている場合、 -「kaiki_Analyze.cgi」の1行目を正しいパスに変更する ファイルの編集 sudo nano /usr/lib/cgi-bin/kaiki_Analyze.cgi 開いたファイル内 #!/home/(ubuntuユーザ名)/.pyenv/shims/python (3)ファイルを修正したら以下でサーバを更新してBlocklyを開く sudo service apache2 restart -シークレットタブを一度閉じ、再度IPアドレスを入力して開くことを推奨 #ref(実行結果.png,,700x500) ~ ※課題は 4. だが、時間がない場合は 2. までできればOK ~~ ***課題の進捗 [#fef035eb] 環境構築は終わり、ビジュアルプログラミングの例題(回帰分析)に取り組んだが、実行したときに「Ajax失敗」と出て、エラーを解決できなかった。 ~ ※自分のノートPCが原因だと思われる
タイムスタンプを変更しない
[[専門ゼミ(戸田)]] *目次 [#dd2fe839] #CONTENTS **1. 目標 [#i67428c5] **【目標】 [#udebb2c6] ビジュアルプログラミングによるデータ処理を行う。Blocklyというオープンソースのビジュアルプログラミングを用いる。使用するプログラミング言語は主にJavascript/Pythonである。 **2. 環境構築及び実行 [#e321d51d] **【参考資料】 [#udebb2c6] 以下のページを見ながら環境構築・課題を行った。~ [[ビジュアル・プログラミング]] ***必要なもの [#j04453c8] -パソコン(OSはいずれでもよいがLinuxで運用するのが普通だと思う) - - - - ***Windows SubSystem for Linux2(WSL2)(Linux、UNIXでも可) [#v743175a] とりあえず、WSL2のインストールから始める。以下のサイト見ながらでできる。 https://docs.microsoft.com/ja-jp/windows/wsl/install-win10 一応ここにその内容を記す。まず、管理者権限でPowerShellを開き、次のコマンドを入力する。 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 次に、同じくpowershellでwindowsのどのシステムを使用しているか次のコマンドで確認する。 systeminfo | Select-String "システムの種類" → x64 や ARM64 などが表示される %%コマンドプロンプトの場合はこれ%%~ %% systeminfo | find "システムの種類"%% 次にwindowsのバージョンとビルド番号を確認する。~ Windows ロゴ キー + R キー を押して、「 winver 」と入力し、 [OK] を選択する。 (または、Windows コマンド プロンプトで ver コマンドを入力)。 #ref(ver_build.png,,40%) 上図が出るので、適切なバージョンを満たしているか確認する -x64 システムの場合: バージョン 1903 以降、 ビルド 18362 以上。 -ARM64 システムの場合: バージョン 2004 以降、 ビルド 19041 以上。 --18362 より前のビルドは WSL 2 をサポートしていません。 Windows 更新アシスタントを使用して、お使いのバージョンの Windows を更新します。Windows 10 バージョン 1903 または 1909 を実行している場合は、Windows メニューから [設定] を開き、[更新とセキュリティ] に移動して、[更新プログラムのチェック] を選択します。 ビルド番号は、18362.1049+ または 18363.1049+ で、マイナー ビルド番号は .1049 より大きい必要があります。windowsのマイナービルド番号を満たしていない場合は、windowsマークをクリックして、歯車マークをクリックして設定を開きWindows Updateを行う。 WSL 2 をインストールする前に、" 仮想マシン プラットフォーム " オプション機能を有効にする必要がある。~ 管理者として PowerShell を開き、以下を実行する。 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart PCを&size(20){&color(red,white){再起動};};して WSL のインストールを完了し、WSL 2 に更新する。 次にWSL2Linuxカーネル更新プログラムパッケージをダウンロードする。システムがx64の場合はx64、ARM64の場合はARM64をクリックする。 [[x64:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi]] [[ARM64:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi]] ダウンロード後、ダウンロードしたファイルを実行する。 次に、次のコマンドで、新しい Linux ディストリビューションをインストールする際の既定のバージョンとして WSL 2 を設定する。 wsl --set-default-version 2 次に、Ubuntu 20.04 LTSをMicrosoft Storeからインストールする。 下のリンクに行って入手を選択する。 [[Ubuntu 20.04 LTS:https://www.microsoft.com/store/apps/9n6svws3rx71]] 複数のデバイスで使うか聞かれたら必要ないと答える。 -ubuntuのインストールボタンが出ない場合は、下記のエラー対応集(10)へ その後、起動し、ユーザー名とパスワードを設定する。どちらも覚えるか&size(20){&color(red,white){記録};};しておく。 --このユーザー名およびパスワードは、インストールする Linux ディストリビューションごとに固有であり、Windows ユーザー名とは関係ありません。 ユーザーがユーザー名およびパスワードを作成すると、そのアカウントがディストリビューションの既定のユーザーとなり、起動時に自動的にサインインされます。 このアカウントは、Linux 管理者と見なされ、sudo (Super User Do) 管理コマンドを実行できます。 ***WSL2のBlocklyのための環境構築 [#s827ee10] ここから、Ubuntuで作業する。Ubuntuで次のコマンドを実行する。 sudo apt update sudo apt -yV upgrade WSL2を再起動する(Ubuntuを閉じて再度開く)。再起動後、次のコマンドを実行する。 sudo apt install apache2 apache2 -v -このコマンドはapache2というWebサーバーソフトウェアをインストールしている。インターネット上で企業や官公庁の公式サイトで情報を入手したり、動画やSNSを利用したりする場合には、必ずWebサーバーソフトウェアのお世話になる。そのうち半数でApacheが稼働している。 ***WSL2へのpyenv(python)のインストール [#m9448d25] 以下のコマンドはpythonを使用するために必要な機能をインストールしている。 sudo apt install -y build-essential libffi-dev zlib1g-dev liblzma-dev libbz2-dev libreadline-dev libsqlite3-dev git net-tools libssl-dev ここでWSL2(Ubuntu)を再起動。 次に以下のコマンドでpyenv本体のダウンロードとインストールをする。 git clone https://github.com/pyenv/pyenv.git ~/.pyenv 次に、以下のコマンドで.bashrcの更新をする。 echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc source ~/.bashrc WSL2(Ubuntu)を再起動。再起動後に次へ 以下のコマンドでpyenvがインストールできたかを確認(pyenvはLinuxにおいて、Pythonの実行環境を管理するツール。つまりいろんなバージョンのpythonを管理する有能) pyenv -v 以下のコマンドでpythonのインストール pyenv install 3.8.5 # 例えば,version 3.8.5 pyenv versions # インストール済みのpyenvのバージョンを確認できる pyenv global 3.8.5 以下必要なライブラリのインストール python -m pip install pyocr matplotlib pydotplus pulp pandas scikit-learn graphviz opencv-python docopt sudo apt install tesseract-ocr libtesseract-dev tesseract-ocr-jpn sudo apt-get dist-upgrade sudo apt-get install build-essential sudo apt-get update sudo apt-get install graphviz mecab libmecab-dev mecab-ipadic-utf8 cd ~ sudo apt install swig →エラーが出たらエラー対応集(11)へ sudo apt install python3-pip sudo pip3 install mecab-python3 sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev https://www.engineer-log.com/entry/2019/10/31/tesseract5-install 下記のライブラリは必要に応じてインストールする(専門ゼミでは飛ばす) -自然言語処理系のBlockを動かす場合 git clone https://github.com/neologd/mecab-ipadic-neologd.git cd mecab-ipadic-neologd sudo bin/install-mecab-ipadic-neologd → 所要時間約13分 cd /etc sudo vim mecabrc # ここで:set pasteをし,aを押し,以下にコピペで変更する dicdir = /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd :wq で保存 -手書き文字認識(OCR)や画像処理系のBlockを動かす場合 cd git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git cd ~/opencv mkdir build cd build cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_OPENGL=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D OPENCV_GENERATE_PKGCONFIG=ON .. make -j7 → 所要時間約7分 sudo make install *** エラー対応集 [#ee6d4148] (10)「Ubuntu 20.04」のインストール項目が出ない場合、 -管理者powershellで以下コマンドを打ちインストールする curl.exe -L -o ubuntu-2004.appx https://aka.ms/wslubuntu2004 -エクスプローラーで「C:\Windows\System32」に行くと下の方に「Ubuntu 20.04」に似た名前のフォルダができているので、それをクリックしてインストールする --ubuntuのコンソール画面が出ればOK 参考「https://qiita.com/choco227/items/38c141b6b105d9a7cf56」 %%20.04前後のverだとpip installやBlockly操作が上手くいかない可能性%% (11)「E: Unable to locate package swig」の表示で,swigのインストールができない -以下のコマンドを試した後に再度「sudo apt install swig」を実行 git clone https://github.com/swig/swig.git 参考「https://askubuntu.com/questions/893932/sudo-apt-get-install-swig-on-ubuntu-14-04」 ***WSL2内でのBlockly環境構築 [#v88fa7b7] ダウンロードすべきファイルを以下のzipファイルにまとめたので、これをダウンロード&解答し、任意のフォルダに置く。~ #ref(20201118product.zip) エクスプローラーのパスのところで、\\wsl$と入力しEnter。アクセス許可がないと言われたら許可する。 #ref(ubuntu_dir.png,,70%) -これによって、Ubuntu(Blocklyサーバー側)のファイルにアクセスできる -以下のパスを辿る Ubuntu-20.04 > var > www > html Ubuntu-20.04 > usr > lib > cgi-bin 簡単アクセスのため、両方を右クリックで「クイックアクセスにピン止めする」~ #ref(ubuntu_copy.png,,50%) DLした「20201118product」にある「html」の中身を、「/var/www/html」に入れる。~ 「20201118product」にある「cgi-bin」の中身を「/usr/lib/cgi-bin」に入れる。 htmlにはBlocklyサイトを構成するファイル、cgi-binにはpythonで動かすデータ処理に関するファイルが入っている 次に以下のchmodコマンドでファイルのアクセス権限を変更する -Linuxでは管理者/準管理者グループ/外部ユーザの人に対してと、読み込み/書き込み/実行許可に対しての2種類設定する -r(読み込み許可)、w(書き込み許可)、x(実行許可)とし、r=4, w=2, x=1と表現する -例えば「chmod 755」は、後ろに指定したファイルに対し、管理者はr,w,x全て可能、準管理者グループはr,xが可能、外部ユーザもr,xが可能を意味する(「ll /usr/lib/」などを打つと、そのディレクトリ内のファイルがr,w,xが可能か確認できる) sudo chmod 777 /usr/lib/cgi-bin sudo chmod 777 /usr/lib/cgi-bin/kaiki*.cgi sudo chmod 777 /var/www/html 例題では「回帰分析ブロック」を動かすので、以下のコマンドで「kaiki~.cgi」の編集画面を開く -Blockly処理時にはpythonのプログラムをそのまま認識できないので、cgiファイルにpythonのコードを書き込むことでデータ処理できるようにしている sudo nano /usr/lib/cgi-bin/kaiki_Analyze.cgi sudo nano /usr/lib/cgi-bin/kaiki_keisu.cgi sudo nano /usr/lib/cgi-bin/kaiki_yosoku.cgi 上のコマンドで開いた後、以下の二つの部分のrthetaというところを先ほど設定した自分のユーザー名に変更する #!/home/rtheta/.pyenv/shims/python 「Ctrl+X」→「y」→「Enter」で保存する。 次のコマンドでcgiモジュールを有効にできる。これはcgi-binに入っているファイルを実行するためのmodを有効にしている。 sudo a2enmod cgid %%次に、CSVファイル入れるところ作る。%% %% cd%%~ %% mkdir kaiki%%~ %% sudo chmod 777 kaiki%% %%入れるとき拒否られたら次のコマンドをubuntuで。chmodで読み込みや書き込みを他の人からでもできるようにしている。%%~ %% sudo chmod 777 /var/www/html%%~ %% sudo chmod 777 /usr/lib/cgi-bin%%~ %% cgi-binなかったら次のコマンド。cgi-binディレクトリを作成している%%~ %% mkdir /usr/lib/cgi-bin%%~ %% その後以下を実行。ファイルの権限を変えてる。755にするのは、この後のウェブ上のサイトから他のパソコンからでも使えるようにするため。(しかし書き込みはできない。これについて知りたかったらchmodについて調べて)%%~ %% sudo chmod 755 /usr/lib/cgi-bin%%~ %% sudo chmod 755 /usr/lib/cgi-bin/kaiki.cgi%%~ %% python -m pip install pandas%%~ %% python -m pip install scikit-learn%%~ %%以下のコマンドでエディタ開ける。%%~ %% sudo nano /usr/lib/cgi-bin/kaiki.cgi%%~ %%上のコマンドで開いた後、以下の二つの部分のzetaというところを自分のUbuntuのユーザー名に変える%%~ %% #!/home/zeta/.pyenv/shims/python%%~ %% wine.to_csv('/home/zeta/kaiki/123456.csv', header=False, index=False)%%~ %%「Ctrl+X」→「y」→「Enter」で保存する。%%~ %%次のコマンドでCGIモジュールを有効にできる。これはcgi-binに入っているファイルを実行するためのmodを有効にしている。%%~ %% sudo a2enmod cgid%%~ ***Blocklyの実行[#ic4c479f] 次のコマンドをWSL2上で実行するとサーバーが立ち上がる。 sudo service apache2 restart 自分のWSL2のIPアドレスを調べるためにWSL2上で次のコマンドを実行する。 ifconfig #ref(ifco.PNG,,40%) WSL2のIPアドレスはeth0のinetのところに書かれているIPアドレスである。次に自分のWindowsでそのIPアドレスをGoogle Chromeに入力し移動すると、Blocklyを開くことができる。 -Google Chromeはキャッシュが残るため&COLOR(red){シークレットタブで開くこと}を推奨 --Google Chrome上で「Ctrl+shift+n」を押すことでシークレットタブが開ける~ --シークレットタブでブロックの更新が反映されないときは、通常タブで開いて更新されているか確認する #ref(blockly_index.png,,40%) ***ビジュアルプログラミングの例題(回帰分析) [#fef035eb] 以下のデータを用いる。 #ref(kaiki_keisu_yosoku.csv) -このCSVファイルは、数種類の説明変数と1つの目的変数から構成されたデータとなっている -このデータを「回帰Block」に入れることで、目的変数と説明変数の関係(関数)を予測する。 #ref(kaiki_data.png,,40%) -csvファイルの一行目はデータ数を表す。 -二行目は、回帰分析であれば、1~11列が説明変数、12列目が目的変数など、入力と出力のような関係を表す。 -三行目は、その列のデータのラベルである。文字であれば何でもよい。 -四行目は、その列のデータの型である。例えば、intやfloat、stringなどが入る。 -それ以下の行は、データである。 #ref(Block1.png,,40%) まず、「FILE_INPUT」から入力「CSV読み込み」ブロック、「ANALYZE→DIV1」から分析「回帰分析」ブロック(上図オレンジ)、「OUTPUT」から出力「CSV出力」ブロックを取り出す。 #ref(Block2.png,,60%) 赤ブロックの「CSVファイルを選択してください」をクリックして、先ほどのcsvを入れる -入れるとデータの中身(1599)が表示される -入力、分析、出力ブロックをパズルのように合体させ、上図の形を作る **【課題の進捗】 [#udebb2c6] 環境構築は終わり、ビジュアルプログラミングの例題(回帰分析)に取り組んだが、実行時に下の画像のように「Ajax失敗」と出て、エラーを解決できなかった。 ~ #ref(Block3.png,,60%) 中央の歯車をクリックし、ラベルリストに左のブロックのいずれかを入れる --「ラベルを一つ選択」を入れると一列を目的変数、別一列を説明変数とする単回帰分析になる --「ラベルを一つ選択」を複数入れると、それらの列を説明変数、一列を目的変数とする重回帰分析となる --「ラベルをまとめて選択」を入れると、ある列からある列を説明変数、一列を目的変数とする重回帰分析となる オレンジ右端で回帰予測をするか回帰係数を出力するかを選べる -例えば「ラベルをまとめて選択」にした場合、目的変数の欄にl(CSVのl列)、説明変数の欄にa~k(CSVのa~k列)と入れれば重回帰分析が行える ※自分のノートPCが原因だと思われる 単回帰or重回帰、回帰予測or回帰係数を選択したら、右上の「実行」をクリックする -出力ファイル保存画面が出るので保存 -出力ファイルを開くと回帰予測なら「Predictの列」、回帰係数なら別CSVファイルが新たにできているので、確認する 実行時に「Ajax失敗」と出る場合、下記のエラー対応を参照 ***Blockly実行時のエラー対応 [#a1100621] #ref(error_f12.png,,60%) (1)表面的なエラー対応 -Blocklyの画面で「F12キー」を押し、上図のディベロッパー画面を出す -右上の赤×を押すと、赤字のエラー文が出てくる -400番台の数字エラーなら、PC側のエラーを表し、赤字の文を見て対処する -500番台やその他のエラーはubuntu側のエラーなので(2)へ (2-1)内部的なエラー対応(ubuntu側) ubuntuで以下のコマンドを打つ vim /var/log/apache2/error.log -この「error.log」のファイル内にはBlockly操作で起こったエラーが記される -最下部(「↓キー」で移動)に最新のエラーが表示されているので、それを見て対処する (2-2)「error.log」に「(2)No such file or directory: AH01241: exec of '/usr/lib/cgi-bin/kaiki_Analyze.cgi' failed」が書かれている場合、 -「kaiki_Analyze.cgi」の1行目を正しいパスに変更する ファイルの編集 sudo nano /usr/lib/cgi-bin/kaiki_Analyze.cgi 開いたファイル内 #!/home/(ubuntuユーザ名)/.pyenv/shims/python (3)ファイルを修正したら以下でサーバを更新してBlocklyを開く sudo service apache2 restart -シークレットタブを一度閉じ、再度IPアドレスを入力して開くことを推奨 #ref(実行結果.png,,700x500) ~ ※課題は 4. だが、時間がない場合は 2. までできればOK ~~ ***課題の進捗 [#fef035eb] 環境構築は終わり、ビジュアルプログラミングの例題(回帰分析)に取り組んだが、実行したときに「Ajax失敗」と出て、エラーを解決できなかった。 ~ ※自分のノートPCが原因だと思われる
テキスト整形のルールを表示する