Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20190920 hannaripython20

232 views

Published on

2019/09/20 はんなりPythonのLTで使用

Published in: Software
  • Be the first to comment

  • Be the first to like this

20190920 hannaripython20

  1. 1. エンジニアもすなる テキストマイニングなるものを 非エンジニアのワイもしてみむるとす 2019/9/20
  2. 2. 1 )自己紹介 2 )なんでこんな話しようと思ったか? 3 )テキストマイニングとはなんぞ? 4 )レッツ,トライ 5 )実際のデータで試す(会社の) 6 )まとめ 本日おはなしさせてもらうこと
  3. 3. 1)自己紹介 Otazoman twitter:うひーマン(@norikoni) ●現在の職業: 某社のマーケティング部所属、システムともマーケとも言えない 中途半端な立ち位置でゆるゆる勤務中、最近はなぜかpython触ることが多い。 ●経歴: 新卒でSIerに入社し退職後はずっと社内のシステム担当してます。7社を渡り歩いて 2018年から現職です。システムもプログラムも全然知りません。(´;ω;`) 非エンジニア並みの戦闘力しかないザクです。 ●社会人約20年でやってきたこと(ザクレベル以下): ・MS-OFFICE →ググればマクロは何とか読み書きできます。 ・JavaScript →ググれば何とか読み書きできます。 ・python →ググれば何とか読み書きできます。 ・Linux →ググれば何とかサーバ構築できます。 ・AWS,GCP →最近触り始めた。ググる力を備えているところ
  4. 4. 2 )なんでこんな話しようと思ったか?
  5. 5. 最近こういうこと言われませんか? なんか社長的な人 なんかAIって流行ってるらしいね。システムの人だ ったらささっとできるんでしょ。会社の大変な 業務とかこう「さく」っと楽にしてよ。 当然こ難しいツールとか使いこなせないし、お金も かけずにやってね。 無理とかいうのNGなんで、4649
  6. 6. 当然こう思います。 いや、俺マーケティング部なんで すけど、、、それに数学出来ない のにAI言われてもわからんし、 そもそもAIがそんな都合よく「さ く」っとできるんならあんた作れ よぉ(# ゚Д゚)
  7. 7. が、サラリーマンはこう返さざるをえませんね。 なんか社長的な人 前向きに調査 します。 なんかAIって流行ってるらしいね。システムの人だ ったらささっとできるんでしょ。会社の大変な 業務とかこう「さく」っと楽にしてよ。 当然こ難しいツールとか使いこなせないし、お金も かけずにやってね。 無理とかいうのNGなんで、4649
  8. 8. 仕方なくいろいろと調査します
  9. 9. AI完全に理解したwww すごい人が開発したライブラリ 画像とか文字データ とりあえず1と0にする データの墓場とか なんかええ塩梅 で計算 なんかのプログラム 呼び出す 受取 見た目の加工 結果を表示
  10. 10. 要するに画像とか文字を数字にして、これ また数字にしたたくさんのデータと比べて 似てるかどうかを判定して結果を返す。 そして見た目を整えるということね。 本来の人工知能(AI)の定義は以下を参照ください(Wikipedia) https://ja.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD
  11. 11. へーしゃには巨大なデータがないですし、 さくっと導入できないようです。 そして何より導入しても業務は楽には ならないみたいです。 -以上
  12. 12. と、一蹴したってもよかったんですが 後学のために画像以外で何か適用できて それなりにやった感が出そうなもんが ないか、少しだけ突っ込んで調べました。
  13. 13. て・き・す・と・ま・い・に・ん・ぐ
  14. 14. 3 )テキストマイニングとはなんぞ?
  15. 15. テキストマイニングとはなんぞ? アンケートの自由回答とかから文章を拾 ってきて解析やって、数値以外から 知見を得ようというあれです。 詳しくは以下を参照ください(Wikipedia) https://ja.wikipedia.org/wiki/%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%9E%E3%82%A 4%E3%83%8B%E3%83%B3%E3%82%B0
  16. 16. なんでテキストマイニングなの? やってたとか言ったら転職するときに 有利そうだから 数値データだけ見てたら お客さんの本音ニーズが分からないから ※コアなニーズを持っているお客さんは欲しいと思ったらそのとっかかりになる ヒントくらいは入力してくれるはず。
  17. 17. テキストマイニングの流れ ①データの収集 ②データの整理 ③文書の分解 センチメント分析 コレスポンデンス分析 主成分分析 関連単語の距離を求める →商品評価の分析 単語のカテゴリー分け →自社ポジショニング 単語から肯定・否定を解析 →クレーム分析 macromillさんのサイトきれいにまとまってます。 https://www.macromill.com/service/data_analysis/ ④分析
  18. 18. で、具体的にどうするんすか? ①データの収集 ②データの整理 ③文書の分解 データベースの備考欄に意外と非構造の日本語デ ータたまってるよね。それ使おう。 結構、ゴミとかあるんで整理が必要になる。 いわゆる前処理とかいうやつ、基本はプログラムで加工 ※ググれば出てきます。特殊な奴は自前で書かないと仕方ない。 ④分析 ツール使います。いろいろあるけど代表的なのはMecabと Cabochaですが今回は係り受けまではやらないのでMecabのみ すごい人が作ってくれたライブラリがあります。基本的にはそれ 使うのでほとんどプログラム書かなくていいはず?
  19. 19. 4)レッツ、トライ
  20. 20. Hyper-V使いますた(笑) AWSとかGCPのサーバ使ってもいいんですが、 課金なしでも稟議を書かないといけないので己 のPC上に仮想Ubuntuマシンを作ります( ´∀` ) https://docs.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v ■Hyper-Vの有効化の方法 https://ygkb.jp/3744 ■Ubuntuのインストール方法 https://www.yokoweb.net/2018/05/04/ubuntu-18_04-lts-server-install/ 会社にmacなどないのでWindowsのPCでごにょごにょするの面倒だしHyper-Vです。
  21. 21. ひとまずサーバの初期設定#日本語化 $ sudo sed -i.bak -e "s%http://us.archive.ubuntu.com/ubuntu/%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g" /etc/apt/sources.list $ sudo apt-get -y install language-pack-ja-base language-pack-ja ibus-mozc $ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" $ source /etc/default/locale $ echo $LANG ja_JP.UTF-8 #タイムロケール変更 $ sudo timedatectl set-timezone Asia/Tokyo $ timedatectl #ソフトウェアアップデート $ sudo apt-get -y update $ sudo apt-get -y upgrade #ssh用証明書作業 $ mkdir .ssh $ chmod 700 .ssh $ mv id_rsa.pub .ssh/authorized_keys #sshd_config編集 $ sudo sed -i -e "s/#PubkeyAuthentication/PubkeyAuthentication/g" /etc/ssh/sshd_config $ sudo sed -i -e "s/#PasswordAuthentication yes/PasswordAuthentication no/g" /etc/ssh/sshd_config $ sudo service sshd restart $ reboot #お好みで $ sudo apt -y install jq tree https://webkaru.net/linux/tera-term-ssh-login-public-key/ ■ssh証明書は以下のサイトを参照してWindows側で作成しHyper-Vにアップロードしておく。 ■sudo時のパスワードが面倒だという人はパスワード聞かれないようにしよう https://blog.pinkumohikan.com/entry/use-sudo-command-without-password
  22. 22. そしてpythonに一工夫 これ別にやらなくてもUbuntu18.04LTSなら最初からpython3入ってます。 Python3とかpip3って打つの嫌な人はやっておくといいんじゃないでしょうか。これやった人は 以後、python3とかpip3って出てくるところはpythonとpipに読み替えてください。 #pyenvインストール $ sudo apt install python-dev python-pip $ sudo apt install python3-dev python3-pip $ sudo apt -y install make build-essential libssl-dev zlib1g-dev libbz2-dev ¥ libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev ¥ xz-utils tk-dev libffi-dev liblzma-dev $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(pyenv init -)"' >> ~/.bashrc $ source ~/.bashrc #python複数バージョンインストール $ pyenv install 3.7.3 $ pyenv install 2.7.16 $ pyenv local 3.7.3 $ python --version Python 3.7.3
  23. 23. 必要な準備その1(MecabとCabocha) $ sudo apt-get -y install mecab mecab-ipadic-utf8 libmecab-dev python-mecab $ sudo apt -y install swig $ wget -O CRF++-0.58.tar.gz “https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7QVR6VXJ5dWExSTQ” $ tar xvzf CRF++-0.58.tar.gz $ cd CRF++-0.58 $ vim node.cpp $ ./configure $ make $ make check $ sudo make install $ wget "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7SDd1Q1dUQkZQaUU" -O cabocha.tar.bz2 $ bzip2 -dc cabocha.tar.bz2 | tar xvf - $ cd cabocha-0.69/ $ ./configure --with-mecab-config=which mecab-config --with-charset=utf8 --enable-utf8-only $ sudo ldconfig $ make $ make check $ sudo make install $ sudo ldconfig $ cd python/ $ sudo python3 setup.py install $ sudo apt -y install fonts-ipaexfont $ sudo apt-get -y install nkf ■Cabocha対応にてnode.cppの編集が必要となる。 ------------------------- #include <stdlib.h> #include #include <time.h> ←書き足し #include "node.h" #include "common.h" *Cabochaダウンロードするとこ嵌ります。特に使わないなら入れなくてもいいカモです。
  24. 24. 必要な準備その2(追加ライブラリ導入) $ pip3 install mecab-python3 $ pip3 install numpy $ pip3 install matplotlib $ pip3 install pandas $ pip3 install scipy $ pip3 install scikit_learn $ pip3 install tensorflow $ pip3 install list $ pip3 install wordcloud $ pip3 install pillow $ pip3 install feedparser $ pip3 install gensim $ pip3 install wikipedia2vec $ pip3 install neologdn $ pip3 install emoji neologd辞書(精度が多少マシになる) $ git clone https://github.com/neologd/mecab-ipadic-neologd.git $ cd mecab-ipadic-neologd $ sudo bin/install-mecab-ipadic-neologd $ echo `mecab-config --dicdir`"/mecab-ipadic-neologd"
  25. 25. 早速、WordCloudで遊んでみる。 https://github.com/Otazoman/testtextmining/blob/master/src/wordcloudsample.py ソースが120行位あって長々となるので、GitHubに上げています。 ※ザク以下なのでGitもまったく使いこなしていません。(´;ω;`) プログラム叩くととりあえずこんなん↓出せました。
  26. 26. Word2Vecは準備がいります。 学習したモデルを準備する必要があります。(かなり時間かかったwww) #Wikipediaの日本語ダンプをダウンロード $ mkdir corpas $ cd corpas $ curl https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2 -o jawiki-latest-pages-articles.xml.bz2 #ダウンロードしたデータから記事本文抽出 $ git clone https://github.com/attardi/wikiextractor $ python3 wikiextractor/WikiExtractor.py jawiki-latest-pages-articles.xml.bz2 #抽出した記事本文のクリーニング $ python3 ../src/datacleaning.py text #記事データを1ファイルにマージ $ cat text/*/* > jawiki.txt #形態素解析して分かち書きに変換 $ mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd -Owakati jawiki.txt -o data.txt -b 16384 $ nkf -w --overwrite data.txt #モデル学習 $ python3 ../src/modelmake.py inputfile outputfile https://github.com/Otazoman/testtextmining/blob/master/src/datacleaning.py https://github.com/Otazoman/testtextmining/blob/master/src/modelmake.py
  27. 27. Word2Vecも試してみます。 これもとりあえずGitHubに上げてます。 https://github.com/Otazoman/testtextmining/blob/master/src/word2vecsample1.py 動かすと↓こんなんなります。 $ python3 word2vecsample1.py 織田信長 ------------------------------------- word |cos_distance ------------------------------------- 信長 |0.8298839330673218 羽柴秀吉 |0.8078864812850952 明智光秀 |0.8020179271697998 豊臣秀吉 |0.794742226600647 斎藤道三 |0.7674193382263184 徳川家康 |0.7462049126625061 武田信玄 |0.7447170615196228 今川義元 |0.742206335067749 松永久秀 |0.7339966297149658 浅井長政 |0.724041223526001 ------------------------------------- 処理時間は:6.821729400000095秒です。
  28. 28. ググれば先人が色々とやってくれた事例 がてんこ盛りです。最適な方法見つけて 色々と試すといいんではないでしょうか。 しかしながら、データの整形(前処理) は非常に重要です。
  29. 29. 5)実際のデータで試す(会社の)
  30. 30. 6)まとめ ・環境はド素人でも作れました。 ・Wikipediaは最強だがへーしゃは最弱 ・備考欄の入力方法は無理に統一しない
  31. 31. テキストマイニング完全に理解したwww
  32. 32. ご清聴ありがとうございましたm(__)m

×