今回は無料でDeep learningについて学べるキカガクというサイトで自然言語処理を勉強していた時に、勉強になったという場所を書いていきたいと思います。
実行環境
・ MacOS
・ Python3.6(anaconda)
・ VSCode
引用文献
図解!Python BeautifulSoupの使い方を徹底解説!(select、find、find_all、インストール、スクレイピングなど)
【Python】文字列の大文字・小文字変換(lower、upper関数)
リポジトリをクローンする
2019年末版 形態素解析器の比較
MacにMeCabを利用できる環境を整える
MeCabでの形態素解析 on Mac
macで、JUMAN++をPythonのpyenv環境で使うための設定
pyknp(JUMANN++)で形態素解析してみた
PythonでJuman++を動かす
分からなくて調べたところ
BeautifulSoupって何?
まず初めましてのbeautifulsoupさんです。
これがなんなのかというとhtmlmの文から必要な情報だけを抽出することができるライブラリになっております。例えば、ネット上にあるHTMLの文章って'div'
や'h1'
で囲まれていると思います。しかし、文章を解析する上ではこういったタグは邪魔なものになるので、これを取り除いた情報だけ取得するのがbeautifulsoupになります。
lower()関数とは?
lower関数
とupper関数
というのがありまして、それぞれ小文字にする関数と大文字にするための関数になります。
形態素解析
形態素解析にMeCab
とJuman++
が良さげだったので、インストールしました。
MeCabがおそらく速さの面などを考えても1番良くて、精度だけを追求するならJuman++が良いみたいでした。
Mecabのインストールは結構簡単にできました。
$ brew install mecab
$ brew install mecab-ipadic
$ pip install mecab-python3
$ git clone url
git cloneの後のURLはGithubレポジトリからコピーしてきたURLを貼り付けます。
import MeCab
m = MeCab.Tagger('-d/usr/local/lib/mecab/dic/mecab-ipadic-neologd')
text = '<html>ゼロから作るDeep learning</html>'
print(m.parse(text))
MeCabはこんな感じで書いていきます。
ちなみに、Tagger()
のカッコ内に
- -Ochasen
- -Owakati
- -Oyomi
を指定することができます。
Juman++はpythonで使えるようにするために、pyknpのインストール
も必要でした。
$ brew install jumanpp
$ pip install pyknp
これでJuman++
とPyknp
のインストールは完了です。
次にPython上でのJuman++の書き方について書いていきます。
from pyknp.juman.juman import Juman
juman = Juman()
result = juman.analysis("外国人参政権")
for mrph in result.mrph_list():
print(mrph.midasi, mrph.yomi)
Juman++はこんな感じでPython上で書きます。Juman++を使っていますが、コードを書く上ではJuman
のままで大丈夫みたいですね。
printの部分のmidasiやyomiに加えて、mrph.genkei, mrph.hinsi, mrph.bunrui, mrph.katuyou1, mrph.katuyou2, mrph.imis, mrph.repname
を追加することもできます。
自然言語処理に関係なく分からなかったところ
単語ごとに抽出することが可能な関数であるsplit
を使いました。
最初自然言語処理に特化した関数なのかなと思っていたのですが、普通にpythonの関数でした。
splitは単語ごとに区切って文を出力してくれます。
しかし、splitだけだとコンマの後の余白がそのまま残った状態で出力されるため見栄え的にあまりよろしくないということで使われるのが、strip
という関数です。
これを使うことによって、余白を除いた状態で出力することが可能です。
まとめ
今回は形態素解析の部分に結構時間がかかってしまいましたね。
しかし、これから自然言語処理をしていく上では必要な知識かなと思ったので、丁寧に学べて良かったかなと思います。