LoginSignup
3
4

More than 3 years have passed since last update.

キカガクで自然言語処理を勉強

Last updated at Posted at 2020-10-02

今回は無料で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関数というのがありまして、それぞれ小文字にする関数と大文字にするための関数になります。

形態素解析

形態素解析にMeCabJuman++が良さげだったので、インストールしました。
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という関数です。
これを使うことによって、余白を除いた状態で出力することが可能です。

まとめ

今回は形態素解析の部分に結構時間がかかってしまいましたね。
しかし、これから自然言語処理をしていく上では必要な知識かなと思ったので、丁寧に学べて良かったかなと思います。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4