#はじめに
言語処理100本ノックを解いて,日記の代わりとして自分のモチベーションのために本記事を書く.
プログラミングの経験は多少あるが,初心者に毛が生えたようなレベルであるため,練習のために挑戦する.
100本ノックの解答例は既出であるため,もっと効率的で美しいコードが見たいのであればこちらを参照してほしい.
本記事は簡単な100本ノックの紹介と,解きなおした解答を載せた記事のURLを下記に載せている.
本記事は問題に取り組むたびに更新するスタイルをとる.
##言語処理100本ノックについて
言語処理100本ノック(NLP100)とは,実用的でワクワクするような課題に取り組みながら,プログラミング,データ分析,研究のスキルを楽しく習得することを目指した問題集であるとされている.
この問題集は東京工業大学の岡崎直観により制作・保守されている.
※2021年8月9日時点では言語処理100本ノック2020(Rev2)が公開されている.
Rev2ということで公開当初よりバグの改善がなされている.
さらなる詳しい情報は有志による解説記事があるのでこちらを参照してほしい.
##課題への取り組みの動機
2020年の5月から10月にかけて,言語処理100本ノック2020を00~59まで説いたことがある.(40~49は都合により飛ばしている)
しかし書いたコードを振り返ってみるとコードがぐちゃぐちゃだったので書き直したくなったのと,どうせなら最後までやり切りたいと思い,この際最初から解きなおすことにした.
冒頭の通り,プログラミングスキル自体は初心者に毛が生えたレベルなので,いろいろな部分をほかの解答例などを参考にしながらもできるだけ自力で解いてみる.
コードはgithubにて公開する予定.
2020年に書いたコードと作成されたデータはこちら(本当にぐちゃぐちゃなデータ)
##開発環境
macがないため,Windows10のWSL2を用いて問題に取り組む.
ディストリビューションはUbuntu-20.04を使用する.
ちなみに今回は技術向上のために環境構築を行ったが,オンライン実行環境Google Colaboratoryを用いるともっと簡単にプログラムを書くことができる.
Google Colaboratoryの詳しい解説はこちら
#言語処理100本ノック(NLP100)を解く
解答例と呼ぶにはおこがましいコードであるが,解答例とし,以下にURLを添付する.
##第1章:準備運動
テキストや文字列を扱う題材に取り組みながら,プログラミング言語のやや高度なトピックを復習します.
今現在,この章に取り組んでいる.
##第2章:UNIXコマンド
研究やデータ分析において便利なUNIXツールを体験します.これらの再実装を通じて,プログラミング能力を高めつつ,既存のツールのエコシステムを体感します.
##第3章:正規表現
Wikipediaのページのマークアップ記述に正規表現を適用することで,様々な情報・知識を取り出します.
夏目漱石の小説『吾輩は猫である』に形態素解析器を適用し,小説中の単語の統計を求めます.
『吾輩は猫である』に係り受け解析器を適用し,係り受け木の操作と統語的な分析を体験します.
##第6章:機械学習
文書分類器を機械学習で構築します.さらに,機械学習手法の評価方法を学びます.
単語の類似度計算や単語アナロジーなどを通して,単語ベクトルの取り扱いを修得します.さらに,クラスタリングやベクトルの可視化を体験します.
深層学習フレームワークの使い方を学び,ニューラルネットワークに基づくカテゴリ分類を実装します.
深層学習フレームワークを用い,再帰型ニューラルネットワーク(RNN)や畳み込みニューラルネットワーク(CNN)を実装します.
既存のツールを活用し,ニューラル機械翻訳モデルを構築します.
解答例がない章はまだ取り組んでいない章.
問題出題者の意図に反する部分もあるので,コメントにて教えていただけると幸いです.