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を使う
おわりに
索引
謝辞