#author("2020-01-30T07:58:13+00:00","","")
#author("2020-01-30T08:26:21+00:00","","")
[[技術資料]]

*目次 [#e890b3d5]
1. 目標~
2. 必要なソフトウェアのインストール~
3. データベースの作成~
4.データベースからコーパスの作成~
5. 学習モデルの作成~
6. 学習モデルを用いた支援システムの作成~

関連:~
[[テキストマイニング入門(小野田さん)>https://www.pu-toyama.ac.jp/IS/IIE/pu.toyama.IS.IIE/lab_log/wiki_lab.php?%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%9E%E3%82%A4%E3%83%8B%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80]]~
[[スクレイピング・クローリング入門(小野田さん)>https://www.pu-toyama.ac.jp/IS/IIE/pu.toyama.IS.IIE/lab_log/wiki_lab.php?%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0%E3%83%BB%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80]]~
[[スクレイピング(沼田さん)>https://www.pu-toyama.ac.jp/IS/IIE/pu.toyama.IS.IIE/lab_log/wiki_lab.php?%E6%B2%BC%E7%94%B0/%E5%B0%82%E9%96%80%E3%82%BC%E3%83%9F#l5e8c5b0]]



環境: windows  python3

**1. 目標 [#i67428c5]
特許データを収集して学習させることで, 新たな発明案を提案するシステムを開発する.

**2. 必要なソフトウェアのインストール [#kbde4fb5]

本実験ではGPUマシンが必要なため, Teratermを用いて研究室のGPUマシンにアクセスする

Teratermは以下のページを参考にインストールする.

[[Teratermのインストール方法>https://eng-entrance.com/teraterm-install]]

#ref(zu1.png)
画像のIPアドレスを入力.(※変更される場合があるので注意。)

#ref(zu2.png)
パスワードは渡辺に聞く.

以下を入力して、anacondaの環境の設定を進める

 wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh

 bash Anaconda3-2019.10-Linux-x86_64.sh

指示に従ってインストールしていく

ただし以下の質問はnoで答える

installation finished.
Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]

パスを反映させてanacondaを使えるようにする
 source ~/.bashrc

*** 環境構築 [#jf430a92]

以下のコマンドでconda仮想環境の作成ができます。
 conda create -n [仮想環境名] python=[pythonのバージョン]
平松は仮想環境y名=hikitugiemv バージョン=3.6

必要なパッケージをここからインストールする
#ref(requirements.txt);

srcディレクトリを作成、以下の3つを入れる
#ref(mongo_helper.py);
#ref(patent_crawler.py);
#ref(scp.py);

作った仮想環境を実行可能な状態にする

 pip install -r requirements.txt

足りないものがあればpip install hoge でインストールする
足りないものがあればpip install numpy cython memory-profiler でインストールする

英語用形態素解析機punktをインストール(pythonコマンド上で実行)~
分かち書き(word_tokenize)と 品詞の取得(pos_tag)~

 import nltk

 nltk.download('punkt')
 nltk.download('averaged_perceptron_tagger')



ctrl+dでpythonから抜ける

英語の言語処理用辞書をインストール
 python -m spacy download en_core_web_sm

termextractをインストール(pipに対応していないため)
 wget http://gensen.dl.itc.u-tokyo.ac.jp/soft/pytermextract-0_01.zip

zipファイルを解凍する 
 unzip pytermextract-0_01.zip

 cd pytermextract-0_01

 python setup.py install




**3. データベースの作成 [#g7469583]

今回は小野田の構築したMongoDBを利用する。接続情報は以下の通り。~
IPアドレス:192.168.0.116~
ポート番号:27017~


自分でインストールする場合~
参考~
[[(Ubuntu 18.04 に MongoDB の最新版を apt インストールする)>https://xn--o9j8h1c9hb5756dt0ua226amc1a.com/?p=3370]]

まずいかの通りほしいキーワードのリストをtxtファイルで作成(著者はdataディレクトリのwordlist.txtという名前で保存した)

 roboto
 AI
 IoT
 time machine



MongoDBの環境ができたら、以下のコマンドを実行して、特許データのクロールを行う。
 python patent_crawler.py ../data/wordlist.txt

実行結果は以下のとおり
#ref(output.png)

**4. データベースからコーパスの作成 [#u5fa890f]


 
**5. 学習モデルの作成 [#gc81f11e]

**6. 学習モデルを用いた支援システムの作成 [#z7d853e7]


~
~
~
~

~
~
~
~

~
~
~
~


(基本的に山元さんの環境に合わせて進めていく。)
~
~
ディレクトリを作成(今回は"sample"という名前)、~
drive 3つダウンロード、入れる
#ref(get333.py);
#ref(index_main.html);
#ref(KeyWords.ipynb);
~

今回は、windows powershellで進めた。

 python get333.py
~

使用するchromeのバージョンをそろえる必要があるので、以下インストール

 pip install selenium


 pip install chromedriver-binary==78.0.3904.105

(参考:[[ [selenium向け] ChromeDriverをpipでインストールする方法>https://qiita.com/hanzawak/items/2ab4d2a333d6be6ac760]] )


"link", "title"というファイルが作成される

link: 検索結果のURLのリスト
#ref(link.PNG);
~
title:検索ページのタイトルのリスト 
#ref(title.PNG);


~
Anacondaから、jupyer notebook を用いて作業を行う。

([[Windowsに「Jupyter Notebook」をインストールして手軽にPythonを使い始める方法>https://qiita.com/hiro0217/items/b15799cd2760c7864636]])

~

chromeで開くと、「メモリ不足で開けません」と表示される。今回はedgeで起動し作業を進める。 

~

KeyWords.ipynb を開く。
~
#ref(jupyter.PNG);

上のセルから順に実行していく(選択し、Shift+Enter)

~
途中でエラーが発生する毎に処理が必要(必要なプログラムがインストールされていない(mecab,janome等)、ファイルのパスが異なるなど) 
~
~
*** 実行結果 [#qd54fe0d]
~
・形態素解析
#ref(keitaisokaiseki.PNG)
~
#ref(gazou1.png);
~
#ref(gazou2.png);
~
~
~
~
~
~

*** 3Dネットワーク図を表示 [#q4e1fdb5]

以下をダウンロード、同ディレクトリに入れる
#ref(KeyWords.ipynb);
#ref(three.js);
#ref(three-spritetext.js);
#ref(get333.py);
#ref(index_main.html);
#ref(system-Copy5.ipynb);
~

jupyerで KeyWords.ipynb を開く、実行(>>)~

miserables.js(隣接行列のデータを3Dネットワーク図に使えるようにしたもの)が作成されていることを確認する~

以下をダウンロード、解凍
#ref(3d-force-graph-master-20200115T023432Z-001.zip);
~

3d-force-graph-master/example/text-nodes の中にある miserables.js を、先ほど作成されたものに置き換える。
~
~
同ファイル内にある index.html をjupyerで開くと、次のような3Dネットワーク図が表示される。
(線の太さがワードの関連度weight、線上を流れる点が向き)

#ref(gazou3.PNG);


~
~
(最長距離を求める)
~
参考
~
([[大自然言語時代のための、文章要約>https://qiita.com/icoxfog417/items/d06651db10e27220c819]])

~
~
~
~
~
~
~
~
~
~
~
~
~
~


**5. 脳波の測定の準備(Windows, Unix) [#sc954391]

Macは以下を参考に
https://www.pu-toyama.ac.jp/IS/IIE/local_pages/lab_log/wiki.php?plugin=attach&refer=OpenBCI&openfile=OpenBCI%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%95%E3%82%9A%EF%BC%88macOS%29.pdf


以下のサイトでインストール
http://openbci.com/index.php/downloads


#ref(Op_usb.png)

USB ドングルをコンピュータ側にでっぱりをスライドさせ、青いライトを点灯させる

#ref(Op_kiban.png)

Cyton ボードのスイッチは、上にスライドで PC 接続、下にスライドで Bluetooth 接続となる

今回はPC接続なので上にスライドする




ここから先はWindowsとUbuntuでやり方が違う

***Windowsの場合 [#bd361783]

#ref(GUI設定.png,,50%)


OpenBCI_GUI.exeを開いて


(1) LIVE from (Cyton)


(2) Serial(from Dongle)


(3) COM3


(4) 8CHANNELS


(5) START SYSTEM


以上の流れで実行できる

・エラーが出たときはOpenBCIHub.exeを起動してからOpenBCI_GUI.exeを起動する

***UNIXの場合 [#x7f51f32]

シリアルポートにアクセスするのに十分な特権でOpenBCIアプリケーションを起動する

OpenBCIソフトウェアをホームフォルダに展開したと仮定すると、以下のコマンドで実行できる~
 cd ~/application.linux64 && sudo bash OpenBCI_GUI

(1) LIVE from (Cyton)


(2) Serial(from Dongle)


(3) SERIAL / COM PORT は一番上のやつ


(4) 今回は8CHANNELS


(5) START SYSTEM


以上の流れで実行できる

** [#l42e4c2f]

・装着するときは電池がついている方を後ろ向きにする

・DATA LOG FILE でファイルを変更できる(デフォルトで日付)

・実行できる状態か確かめるときは、SERIAL / COM PORT の横の矢印から確認できる

・GET CHANNEL と STATUS が Success となっていれば実行可能

・脳波がとれない場合はそのチャンネルの頭のねじを回すことで調節する(2番はとれなかった)

START SYSTEM を実行すると以下のような画面になり、左上の START DATA STREAM で測定開始、STOP で測定終了となる


#ref(OpenBCI_start.png,,30%)

***システム(この項目は、直接USBでデータを渡したほうが早い) [#b9ad187b]



作業する場所にフォルダを作り、以下のプログラムと画像を入れる

#ref(slide.py)
#ref(test.py)

#ref(Black_image.png,,20%)
#ref(guu.png,,20%)
#ref(paa.png,,20%)
#ref(tyoki.png,,20%)
#ref(white_image.png,wrap,,20%) 

そのフォルダの中にcountというフォルダを作り、以下の画像を入れる

#ref(one.png,,20%) 
#ref(two.png,,20%) 
#ref(three.png,,20%)


** [#wbc49ea6]

python3でやる

pipのインストールはこのサイトの「pipのインストール方法」を見てやる

モジュールのインストールは以下のコマンドで

 pip3 install opencv-python

 sudo pip3 install pyautogui

 sudo pip3 install xlib

 pip3 install matplotlib

 sudo apt-get install python3-tk

 sudo apt-get install python-scipy

 pip3 install scipy

 pip install scikit-learn

 pip3 install pandas

 pip3 install sklearn

プログラムslide1.2.pyについて~
#ref(test1++.png)

pyautogui.click(141,101)のところはとりあえずそのままで~
下線部のPATHは書き換える~

実行方法

slide.pyのプログラムでデータ収集

test.pyのプログラムで収集したデータから機械学習させるという流れ


1.~

 cd ~/application.linux64 && sudo bash OpenBCI_GUI

でOpenBCIを起動しハードのセットアップを行う

2.~
ターミナルの新しいタブを開いてslide.pyのあるところに移動し、~
 python3 slide.py
で実行できる~

**10. ジャンケンの出す手の予測 [#u3c4a89d]

OpenBCIのスタートの位置にpyautogui.click(x,y)を合わせないといけないのでエラーが出た場合は以下のプログラムで位置を確かめられる~

#ref(click.png)~
このプログラムを実行したときのマウスカーソルの位置がPoint(x=588, y=482)などと表示される~

実行に成功すると3,2,手の順でスライドが流れるのでその手に勝つ手を後出しで出す(100回)~

ターミナル上に遅延時間が表示されているので記録しておく

終わったらOpenBCIを停止して、applicasion.linux64のSavedDataのところにあるテキストデータの名前を変更する~

3.ここでもう一つのプログラムtest.pyを使う

各々で変更してほしい点は以下の点である(120行前後)
#ref(test2.png)
yamamoto_1.txtのところは2で名前を変えたテキストデータの名前にする、

隣の数字は2で記録した遅延時間なのでその数字を入れる

赤丸の部分は2でターミナル上に表示された数列をコピー&ペーストする

実行結果の例を示す

#ref(kekka.png)

これは取得した100個のデータから最初の40個のデータを訓練データとして、次の40個のデータを予測したときの正解率が37.5%であることを表している

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS