Pythonと!

プログラミングド素人の勉強日記です。

Ubuntu18.04環境でMecab+NEologdをPythonから使うための準備

  • Mecabのインストール
$ sudo apt install mecab libmecab-dev mecab-ipadic-utf8
  • mecab-python3のインストール
$ pip install mecab-python3
  • NEologdのインストール
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd
$ ./bin/install-mecab-ipadic-neologd -n

"""
[install-mecab-ipadic-NEologd] : Do you want to install mecab-ipadic-NEologd? Type yes or no.
⇛ この質問には'Yes'
"""
  • MeCab-ipadic-NEologdのインストール先を確認
$ echo `mecab-config --dicdir`"/mecab-ipadic-neologd"

私の環境では、'/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd'にインストールされていたので、'/usr/local/lib/mecab/dic/'配下になるように、シンボリックリンクを張っておきます。

$ sudo mkdir -p /usr/local/lib/mecab/dic
$ sudo chmod -R 777 /usr/local/lib/mecab
$ ln -s /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd /usr/local/lib/mecab/dic/mecab-ipadic-neologd
import MeCab

mecab = MeCab.Tagger('-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')
text = 'ペンギンと猫は友達です。'
print(mecab.parse(text))

以下のエラーが出てしまったので、

Failed initializing MeCab. Please see the README for possible solutions:

    https://github.com/SamuraiT/mecab-python3#common-issues

If you are still having trouble, please file an issue here, and include the
ERROR DETAILS below:

    https://github.com/SamuraiT/mecab-python3/issues

issueを英語で書く必要はありません。

------------------- ERROR DETAILS ------------------------
arguments: -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
error message: [ifs] no such file or directory: /usr/local/etc/mecabrc
----------------------------------------------------------
Traceback (most recent call last):
  File "mecab.py", line 3, in <module>
    mecab = MeCab.Tagger('-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')
  File "/home/vagrant/projects/venv_mecab/lib/python3.7/site-packages/MeCab/__init__.py", line 124, in __init__
    super(Tagger, self).__init__(args)
RuntimeError

環境変数を正しく設定し直します。

# mecabのインストール先を確認する
$ sudo find / -iname mecabrc
⇛ /etc/mecabrc

# 確認したインストール先をbash_profileに書き込む
$  sudo vi  ~/.bash_profile
⇛ export MECABRC='/etc/mecabrc' を追記する

# 書き込んだ設定を反映する
$ source ~/.bash_profile


これでうまく実行できました。

$ python mecab.py
ペンギン        名詞,一般,*,*,*,*,ペンギン,ペンギン,ペンギン
と      助詞,並立助詞,*,*,*,*,と,ト,ト
猫      名詞,一般,*,*,*,*,猫,ネコ,ネコ
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
友達    名詞,一般,*,*,*,*,友達,トモダチ,トモダチ
です    助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。      記号,句点,*,*,*,*,。,。,。
EOS
  • 参考サイト

【Ubuntu】MeCabとNEologdをインストールしてPythonで形態素解析する | 研究所で働くエンジニアのブログ
Ubuntu 18.04 に Python3・MeCab・MeCab-ipadic-NEologd をインストールした - Corredor
error message: [ifs] no such file or directory: /usr/local/etc/mecabrc - NWエンジニアのお勉強日誌

UbuntuでSelenium(+chromedriver)を使う準備

pip install selenium
  • chromeとchromedriverのインストール

python-to.hateblo.jp

  • 実装例
from selenium import webdriver


# ブラウザの起動
options = webdriver.ChromeOptions()
options.add_argument('--headless') # headlessモードで起動するオプション
driver = webdriver.Chrome(options=options)

# URLへ遷移
driver.get('https://www.google.co.jp/')

# htmlを取得
html = driver.page_source

# ブラウザーを終了
driver.quit()
  • エラーの対処法

python-to.hateblo.jp

Python3エンジニア認定データ分析試験の受験記録

データ分析試験に900/1000で無事合格したので、受験記録を兼ねてブログに書いてみます。

受験前の知識

  • CourseraのMachine Learning講座を修了して、KaggleやSIGNATEのテーブルコンペにちょっと参加したことがある。
  • 試験範囲の知識はだいたいある。
  • コンペでよく使うPandas, Scikit-learnはほぼ問題なし。numpyとMatplotlibは知らないメソッドがちょっとある。

学習方法

主教材で指定されている「Pythonによるあたらしいデータ分析の教科書」と模試で2週間ほど(1日1時間ちょっと)勉強しました。

study.prime-strategy.co.jp

1週目

とりあえず、3~4日かけてテキストを1週流し読みしました。 テキストを読み終えたら模試の第1回目を受けてみました。この時の得点率はたしか50%くらいでした。

2週目

2週目に入ってからは、模試で間違えたところを中心にノートにまとめて、一通り覚えたところで模試の第2回目を受けてみました。この時点では75%くらい取れていました。 Matplotlib知識があやふやだなと思ったので、テキストを見ながらJupyterで一通り実装しました(2~3時間くらい)。 あとは、本番までひたすら模試の間違えたところを覚えていきました。

本番

本番のテストは模試よりも簡単で、30分弱で解き終わりました。 その場で合否とセクションごとの正解率がわかるのですが、何を間違えたのかまではわからないのでモヤモヤします・・・。

受けた感想

正直、簡単すぎて少し拍子抜けしましたが、Matplotlibのオブジェクト指向の実装を学べた点は個人的にはよかったかなと思います。 テキストを一通り理解して、模試で合格点以上を安定的に取れれば何とかなる!

Google ColabolatoryとGoogle Driveでデータをやり取りする方法

Google ColabolatoryとGoogle Driveのデータ連携について、Pandasのread_csvとto_csvを例に書いてみます。

  • 事前準備(Googleドライブのマウント)
from google.colab import drive
drive.mount('/content/drive')
import pandas as pd

df = pd.read_csv('/content/drive/My Drive/hoge/fuga.csv')
import pandas as pd

base_dir = '/content/drive/My Drive/hoge/'
file_name = 'fuga.csv'
file_path = base_dir + file_name
df.to_csv(file_path)

'RandomOverSampler' object has no attribute '_validate_data'

imbalanced-learnでfit_resampleしたところ、「'RandomOverSampler' object has no attribute '_validate_data'」のエラーが出てしまいました。
調べたところscikit-learnのバージョンが古いことが原因のようで、0.23.0以上に上げたところエラーが出なくなりました。
めでたし!