2019.11.08
2021.08.12
Fabeee社員ブログ
はじめまして。2019年5月にFabeeeに入社しました、エンジニア6ヶ月目のゴッチです。
最近 “形態素解析” という、なんかすごそうなことばを知ったのですが、調べてもよくわからなかったので、これを使ってなにか作ってみたいと思いました。
また、せっかくなので、興味はあったものの使ったことはなかったスクレイピングも使ってみようと思います。
そこで、この記事では、形態素解析とスクレイピングで、Fabeeeの「名詞王」を決めたいと思います。
目次
名詞王とは?
Fabeeeのブログの中で、一番名詞を多く使って文章を書いている人が「名詞王」です。
形態素解析とは?
形態素解析(けいたいそかいせき、Morphological Analysis)とは、文法的な情報の注記の無い自然言語のテキストデータ(文)から、対象言語の文法や、辞書と呼ばれる単語の品詞等の情報にもとづき、形態素(Morpheme, おおまかにいえば、言語で意味を持つ最小単位)の列に分割し、それぞれの形態素の品詞等を判別する作業である。(Wikipediaより)
なにやら難しそうなことが書かれていますが、すごく雑に言えば、形態素解析とは「文章を単語ごとに分割して、それを見ていろいろ考えること」だと思います。
形態素解析にはjanomeというPythonのライブラリを使います。pipでインストールできるので便利です。
https://mocobeta.github.io/janome/
スクレイピングとは?
HTMLファイルからいい感じに任意の部分を抽出する技術です。
詳しくはバターくんが解説してくれていますので、ぜひ読んでみてください。
PythonとBeautiful Soupで簡単スクレイピング
私のこの記事でもスクレイピングにBautiful Soupを使います。
https://www.crummy.com/software/BeautifulSoup/
使用ツール
言語はPython。
スクレイピングはお馴染みのbeautiful soup、形態素解析はjanomeを使います。
httpリクエストも送りたいのでrequestsも使います。
どれもpipでインストールできます。
名詞王はこの人だ!
具体的な実装方法とかコードの解説とかしてもあまり盛り上がらないと思うので、さっそく名詞王を決めたいと思います。
def who_is_the_king(pos):
...
この、その名も who_is_the_king() メソッドに任意の品詞を引数に渡すと任意の品詞王が判定されます。
それでは、名詞王を判定しましょう。
>>> who_is_the_king('名詞')
実行結果
- 1位 名詞率:43.44% 白いパンのUnity勉強メモ第3回【Unity】【勉強】【入門】
- 2位 名詞率:42.56% ■株式会社フォトメ主催Python勉強会 8月30日開催レポート!!
- 3位 名詞率:42.05% WEB業界で覚えておきたいアルファベットの用語【30選】
名詞王は、「白いパンのUnity勉強メモ第3回【Unity】【勉強】【入門】」を書かれた、白いパンさんでした!(誰??)
考察
上記から、各ブログの名詞率がわかり、名詞率はブログによって異なっていることがわかりました。
では、せっかくなので、名詞率の高い文章と名詞率の低い文章を見比べて、その違いはなんなのか少し考えてみたいと思います。
- 34位 27.36% Pythonで卵焼き作ってみた【Python】【入門】
- 35位 26.97% テレビの今昔
- 36位 26.27% 【実際】ゲーム業界に在籍して感じたこと【どうなの】
名詞率の高いブログと名詞率の低いブログを見てまず思うのは、ジャンルの違いでしょうか。
名詞率の高いブログは技術系、もしくは専門系。
名詞率の低いブログは、ジャンルで言うとエッセイでしょうか。
ここでは仮に、「名詞率の高いブログは専門系」、「名詞率の低いブログはエッセイ」として考えてみます。
専門系とエッセイの違いを考えると、一番の大きな違いは「専門性」でしょうか。
名詞率上位の記事はプログラミングやWeb業界についてのことが書かれており、専門性が高いと言えそうです。
名詞率下位の記事は、「感じたこと」とタイトルにもあるように、特に専門性が高いような記事ではなさそうです。
つまり、「専門性と名詞率は比例する」と言っても良さそうです。
なんだか雑な結論になりましたが、ここで長々と私の考えを書いてもおもしろくないと思うので、私の考察はここで終わります。
「名詞率の高い文章とはどんな文章か?」という問いをみなさん自身で考えてみるとおもしろいかもしれないですね。
おわりに
今回この名刺王判定プログラムをつくるのに、たぶん20時間くらい使っています。(もしかしたらそれ以上かも)
20時間も使ったのにまだまだ改良したいところはあるし、機能面以外にも、コードの可読性なども改良したいです。
もっと勉強して、実践で腕を磨いて、さくっといい感じのコードが書けるようになりたいです。めっちゃがんばります。
ありがとうございました。
SES/受託開発のご依頼についてはこちら