Picture of the s2terminal
s2terminal.log

あるWeb開発者のブログ

日本語自然言語処理を始めた時に読んだ本3冊

  • 公開
  • Category: Technology

自然言語処理を始めようとなった時に読んだ、 日本語を対象とした自然言語処理の初歩的な解説書 を3冊紹介。

自然言語処理技術は近年活発に研究されていて様々な文献があるものの、その特性が言語に依存する。たとえば日本語は語の区切りが明示的に示されないため、「私は鈴木です」を「私」「は」「鈴木」「です」に区切る 形態素解析(morphological analysis) の技術の重要度が高い。反面、英語は「fly」が「飛ぶ」という動詞だったり「ハエ」という名詞だったりするように一つの語が複数の品詞を持つことが多いらしく、 品詞タグ付け(part-of-speech tagging) の技術の重要度が高くなる。 そういった事情があって、"日本語の"自然言語処理についての基礎を知りたいなら"日本語の"自然言語処理について書かれた文献を選ぶ必要がある。

なお始めたときの筆者のレベル感はこんな感じ。

  • 自然言語処理の知識・経験は皆無
  • Web開発歴 約8年(PHP、Ruby、TypeScript)
    • Python等に慣れていたわけではないが、プログラミング言語の新規習得やLinux環境構築等に抵抗は無い状態からスタート
  • 大学教養科目程度の統計学、線形代数学は10年前に履修した記憶がうっすらあるレベル
  • 国語科は義務教育レベルから理解が怪しい

読んだ本3冊

自然言語処理〔改訂版〕 (放送大学教材) | 黒橋 禎夫

自然言語処理をやるとなって、まずはじめに放送大学のラジオ授業を受けてみたんだけど、その授業の教材。授業を受けなくても本書単体でもAmazon等で手に入る。第1回授業は放送大学Webサイトでお試し視聴できるので迷っていたら参考までに。

内容はとても教科書的というか、広い分野を分かりやすく網羅している。対象言語は日本語を中心に、英語やその他の言語と対比しながら解説されている。 理論の話がほとんどで、プログラムは擬似コードしか出てこない。プログラミングができない人でも読むことは一応できるけど、プログラミングの経験が多少でもあったほうが理解しやすいと思う。(放送大学の授業のシラバスには「計算機科学および確率統計の入門的科目を履修していることが望ましい」とある)

前半は自然言語処理の基礎技術で、形態素解析、構文解析、文脈解析と、読み進めるほど取り扱う単位がだんだん大きくなって、技術的にも徐々に高度になるように書かれている。 後半は応用編として、情報検索や機械翻訳などの理論について述べられている。情報検索については過去に「Google PageRankの数理」で触れていたため抵抗は無かったけど、この応用編の各章はちょっと駆け足なので、前提となる知識が無いと何を言っているのかイメージしづらいかもしれない。

明確な欠点として、電子書籍版が無い。

機械学習・深層学習による自然言語処理入門 (Compass Booksシリーズ) | 中山 光樹

放送大学テキストよりも実践的な一冊。前処理、コーパス作成、機械学習モデルの実装まで、Pythonによる実装が順番に解説されている。これら自然言語処理開発の一連の流れが満遍なく分かりやすい解説をされているため、全体の流れをつかみやすいと思う。 理論よりもまず最初に手を動かしたいなら、これを最初の一冊にしてもいいと思う。ただしPythonは理解できる前提。

また、本書はサンプルコードが比較的きれいで好印象(というか、この分野の文献はサンプルコードが汚い事が多いと感じる...)プログラミング経験が浅い人でも読みやすい・改変しやすいのではないかと感じる。

BERTによる自然言語処理入門 ―Transformersを使った実践プログラミング― | 近江崇宏, 金田健太郎, 森長誠, 江間見亜利, ストックマーク株式会社

BERTによる日本語自然言語処理の入門書。汎用モデルをそのまま利用した基礎的な使い方からファインチューニングまで丁寧に解説されている。 2022年3月現在、いきなり最新の手法から始めたいならこの本だと思う。ただしPythonは理解できる前提。なお動作環境がGoogle Colabとなっていて、環境構築の手間が無いという点でもプログラミング初心者には比較的始めやすいと思う。

BERT自体の説明はあるけど自然言語処理や機械学習についての基本的な説明は足りないので、ここから自然言語処理に話を広げたい場合はこの一冊では厳しいと思う。逆に、自然言語処理にガッツリ取り組むつもりはないけど最新の手法に触れてみたいという場合は無駄が少なくて良いかもしれない。

他に読んだ本

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎 | Andreas C. Muller, Sarah Guido, 中田 秀基

終盤に"英語の"自然言語処理の章あり。内容としては本稿で紹介した中だと「機械学習・深層学習による自然言語処理入門」をすごく小さく圧縮したようなイメージで、これ一冊では色々と足りないものの自然言語処理に触れてみる事はできる。

本書は自然言語処理に限らず機械学習の入門書として良書なので、機械学習も始めるなら持っておいて損はないと思う。ただしPythonは理解できる前提。

日本語教師のための 入門言語学―演習と解説― | 原沢伊都夫

自然言語処理ではなくて、日本語言語学の本。日本語自然言語処理をやる上で日本語文法の話は知っている前提で進む事が多いので、国語科が苦手だった私にとってはこういう本も手元に置いておきたくなる。

基礎日本語文法・改訂版 | 益岡 隆志, 田窪 行則

こちらも上に同じく日本語についての本。放送大学テキストの参考文献として挙げられていた。特に形態素解析あたりの話の背景知識が欲しい場合に。

画像の出典