Web・スクレイピング・自然言語処理と3Dグラフ構築(1月12日)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[専門ゼミ(蒲田)]]
#contents
* 行うこと [#vbb3086e]
-WEBサイトから文章を自動取得(スクレイピング)
-自然言語処理(形態素解析)で取得した文章を単語に分解
-単語間の共起頻度を計算し、隣接行列を作成する
-隣接行列から3Dグラフを生成する
** キーワード [#y158d4a1]
-スクレイピング
--Webサイトから何かしらのデータを自動で取ってくる技術のこと
-テキストマイニング
--文章中の単語どうしのつながりなどを分析し、有用な情報を...
- Jupyter notebook
--ブラウザ上で開発する統合開発環境
--プログラム(主にPython)を対話的に実行できる
*前準備 [#t210542d]
**(1)添付フォルダのダウンロード [#p76f8c3c]
//#ref(Websc3D.zip,,添付フォルダ1)
#ref(Websc3Dgraph.zip,,添付フォルダ)
フォルダ内のファイルについて
-keywords.csv
--スクレイピングする際に必要なキーワードを入れるcsvファイル
-stopwprd.txt
--文章から除外する指示語や代名詞を載せたリスト
-4つのJavaScript(js)ファイル
--3Dグラフがhtml上で動作するのに必要なもの
-Server.py
--Jupyterで作成したグラフ情報をhtmlに送るためのもの
-web3D.html
--3Dグラフを描画する場所
-web_tmining3dg.jpynb
--テキストマイニングを行うJupyterファイル
-(neologd内)NEologd.20200820-u.dic(必要に応じて配布する)
--文章を単語に分解する際に参照する辞書
**(2)pythonからjupyterインストール [#p8f1dfa4]
-コマンドプロンプトでpythonのパスの通りを確認
python -V
-jupyterをインストール
pip install jupyter environment_kernels
-jupyter起動
jupyter notebook
***Anacondaを使っている場合 [#xa241e71]
Anacondaプロンプトを開き、以下の手順でjupyterをインストール
-(base)が表示されている状態(base環境でログイン)で、3Dグラ...
conda create -n graph python=3.7.13 -y (graphは仮想環境名)
-作成した環境に切り替える(ログイン)
conda activate graph
-jupyterをインストール
pip install jupyter environment_kernels
-pandasもインストールしておく
pip install pandas
**(3)プログラム編集ページの起動 [#q1ea3350]
***1.起動後のホーム画面からDLしたフォルダ(Websc3Dgraph)を...
#ref(3DGraph-pre.png,,40%)~
-開くと今回実行するプログラムが表示される
~
#ref(3DGraph-pre2.png,,40%)
-jupyterではプログラムを分割し、一行単位でプログラムの挙...
→システム開発(or誰かが作ったプログラムの確認)をするときに...
-今回はプログラムを20処理分に分割してあるので、順番に実行...
~
*プログラム実行手順 [#d2478c54]
**操作方法と注意事項 [#l7f5c18a]
-Shift + Enterで実行できる
-処理中は左上のマークが[*]となり、終わると[1]のような番号...
-実行のたびに番号が加算されていく(番号を頼りにどこまで実...
-jupyterを動かしているプロンプトで「Ctrl + C」orプロンプ...
-基本はプログラムを一つずつ実行することになる
--コメントアウトに実行順が書かれている
--実行前にやること、実行時のエラー対応、処理の補足説明を...
//-importでno moduleエラーが出ると思うのでpip installして...
//-jupyter画面左上の+でコードを書くセルを出せるので、そこ...
//入れるもの
//scipy
//requests_oauthlib
//スクレイピング用
//selenium
//chromedriver_binary
//bs4
//lxml
//自然言語処理用
//emoji
//nltk
//MeCab
//3Dグラフ用
//networkx
//Server.py起動用
//flask
//flask_cors
** #1 実行時 [#r53ffa6b]
-requirements.txt内に記載のモジュールをpipインストール
-実行中に「No module named ~」と出るなら追加インストール
!pip install ~
** #4の補足 [#v0c92b07]
-以下のようなcsvを読み込んでいる
#ref(3DGraph0.png,,40%)
-属性データには「大学生・夫婦」などの人・物、検索キーワー...
-これらのキーワードをもとにGoogle検索→スクレイピングして...
** #5(スクレイピング)実行時 [#ibf3ac9e]
-下のようなエラーが出る場合(ChromeでJupyterを開いた場合)
--ChromeDriverのバージョンがChromeブラウザよりも古いこと...
SessionNotCreatedException: Message: session not created...
Current browser version is 92.0.4515.131 with binary pat...
Cheomeブラウザと同じバージョンをpip install(ver.88→ver.92...
!pip install chromedriver-binary==92.0.4515.131
おそらく赤字でエラーが出る
ERROR: Could not find a version that satisfies the requi...
ERROR: No matching distribution found for chromedriver-b...
バージョンが列記されると思うので、一番近いバージョンをイ...
!pip install chromedriver-binary==92.0.4515.107.0 (2023/...
~
-逆パターンでChromeDriver(ver.93)がChromeブラウザ(ver.92....
--その場合もブラウザと同じバージョンのChromeDriverをイン...
!pip install chromedriver-binary==92.0.4515.107.0
*** #5の補足 [#v65e3304]
-csvに入れたキーワードで自動検索する処理を行う~
-GoogleトップのHTMLで検索窓を実装しているタグ(qというname...
#ref(3DGraph1.png,,40%)
~
-#3のrankinng関数を呼び出し,検索結果のwebサイトのリンク...
(→どちらもtF2Cxcというclassタグに入っているので,そこを見...
#ref(3DGraph2.png,,40%)
** #6の補足 [#r0f3d2c7]
-保存したリンク先(links.txt)のWebサイトに飛び,文章をスク...
--最終的に1つのテキストファイルに文章が保存される(webtext...
** #8の実行前にやること [#hf17a28b]
-Mecab(形態素分析を行うモジュール)をインストールする(リン...
--#1でもPythonのMeCabをpipしたが、PC本体にも入れる必要が...
https://github.com/ikegami-yukino/mecab/releases/tag/v0....
-パスを通しておく(システム環境変数の編集で変数Pathを編集...
#ref(3DGraph3-1.png,,60%)
-新規でmecab.exeがあるパスを追加する
C:\Program Files\MeCab\bin\
~
#ref(3DGraph3.png,,60%)
*** MeCabを試す(ここは飛ばしても良い) [#nb96e344]
-試しにmecabと打った後、「形態素解析」と打ってみる
--何か出てEOSが表示されていればOK
-pythonでもmecabを試す
--下図の4行をJupyterにコピペして態素解析結果が出ればOK
import sys
import MeCab
m = MeCab.Tagger ("-Ochasen")
print(m.parse ("東京特許許可局"))
#ref(3DGraph3-2.png,,40%)
~
** #8の実行前にやること2(辞書の更新)[#q0bc128b]
#8でやっていること:文章から不必要な文字列を除去し,Mecab...
-インストールしたMecabには古い辞書しか入っていないので、N...
//-C:\Program Files\MeCab\dic 内に配布フォルダ内dicの中の...
//--MeCabをPCにインストールすると基本Program Filesの中に...
//#ref(3DGraph4.png,,40%)
-GoogleDrive(iie.lab.tpu.1920)の平松さんのページに行き、...
-解凍したneologdの中身のmecab-ipadic-neologdをdicのフォル...
#ref(dic1.png,,40%)
--dicの中でipadic-UTF8を作成しipadicの中身を全部コピぺする
--同様に空のフォルダneologdも作成する
-管理者権限でコマンドプロンプトを起動し(管理者として実行)...
cd "c:\Program Files\MeCab\dic\ipadic-UTF8"
mecab-dict-index -f utf-8 -t utf-8
#ref(dic2.png,,40%)
-Neologdの辞書をコンパイルする
cd "c:\Program Files\MeCab\dic\mecab-ipadic-neologd\seed"
mecab-dict-index -d "c:\Program Files\MeCab\dic\ipadic-U...
#ref(dic3.png,,40%)
-mecab-ipadic-neologdのフォルダ内に作られた「NEologd.2020...
-Program Files/MeCab/etcの中にあるmecabrcをメモ帳で開き,...
; userdic = /home/foo/bar/user.dic
userdic = C:\Program Files\MeCab\dic\neologd\NEologd.202...
-- エラー対応(mecabrcを上書き保存する際、「アクセス許可...
--右クリックでmecabrcのプロパティを開き、Usersの「書き込...
#ref(3DGraph4-1.png,,60%)
*** #8の補足(辞書(dic)について) [#xb395eab]
-どのような単位で単語を区切るかなどのルールを記したもの
-辞書はなるべく頻繁に更新したほうがいい
--デフォルトの辞書(2007年版?)では「進撃の巨人」に対して...
--辞書を日々更新することで流行語などを正確に1つの単語とし...
*** #8の補足2(形態素解析について) [#t7b5c738]
-形態素解析:文章を意味のある最小単位の単語(形態素)に分解...
-形態素解析ツールは複数あるが、今回は「Mecab」を使用
*** #12補足~ [#r0608430]
-隣接行列が生成される(まだ要素は0のまま)
--隣接行列は3Dグラフの基となるもので、行の単語から列の単...
#ref(ad_matrix.png,,40%)
*** #13の補足[#tecdfe58]
-単語の共起頻度を計算する
--共起の定義はいろいろあるが、ここでは文章の中で単語Aの後...
--このとき隣接行列では(行)A→(列)Bの方向に+1される
--それが3DグラフでのノードAからノードBへの線(エッジ)と重...
-word_list(重複している単語リスト)を基に単語の順序関係を...
~
#ref(3DGraph5.png,,40%)
-上図の例では、単語'あ'の次に'う'が来ているので隣接行列の...
--文章中の単語'あ'から'う'が1回共起されたとみなす
*** #14の補足 [#pde39fbb]
--全ての行の共起頻度の合計を計算する
--合計値の大きい順に単語を並び替える(列に対しても同じ操作...
--上位数十件(DfNumで調整)の単語だけ切り取った隣接行列を作る
*** #15の補足 [#v604d322]
--単語の重み(正規化した共起頻度)を出す
*** #16の補足 [#bb94ca83]
--閾値以下の単語を除外して,新しい隣接行列を作る
*** #17の補足~ [#db7f2224]
-今pandasのデータフレーム型になっている隣接行列をpythonの...
--この辞書を参考に3Dグラフが作られる
-"nodes"にはノード(頂点)に入れる単語の情報が入る
--csvのキーワードになっている単語のみ赤色になる
-"links"にはエッジ(辺)の情報(矢印の出発ノードから到着ノー...
*** #18の補足~ [#j7246c58]
-辞書型のデータをjson形式にする
--サーバにデータを送信する際、配列や辞書はjson形式に変換...
*** #19,#20番目の補足~ [#v7db6352]
-サーバ経由でデータを送って,htmlで3Dグラフを描画する
-Internet Explorerで開かれる場合、デフォルトで開くブラウ...
--BackgroundBrowser()の中にはchrome.exeが保存されているパ...
**ゼミ課題 [#d2f34bc0]
-keyword.csvを編集して2単語以上でスクレイピング・3Dグラフ...
--csvを書き換えた後、#4から#20まで再び実行する
-組み合わせは何でもあり
--「属性データ+検索キーワード」「属性+地名+検索キー」でもOK
--検索キーワードx2でも可能(この場合、検索キーワード列の中...
ここではサメとクジラの2単語についてスクレイピング・グラフ...
#ref(サメクジラ.jpg,,60%)
終了行:
[[専門ゼミ(蒲田)]]
#contents
* 行うこと [#vbb3086e]
-WEBサイトから文章を自動取得(スクレイピング)
-自然言語処理(形態素解析)で取得した文章を単語に分解
-単語間の共起頻度を計算し、隣接行列を作成する
-隣接行列から3Dグラフを生成する
** キーワード [#y158d4a1]
-スクレイピング
--Webサイトから何かしらのデータを自動で取ってくる技術のこと
-テキストマイニング
--文章中の単語どうしのつながりなどを分析し、有用な情報を...
- Jupyter notebook
--ブラウザ上で開発する統合開発環境
--プログラム(主にPython)を対話的に実行できる
*前準備 [#t210542d]
**(1)添付フォルダのダウンロード [#p76f8c3c]
//#ref(Websc3D.zip,,添付フォルダ1)
#ref(Websc3Dgraph.zip,,添付フォルダ)
フォルダ内のファイルについて
-keywords.csv
--スクレイピングする際に必要なキーワードを入れるcsvファイル
-stopwprd.txt
--文章から除外する指示語や代名詞を載せたリスト
-4つのJavaScript(js)ファイル
--3Dグラフがhtml上で動作するのに必要なもの
-Server.py
--Jupyterで作成したグラフ情報をhtmlに送るためのもの
-web3D.html
--3Dグラフを描画する場所
-web_tmining3dg.jpynb
--テキストマイニングを行うJupyterファイル
-(neologd内)NEologd.20200820-u.dic(必要に応じて配布する)
--文章を単語に分解する際に参照する辞書
**(2)pythonからjupyterインストール [#p8f1dfa4]
-コマンドプロンプトでpythonのパスの通りを確認
python -V
-jupyterをインストール
pip install jupyter environment_kernels
-jupyter起動
jupyter notebook
***Anacondaを使っている場合 [#xa241e71]
Anacondaプロンプトを開き、以下の手順でjupyterをインストール
-(base)が表示されている状態(base環境でログイン)で、3Dグラ...
conda create -n graph python=3.7.13 -y (graphは仮想環境名)
-作成した環境に切り替える(ログイン)
conda activate graph
-jupyterをインストール
pip install jupyter environment_kernels
-pandasもインストールしておく
pip install pandas
**(3)プログラム編集ページの起動 [#q1ea3350]
***1.起動後のホーム画面からDLしたフォルダ(Websc3Dgraph)を...
#ref(3DGraph-pre.png,,40%)~
-開くと今回実行するプログラムが表示される
~
#ref(3DGraph-pre2.png,,40%)
-jupyterではプログラムを分割し、一行単位でプログラムの挙...
→システム開発(or誰かが作ったプログラムの確認)をするときに...
-今回はプログラムを20処理分に分割してあるので、順番に実行...
~
*プログラム実行手順 [#d2478c54]
**操作方法と注意事項 [#l7f5c18a]
-Shift + Enterで実行できる
-処理中は左上のマークが[*]となり、終わると[1]のような番号...
-実行のたびに番号が加算されていく(番号を頼りにどこまで実...
-jupyterを動かしているプロンプトで「Ctrl + C」orプロンプ...
-基本はプログラムを一つずつ実行することになる
--コメントアウトに実行順が書かれている
--実行前にやること、実行時のエラー対応、処理の補足説明を...
//-importでno moduleエラーが出ると思うのでpip installして...
//-jupyter画面左上の+でコードを書くセルを出せるので、そこ...
//入れるもの
//scipy
//requests_oauthlib
//スクレイピング用
//selenium
//chromedriver_binary
//bs4
//lxml
//自然言語処理用
//emoji
//nltk
//MeCab
//3Dグラフ用
//networkx
//Server.py起動用
//flask
//flask_cors
** #1 実行時 [#r53ffa6b]
-requirements.txt内に記載のモジュールをpipインストール
-実行中に「No module named ~」と出るなら追加インストール
!pip install ~
** #4の補足 [#v0c92b07]
-以下のようなcsvを読み込んでいる
#ref(3DGraph0.png,,40%)
-属性データには「大学生・夫婦」などの人・物、検索キーワー...
-これらのキーワードをもとにGoogle検索→スクレイピングして...
** #5(スクレイピング)実行時 [#ibf3ac9e]
-下のようなエラーが出る場合(ChromeでJupyterを開いた場合)
--ChromeDriverのバージョンがChromeブラウザよりも古いこと...
SessionNotCreatedException: Message: session not created...
Current browser version is 92.0.4515.131 with binary pat...
Cheomeブラウザと同じバージョンをpip install(ver.88→ver.92...
!pip install chromedriver-binary==92.0.4515.131
おそらく赤字でエラーが出る
ERROR: Could not find a version that satisfies the requi...
ERROR: No matching distribution found for chromedriver-b...
バージョンが列記されると思うので、一番近いバージョンをイ...
!pip install chromedriver-binary==92.0.4515.107.0 (2023/...
~
-逆パターンでChromeDriver(ver.93)がChromeブラウザ(ver.92....
--その場合もブラウザと同じバージョンのChromeDriverをイン...
!pip install chromedriver-binary==92.0.4515.107.0
*** #5の補足 [#v65e3304]
-csvに入れたキーワードで自動検索する処理を行う~
-GoogleトップのHTMLで検索窓を実装しているタグ(qというname...
#ref(3DGraph1.png,,40%)
~
-#3のrankinng関数を呼び出し,検索結果のwebサイトのリンク...
(→どちらもtF2Cxcというclassタグに入っているので,そこを見...
#ref(3DGraph2.png,,40%)
** #6の補足 [#r0f3d2c7]
-保存したリンク先(links.txt)のWebサイトに飛び,文章をスク...
--最終的に1つのテキストファイルに文章が保存される(webtext...
** #8の実行前にやること [#hf17a28b]
-Mecab(形態素分析を行うモジュール)をインストールする(リン...
--#1でもPythonのMeCabをpipしたが、PC本体にも入れる必要が...
https://github.com/ikegami-yukino/mecab/releases/tag/v0....
-パスを通しておく(システム環境変数の編集で変数Pathを編集...
#ref(3DGraph3-1.png,,60%)
-新規でmecab.exeがあるパスを追加する
C:\Program Files\MeCab\bin\
~
#ref(3DGraph3.png,,60%)
*** MeCabを試す(ここは飛ばしても良い) [#nb96e344]
-試しにmecabと打った後、「形態素解析」と打ってみる
--何か出てEOSが表示されていればOK
-pythonでもmecabを試す
--下図の4行をJupyterにコピペして態素解析結果が出ればOK
import sys
import MeCab
m = MeCab.Tagger ("-Ochasen")
print(m.parse ("東京特許許可局"))
#ref(3DGraph3-2.png,,40%)
~
** #8の実行前にやること2(辞書の更新)[#q0bc128b]
#8でやっていること:文章から不必要な文字列を除去し,Mecab...
-インストールしたMecabには古い辞書しか入っていないので、N...
//-C:\Program Files\MeCab\dic 内に配布フォルダ内dicの中の...
//--MeCabをPCにインストールすると基本Program Filesの中に...
//#ref(3DGraph4.png,,40%)
-GoogleDrive(iie.lab.tpu.1920)の平松さんのページに行き、...
-解凍したneologdの中身のmecab-ipadic-neologdをdicのフォル...
#ref(dic1.png,,40%)
--dicの中でipadic-UTF8を作成しipadicの中身を全部コピぺする
--同様に空のフォルダneologdも作成する
-管理者権限でコマンドプロンプトを起動し(管理者として実行)...
cd "c:\Program Files\MeCab\dic\ipadic-UTF8"
mecab-dict-index -f utf-8 -t utf-8
#ref(dic2.png,,40%)
-Neologdの辞書をコンパイルする
cd "c:\Program Files\MeCab\dic\mecab-ipadic-neologd\seed"
mecab-dict-index -d "c:\Program Files\MeCab\dic\ipadic-U...
#ref(dic3.png,,40%)
-mecab-ipadic-neologdのフォルダ内に作られた「NEologd.2020...
-Program Files/MeCab/etcの中にあるmecabrcをメモ帳で開き,...
; userdic = /home/foo/bar/user.dic
userdic = C:\Program Files\MeCab\dic\neologd\NEologd.202...
-- エラー対応(mecabrcを上書き保存する際、「アクセス許可...
--右クリックでmecabrcのプロパティを開き、Usersの「書き込...
#ref(3DGraph4-1.png,,60%)
*** #8の補足(辞書(dic)について) [#xb395eab]
-どのような単位で単語を区切るかなどのルールを記したもの
-辞書はなるべく頻繁に更新したほうがいい
--デフォルトの辞書(2007年版?)では「進撃の巨人」に対して...
--辞書を日々更新することで流行語などを正確に1つの単語とし...
*** #8の補足2(形態素解析について) [#t7b5c738]
-形態素解析:文章を意味のある最小単位の単語(形態素)に分解...
-形態素解析ツールは複数あるが、今回は「Mecab」を使用
*** #12補足~ [#r0608430]
-隣接行列が生成される(まだ要素は0のまま)
--隣接行列は3Dグラフの基となるもので、行の単語から列の単...
#ref(ad_matrix.png,,40%)
*** #13の補足[#tecdfe58]
-単語の共起頻度を計算する
--共起の定義はいろいろあるが、ここでは文章の中で単語Aの後...
--このとき隣接行列では(行)A→(列)Bの方向に+1される
--それが3DグラフでのノードAからノードBへの線(エッジ)と重...
-word_list(重複している単語リスト)を基に単語の順序関係を...
~
#ref(3DGraph5.png,,40%)
-上図の例では、単語'あ'の次に'う'が来ているので隣接行列の...
--文章中の単語'あ'から'う'が1回共起されたとみなす
*** #14の補足 [#pde39fbb]
--全ての行の共起頻度の合計を計算する
--合計値の大きい順に単語を並び替える(列に対しても同じ操作...
--上位数十件(DfNumで調整)の単語だけ切り取った隣接行列を作る
*** #15の補足 [#v604d322]
--単語の重み(正規化した共起頻度)を出す
*** #16の補足 [#bb94ca83]
--閾値以下の単語を除外して,新しい隣接行列を作る
*** #17の補足~ [#db7f2224]
-今pandasのデータフレーム型になっている隣接行列をpythonの...
--この辞書を参考に3Dグラフが作られる
-"nodes"にはノード(頂点)に入れる単語の情報が入る
--csvのキーワードになっている単語のみ赤色になる
-"links"にはエッジ(辺)の情報(矢印の出発ノードから到着ノー...
*** #18の補足~ [#j7246c58]
-辞書型のデータをjson形式にする
--サーバにデータを送信する際、配列や辞書はjson形式に変換...
*** #19,#20番目の補足~ [#v7db6352]
-サーバ経由でデータを送って,htmlで3Dグラフを描画する
-Internet Explorerで開かれる場合、デフォルトで開くブラウ...
--BackgroundBrowser()の中にはchrome.exeが保存されているパ...
**ゼミ課題 [#d2f34bc0]
-keyword.csvを編集して2単語以上でスクレイピング・3Dグラフ...
--csvを書き換えた後、#4から#20まで再び実行する
-組み合わせは何でもあり
--「属性データ+検索キーワード」「属性+地名+検索キー」でもOK
--検索キーワードx2でも可能(この場合、検索キーワード列の中...
ここではサメとクジラの2単語についてスクレイピング・グラフ...
#ref(サメクジラ.jpg,,60%)
ページ名: