Pythonで動かして学ぶ 自然言語処理入門


Pythonで動かして学ぶ 自然言語処理入門


翔泳社


著者:柳井孝介、庄司美沙


はじめに
本書について
目次

第0章 自然言語処理とは

第1部 データを準備しよう
第1章 実行環境を整えよう
1.1 実行環境の概要
 OS環境はLinux
1.2 実行環境の構成
1.3 Windows 10にUbuntuをインストールする
1.4 Linuxコマンドの使い方
 補完機能を使おう
 作業フォルダーを準備する
1.5 Ubuntuへのソフトウェアのインストール方法
 pipのインストール
1.6 Pythonプログラムを実行してみる

第2章 テキストデータを収集しよう
2.1 データ収集とは
2.2 Webページのスクレイピング
 HTMLのソースコードを覗いてみる
 HTMLファイルの取得とrobots.txt
 文字コードに注意しよう
 文字コードを変換しながらWebページを取得する
2.3 テキストデータを抽出する
 Beautiful Soup
2.4 テキストデータのクレンジング
2.5 データ収集のプログラム

第3章 データベースに格納しよう
3.1 データベースを使った検索エンジン
3.2 データベースと検索エンジンの用途
 データベースを使うメリット
3.3 データベースを使ってみる
 Wikipediaのページのダウンロード
 SQLiteを使う
 SQL
 テーブルの作成
 データベースにデータを格納する
 データベースの内容を表示する
3.4 Solrの設定とデータ登録
 ダイナミックフィールド
 Solrをインストールする
 コアを作成する
 データを登録する
3.5 Solrを使った検索
 AND/ORを使ったクエリ
 複雑なクエリ
 クエリを使ってみる

第2部 テキストデータを解析しよう
第4章 構文解析をしよう
4.1 構文解析とは
 日本語のテキストの特徴と形態素解析
 テキスト構造の解析方法
4.2 構文解析の用途
4.3 係り受け構造とは
 文節に区切る
 分析の修飾関係を考える
4.4 CaboChaのセットアップ
 CRF++のダウンロードとインストール
 MeCabのダウントードとインストール
 CaboChaのダウントードとインストール
 MeCabでよく現れる品詞
4.5 PythonからCaboChaを呼び出そう
 PythonからCaboChaを呼び出すプログラム
 実行してみる
4.6 係り受け構造の解析結果のSQLiteへの格納
 文単位に分割する
 文、チャンク、トークン情報をSQLiteに保存する
 保存されたテキストデータをCaboChaで解析する

第5章 テキストにアノテーションを付ける
5.1 アノテーションとは
5.2 アノテーションの用途
5.3 アノテーションのデータ構造
 CaboChaによる構文解析で現れたアノテーション
5.4 正規表現のパターンによるテキストデータの解析
 正規表現の例
 正規表現のメリット・デメリット
 代表的な記法
5.5 精度指標:RecallとPrecision
5.6 アノテーションのSQLiteへの格納
5.7 正規表現の改良
5.8 チャンクを使わない抽出アルゴリズムを考える

第6章 アノテーションを可視化する
6.1 アノテーションを表示するWebアプリ
6.2 アノテーションを可視化する必要性
6.3 アノテーションツールbrat
 bratのダウンロードとインすt-る
 bratを立ち上げる
 アノテーションデータをbrat形式に変換する
 アノテーションデータをbratに読み込ませる
6.4 Webアプリケーション
 「はじめてのWebアプリ」を作ってみよう
 HTMLフィルを作成する
 JavaScriptプログラムを作成する
 アクセスしてみる
6.5 bratをWebアプリケーションに組み込もう
6.6 SQLiteからアノテーションを取得して表示する

第7章 単語の頻度を数えよう
7.1 テキストマイニングと単語の頻度
7.2 統計的手法の用途
7.3 単語の重要度とTF-IDF
 TF-IDF
 コーパス
 TF-IDFを計算する
7.4 文書間の類似度
 コサイン類似度
 類似文書検索
 TF-IDFを計算する
7.5 言語モデルとN-gramモデル
 N-gramモデル
 N-gramを計算するプログラム
 「日本語らしさ」を計算する
7.6 クラスタリングとLDA

第8章 知識データを活用しよう
8.1 知識データと辞書
8.2 エンティティ
8.3 知識データを活用することでできること
8.4 SPARQLによるDBpediaからの情報の呼び出し
 DBpediaから同義語を取得
 類似度を計算
 人口の値
8.5 WordNetからの同義語・上位語の取得
 上位語
 下位語
8.6 Word2Vecを用いた類語の取得
 アナロジーの計算

第3部 テキストデータを活用するWebアプリケーションを作ろう
第9章 テキストを検索しよう
9.1 Solrを使った検索Webアプリケーション
9.2 検索の用途
9.3 転置インデックス
9.4 プログラムからのSolrの検索
9.5 Solrへのアノテーションデータの登録
 データをSolrに登録する
 文書単位で検索する
 アノテーションを使って検索する
9.6 検索結果のWebアプリケーションでの表示
 HTMLファイル
 JavaSciptのプログラム
 サーバーサイドのプログラム
9.7 検索時の同義語展開
9.8 アノテーションでの検索

第10章 テキストを分類しよう
10.1 テキスト分類とは
10.2 テキスト分類の用途
10.3 特徴量と特徴量抽出
10.4 ルールベースによるテキスト分類
 ルールベースでテキスト分類するプログラム
 結果に精度を上げる
10.5 教師あり学習によるテキスト分類
 教師あり学習とは
 学習データの作成
 学習
10.6 ディープラーニングによるテキスト分類
 プログラムの作成
10.7 分類結果のWebアプリケーションでの表示

第11章 評判分析をしよう
11.1 評判分析とは
11.2 評判分析技術の用途
11.3 辞書を用いた特徴量抽出
11.4 TRIEを用いた辞書内語句マッチ
11.5 教師あり学習による評判分析
 学習データの作成
 学習
11.6 評判分析の結果を表示するWebアプリケーション

第12章 テキストからの情報抽出
12.1 情報抽出とは
 関係抽出
12.2 情報抽出技術の用途
12.3 関係のアノテーション
12.4 正規表現を用いた関係抽出
12.5 係り受け構造を用いた関係抽出
12.6 抽出した関係をSolrに登録
12.7 抽出した関係を表示するWebアプリケーション

第13章 系列ラベリングに挑戦しよう
13.1 系列ラベリングとその特徴
13.2 系列ラベリングの用途
13.3 CRF(条件付き確率場)
 CRFの概念図
13.4 系列ラベリング用の学習データ
 アノテーションをもとにデータを出力する
 学習用データの作成
13.5 CRF++を用いた学習
13.6 CRF++の出力のアノテーションへの変換
13.7 CRF++で付けたアノテーションをSolrで検索する

付録
A.1 Wikipediaのダンプデータを使う
 ダンプデータのダウンロード
 テキストデータを取り出す
A.2 PDF、Wordファイル、Excelファイルを使う
 Apache Tikaを使う

おわりに
索引
謝辞

書籍目次

Posted by shi-n