「rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10...

27

Upload: others

Post on 13-Sep-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト
Page 2: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

「R によるテキストマイニング

入門(第 2 版)」

サンプルページ

この本の定価・判型などは,以下の URL からご覧いただけます.

http://www.morikita.co.jp/books/mid/084842

※このサンプルページの内容は,第 2版 1刷発行時のものです.

Page 3: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

 

Page 4: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

i

まえがき

本書は 2008年に出版された初版を大幅に修正した第 2版である.この間,テキストマイニングおよびデータ分析にかかわる技術動向は大きく変化した.この変化に対応すべく,第 2版は旧版の内容を大幅に書き直している.さらに,新たなトピックをいくつか追加した.たとえば,ウェブスクレイピングという技術にふれている.これはブログや SNSなどに登録された情報を機械的に抽出する技術であり,投稿記事などからデータを収集する技法の一つとして広く利用されている.また,テキストマイニングの分析技法として,トピックモデルなどを新規に取り上げた.筆者の印象としては旧版の 9割近くを書き直しているので,本書初版をすでに読み通された読者におかれても,改めて手に取ってみていただければ幸いである.さて,テキストマイニングとは,テキスト(文書)をコンピュータで探索(マイニン

グ)する技術の総称である.現在では,テキストのほとんどはコンピュータを使って作成されている.また,作成されたテキストの多くがインターネット上に公開されている.小説や新聞記事(ニュース)もインターネット上で閲覧することができる.テキストマイニングを応用することで,そうした大量のテキストを一つひとつ読むまでもなく内容を推測できる.また,それぞれのテキストの内容の類似度をソフトウェアで判定してグループ化することもできる.さらには,ていねいに読んでも気づきにくい隠れた構造を探ることすら可能になる.たとえば,ある商品について投稿された記事を収集し分析することで,購入者に共

通の反応(満足度あるいは不満点)が明らかになるかもしれない.その商品に興味を抱いている消費者からすれば,分析結果は実際に購入するか否かの判断に役立てることができる.一方,メーカーの側からすると,こうした意見は商品の改善,あるいは新商品開発のヒントになるだろう.ただ,ブログや SNSには毎日膨大な数の投稿があり,ここから必要とする情報を人手で探しあてるのは現実的な作業ではない.一方,紙媒体で実施される伝統的なアンケートには「自由記述欄」があることが多

い.この欄に書き込まれた文章は,ほかの設問項目に対する回答からはうかがいえなかった回答者の意識などを知る手がかりになる可能性がある.とはいえ回答数が多くなると,自由記述欄をすべて読み通し,すべての回答に共通する意見を導き出すのは手間である.さらにいえば,文章を読んで意見を要約するという作業は,分析者のその時々の印象に左右される.

Page 5: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

ii まえがき

対象とするテキストの数が多すぎてすべてを読み通せない.あるいは,読み通せたとしても結論が主観に左右されてしまう.これを克服する技術となりうるのがテキストマイニングである.テキストマイニングでは,テキストデータをコンピュータが分析できる形に変換する.その典型的な方法が,テキストにおける単語の出現回数,すなわち頻度を数え上げることである.テキストを頻度データに置き換えることで,数値的な解析が可能になる.つまり,データマイニングや機械学習などの手法を適用でき,テキストの特徴を統計的に調べたり,可視化したりすることができるようになる.テキストを単語の頻度表に変換するためには,文章を単語に区切る技術が必要になる.これは形態素解析といわれる.一方,データ分析にはデータマイニングや機械学習という技術が使われる.いずれも現在では個人がパソコンで実現できる環境が整っている.形態素解析器では MeCab がもっとも有名なソフトウェアであり,データ分析とグラフィックス作成では Rが代表的な環境である.いずれもオープンソースとして提供されている.本書では MeCab と R で日本語テキストマイニングを実行する方法を解説している.本書を通じて,読者はテキストマイニングの基本から応用までを,自身のパソコンで実際に操作しながら学ぶことができる.なお,改訂版の出版にあたって森北出版の上村紗帆氏と二宮惇氏にたいへんお世話になった.ここに記して謝意を表したい.

2017年 4月著 者 

1 + 2

[1] 3

 本書では,入力するコード(命令)を以下のような枠で示す.

 また,出力結果は以下のような枠で示す.

Page 6: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

iii

目 次

第 1章 テキストマイニングとは何か 1

1.1 データマイニングとテキストマイニング · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1

1.2 応用事例 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 2

1.3 日本語処理 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 7

1.4 データ解析のツール · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 8

第 2章 テキストマイニングの準備 11

2.1 R のインストール · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 11

2.2 RStudioの導入 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 12

2.3 MeCab の導入 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 14

2.4 MeCabのインストール · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 15

2.5 MeCab の実行 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 18

2.6 RMeCab の導入 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 20

2.7 MeCab の辞書整備 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 20

第 3章 R/RStudio 速習 24

3.1 プロジェクト · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 24

3.2 起動から終了まで · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 25

3.3 Rにおけるデータの基本型 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 27

3.4 ベクトル · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 28

3.5 関数 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 29

3.6 データフレーム · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 31

3.7 CSV ファイルの読み込み · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 32

3.8 データフレームの操作(添字) · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 34

3.9 リスト · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 38

3.10 リストの繰り返し処理 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 41

3.11 行列 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 42

3.12 パイプ処理 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 42

3.13 データフレームを操作する主な関数 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 46

Page 7: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

iv 目 次

3.14 制御構文 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 48

3.15 関数の作成 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 50

3.16 その他,便利な関数 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 51

3.17 グラフィックス · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 54

第 4章 文字処理と正規表現 56

4.1 文字データの検索・置換 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 56

4.2 stringr パッケージによる処理 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 57

4.3 正規表現で使われる記法 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 59

4.4 tm パッケージ · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 64

4.5 単語文書行列の生成 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 69

第 5章 RMeCab によるテキスト解析 72

5.1 RMeCabパッケージ · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 72

5.2 短いテキストの解析 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 72

5.3 MeCab の解析出力をすべて取り込む方法 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 75

5.4 頻度表の作成と利用 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 78

5.5 単語文書行列の生成 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 86

5.6 N グラムのデータフレームの生成 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 94

5.7 関数一覧 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 99

第 6章 口コミのテキストマイニング—ウェブスクレイピング 101

6.1 SNSからのスクレイピング · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 101

6.2 ウェブスクレイピングの準備 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 103

6.3 バイグラムとネットワークグラフ · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 108

第 7章 アンケート自由記述文の分析—対応分析 112

7.1 沖縄観光への意見データ · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 112

7.2 アンケート自由記述文のデータ整形 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 114

7.3 意見データの対応分析 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 119

7.4 独立性の検定(カイ自乗検定)· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 120

7.5 対応分析 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 122

Page 8: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

目 次 v

第 8章 青空文庫データの解析—ワードクラウドとネットワークグラフ 126

8.1 ダウンロードしたファイルの整形と解析 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 126

8.2 ネットワークグラフ · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 131

第 9章 テキストの分類—クラスター分析,トピックモデル 138

9.1 解析の準備 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 138

9.2 クラスター分析 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 139

9.3 所信表明演説のクラスター分析 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 140

9.4 潜在的意味インデキシング · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 142

9.5 特異値分解 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 143

9.6 潜在的意味インデキシングによる分類 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 146

9.7 トピックモデル · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 148

第 10章 書き手の判別—漱石と鴎外の文体比較 157

10.1 分析テキスト · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 157

10.2 N グラムを利用したクラスター分析 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 158

10.3 書き手の癖 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 159

10.4 主成分分析 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 161

10.5 主成分分析による作家の判別 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 163

第 11章 Twitter タイムラインの分析—API の利用 166

11.1 Twitter API の利用 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 166

11.2 R での準備 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 167

11.3 twitteR の利用 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 168

11.4 特定のアカウントのツイートを取得 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 168

11.5 トレンドの取得 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 173

参考文献 178

索 引 180

Page 9: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

Page 10: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

1

1 テキストマイニングとは何か

本章では,テキストマイニングとはどのような技術なのか,また何を目的とし,どのように活用できるのかを概観する.

1.1 データマイニングとテキストマイニング

まえがきで述べたように,テキストマイニングとは,テキスト(つまり文書)から知見を引き出す(マイニングする)技術である.データ解析の分野にデータマイニングがある.これは大量のデータの中から有益な情報を掘り出す (mining)技術あるいはその応用例の総称である.この分野でしばしば話題になるのが「オムツ」の例である.アメリカの大手スーパーマーケットチェーンがレジシステムに記録された膨大な売上データを調べたところ,紙オムツと缶ビールが一緒に買われる傾向があることを発見したという事例である.ここから,缶ビールと紙オムツを同じ棚に並べるというアクションが提案されたという話だが,真偽のほどは定かではない.ただ,膨大なデータをマイニングすると,人間には予想もつかない情報を導き出せることを物語る寓話として広く人口に膾炙している.同じように,テキストマイニングは大量のテキストから知見をみつけ出すのを助け

る技術である.もちろん数行程度の文章であれば分析者が読めばよい.しかし,文章が長くなり,かつテキストの数が多くなると,限られた時間内ですべてを読むのは困難である.さらに,読解という行為によって導き出された結論は分析担当者の経験,あるいは主観に大きく左右されるため,他者と共有しにくい.そこで,テキストの要約に相当する作業をコンピュータにゆだねようとするのがテ

キストマイニングである.コンピュータにゆだねることによって再現性が保証される.ここで,再現性とは,同じデータに同じ分析手法を適用すれば同じ結果が得られるという意味である.データ分析に携わる分野では reproducible research という言葉がよく使われる.再現性のある研究ということだが,この分野では特に,データと解析用のスクリプトを用意してソフトウェアに読み込ませると,データの整形と解析,結果を反映したグラフィックスの作成,そしてレポート(あるいはプレゼンテーション用のスライド)起草までを完全に自動化することが意図されている.

Page 11: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

2 第 1 章 テキストマイニングとは何か

1.2 応用事例

1.2.1 マーケティングでの応用事例テキストマイニングの導入が進んでいる分野としてマーケティングがあげられる.典型的な事例がサポートセンターでの意見分析である.サポートセンターには顧客から日々大量の質問やクレームが寄せられる.これらの意見を内容別にデータベース化した検索システムが用意されれば,顧客への電話サポートがスピードアップされ,企業イメージの向上にもつながる.さらに,サポートセンターに寄せられた質問や苦情は,既存商品の改良にとどまらず,新商品の開発につながるアイデアの宝庫である.しかし,日々寄せられる質問や意見は膨大であり,これらを一つひとつ担当者が分析したうえでレポートにまとめるには多大なコストと時間がかかる.手作業の分析では数ヶ月を要することも珍しくなく,結果が得られたとしても,すでに改善の機会を逸していたということもありうる.テキストマイニングは大量のテキストを瞬時に分析する技術であるので,サポート対策として導入する企業が早くから存在した[那須川 2006].たとえば,キヤノンではインクジェットプリンタ製品の販売増加にともない,初心者からの問い合わせが増加した.そこで,キヤノンは全世界のサポートセンターに寄せられる年間 600 万件に及ぶ意見の分析にテキストマイニング技術を活用してきた.この結果,サポートセンターの対応時間の短縮が実現され,製品マニュアルの改善にもつながっているという[上田ら 2005].また,ある飲料水メーカーにおいては,ソフトドリンクについて客から寄せられた多数の質問を分析してみると,もともと低カロリーな製品であるにもかかわらず,カロリーに関する問い合わせが多かった.そこで低カロリーをあえて前面に出すことで,売上を 2 割以上も伸ばしたという[三室 2007].一方,消費者や小売店に直接かかわる営業担当者が,会社に提出した「日報」にテキストマイニングを応用することで販売実績や評判を探る試みもある.たとえば,有能な営業マンの報告を分析し,成功の秘訣を全社的に共有するシステムを導入するという事例も報告されている.そのほかに注目されているのは,リスク管理のための応用事例である.商品に寄せられた消費者のクレームの中から,故障や不具合に関連するような意見を自動的に判別し,分析することで,早期に商品を改良できる.これにより,事後の問題発覚と,それにともなう監督官庁への報告,リコールといった企業イメージを損なう事態を回避することができる.これらは消費者から企業内に寄せられたテキストを分析した事例であるが,逆に企

Page 12: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

1.2 応用事例 3

業の側から消費者に積極的に意見を求めることも多い.つまり,アンケート調査を行うことで製品の評価,企業イメージを分析する試みも広く行われている.この場合,調査用紙には回答者の属性が含まれているのが普通である.属性とは,回答者の性別や年齢,職業に関する情報である.こうした属性を,自由記述欄に書き込まれたテキストの内容と関連付けることで,特定の購買層をターゲットにした商品の改善や改良に直接つながる情報を得ることができる.単純な例であるが,発売を予定している新商品を試用してもらい,その感想を自由

に記述してもらうとする.そこでは回答者の属性に加え,「買う」,「買わない」のどちらかにチェックを入れてもらう.この結果を集計し,「買う」と答えた回答者と「買わない」と答えた回答者を分けて,それぞれの自由記述文をテキストマイニングで分析すると,「買う」と答えた回答者が特に使っている単語,逆に「買わない」という回答に頻出する単語などを知ることができる.仮に,アンケートの対象が食器洗浄機の新製品であったとする.アンケートで「買

う」と答えた回答者の自由記述文に「機能」,「便利」などの単語が頻出しているようであれば,機能的には問題ないとも考えられる.しかし,たとえば世帯情報などを加えて検討したところ,「機能」に関する評価は独身者の回答に偏っており,主婦の場合には,買う買わないに関係なく,「高い」,「割高」,「狭い」,「スペース」などの単語が多く現れていたとする.これは新製品は高機能ではあっても,その価格やサイズに問題があると主婦層が感じていることをうかがわせる.食器洗浄機を購入する主導権を握っているのが仮に主婦層であるとすれば,メーカーとしては,新製品の機能を多少犠牲にしてでも,サイズや価格を抑えることを検討すべきであろう.逆に,主な利用者として独身者を想定しているのであれば,コマーシャルなどの宣伝活動において,特に高機能を前面に出す戦略が考えられよう.以上のように,テキストマイニングによって抽出した単語の情報を,性別や職業な

どの属性項目と関連付けることで,購買層それぞれの意見を洗い出すことができるのである.この場合,しばしば使われる分析手法が対応分析である.対応分析では,アンケート中に利用された単語と,回答者の性別や職業などの属性情報を,1 枚の散布図にプロットすることができる.散布図とは 図 1.1 のようなグラフで,あるデータと別のデータの関係を探るのにしばしば利用される.この結果,ある回答者のグループに特徴的な単語をグラフで確認することが可能になるのである.たとえば,ある食器洗浄機について独身者と主婦に「買う (Yes)」か「買わない (No)」

を尋ね,その理由を自由に書いてもらったとする.すると,回答者は四つのグループに分けられるが,それぞれの自由記述文に現れた単語の頻度を表 1.1のようにまとめる.このような表を対象として対応分析を実行すると,図 1.1 が描かれる.図からは

Page 13: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

4 第 1 章 テキストマイニングとは何か

図 1.1 アンケート結果

表 1.1 アンケート結果のクロス表

主婦 独身者「買う (Yes)」 「買わない (No)」 「買う (Yes)」 「買わない (No)」

「機能」 4 2 6 2

「スペース」 2 8 1 4

「場所」 2 9 2 4

「便利」 3 3 6 3

「割高」 1 7 2 2

「買う (Yes)」と答えた回答者と,「機能」や「便利」という単語群が近い位置にプロットされている.これに対して,「買わない (No)」と答えた回答者は「割高」や「場所」などの単語近くに布置されており,「買う」と答えた回答者グループとははっきり分かれて描画されている.さらには,いずれも「買う」と返答した独身者と主婦の反応の微妙な違いが,グラフの画面上の位置の違いに反映されている.対応分析については第 7 章のアンケート分析で改めて取り上げる.なお,表 1.1のような表をクロス表あるいは分割表という.二つのデータを組み合わせ,該当する回答数を数えて記録した表のことである.

1.2.2 人文科学分野での応用事例一方,人文科学分野でもテキストマイニング技術を応用した研究が始まりつつある.

Page 14: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

1.2 応用事例 5

もともと,人文科学分野は言語やテキストそのものが研究対象となる場合が多く,また,これまでに大量のテキストデータが電子化されて蓄積されている.このような電子化テキストの集まりをコーパスという.しかし,大量のテキストを同時に処理し,抽出された多数の情報から有用な情報を選り分けるための技術が,これまではあまり普及していなかった.そのため,過去の研究の多くは,ごく一部のテキストデータにもとづく個別かつ特殊な事例の報告という印象が強く,研究成果の一般化が行いにくかった.しかし,人文科学分野でもテキストマイニングの利用環境が整いさえすれば,応用研究は一気に進むと予想される.有名な研究例として,日本語の句読点の使い方について得られた知見を紹介しよう.

これは,読点「、」の使い方には,書き手自身もまったく意識していない癖があると仮定し,データから証明した事例である.日本語の文法には読点の使い方に明確なルールがない.つまり,どこに読点を打つかは書き手の判断に任せられている.だからといって書き手は読点を文章中にでたらめに打つわけではないようだ.すなわち,読点の使い方には,その書き手自身の文章スタイルがあると考えられる.たとえば,井上靖,中島敦,三島由紀夫,谷崎潤一郎の作品を調べ,読点とその直前の助詞の組み合わせに着目した研究が報告されている[村上 1994].すると,井上靖では「と」の後に読点を打つ文章が多く,中島敦は「し」の後に読点が続く用例が目立つ.また,三島由紀夫は「に」や「を」の後に読点が顕著に認められ,谷崎潤一郎は「ら」の後に読点を多用する.したがって,テキストから助詞と読点の情報を抽出し,その頻度情報を統計解析にかけることで,書き手の判別を行うことができるのである.書き手の癖を特定することで,さまざまな応用が考えられる.たとえば,作者不詳

の作品の著者を判断するための手がかりになる.また,誘拐事件などで送られてきた脅迫状を,捜査資料や裁判での証拠として採用することも検討されたことがあった.人文科学分野での応用事例の一つとして,文学作品をコンピュータで分類する試

み[石田 2006]を紹介する.図 1.2 はケラーとシュティフターという 18世紀のドイツで活躍した二人の作家の代表的な短編集 2編を,潜在的意味インデキシングという技法で分類した結果である.潜在的意味インデキシングについては第 9章のテキスト分類でくわしく説明するが,簡単にいうとテキストを圧縮することで,その内容を凝縮し,ほかのテキストとの類似性などを判定しやすくする技法である.ここで,各短編集には,ケラーで 6編,シュティフターで 6編の短編が収録されている.これらを統合した 12編のテキストに対して潜在的意味インデキシングを利用したテキストマイニングを行うと,それぞれの短編の内容的な近さを数値的に表現することができる.テキスト情報を数値に変換できれば,そこからさまざまなデータ分析,あるいはグラフィックス表現が可能となるわけである.

Page 15: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

6 第 1 章 テキストマイニングとは何か

図 1.2 ドイツの短編集の分析

この図でテキスト集合は,中央を左に外れたグループ 1Oと,中央から右上に位置するグループ 2Oに大別できる. 1Oはケラーの短編のクラスター(集合)であり, 2Oはシュティフターの短編のクラスターである.潜在的意味インデキシングにより二人の作家の作品群が分離されていることがわかる.さらに,この図をよく観察すると,下寄りの 3Oに,ほかの二つの作品群から離れて短編が一つだけプロットされている.これはケラーの書いた短編小説だが,この作品は成立年代やテキストの長さ,さらにはその内容においても,ケラーのほかの短編集収録作品とはかなり異なった性質をしている.実は,この作品はケラーの短編集に最初から収録されていたわけではなく,かなり後になって短編集が改訂された際に追加されたという事情がある.その点で,この作品はテーマも文体もケラーのほかの作品とは異質な雰囲気をもっている.この短編がプロット上に占める位置は,そうした特異性を反映しているといえるだろう.

1.2.3 テキスト検索さらに,テキストマイニングは,研究論文や特許文書の分類,検索にも応用されている.特に製薬・バイオ・ゲノム研究の分野では,毎年,膨大な量の研究成果が報告されており,専門の研究者でも全容を把握するのは困難である.そこで,研究報告をデータベース化するだけでなく,テキストマイニングを利用することで,出現するキーワードなどから各報告書の内容を推定し,テーマ別に分類していくことが可能になる.特許についても,同じように

Page 16: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

1.3 日本語処理 7

テキストマイニングを利用した要約システムが実用化されている(特許庁の検索ポータルhttp://www.jpo.go.jp/torikumi/searchportal/htdocs/search-portal/top

.htmlなどを参照されたい).また,いつ起きるかわからない地震などの災害に対する市民の防災意識の向上にテ

キストマイニングを役立てようとする研究もある[近藤ら 2005].あるいは,医療現場では,患者やその家族から回収した自由記述形式のアンケートをもとに,ケアの改善につながるヒントを得ようとする試みもある[藤井ら 2005].変わった事例としては,大学でレポートが剽窃でないかどうかを確認するためにテ

キストマイニングの技術が応用されている.最近の大学では,学生がWikipedia あるいは他人のブログからコピーペーストしたままのレポートを提出するケースが多数見受けられる.教員の側からすると,何かのコピーであることは容易に想像がつくのだが,その証拠をいちいち調査してはいられない.このため,レポートの剽窃を見抜くソフトウェアを導入する大学が増えている.このソフトには,Wikipedia などのコンテンツがデータベース化されており,学生が提出したレポートを入力すると,類似の内容がインターネット上のテキストにないかを検索したうえ,もしも怪しいと判断された場合には類似度を数値で示してくれる.テキストマイニングは一般には聞き慣れない言葉だろうが,以上のようにさまざまな分野で応用が進んでいるのである.こうした応用例を紹介している文献としては[石田,金 2012]がある.

1.3 日本語処理

ここまで説明したように,テキストマイニングで中心となる処理はテキストを単語に分解することである.たとえば,「太郎は次郎に本を渡した。」であれば,「太郎」「は」「次郎」「に」「本」「を」「渡し」「た」「。」と切り分ける.文をこのように分割することを「分かち書き」ともいう.文を単語のレベルにまで分解した後で,さらに活用形を原形(終止形)に変換することも行われる.また,その単語の品詞属性も重要な情報である.たとえば,「渡した」であれば「渡す」が原形であり,その品詞属性は「五段動詞」,活用は「連用形」である.こうした処理は「形態素解析」とよばれる.形態素とは,言語学で意味のある最小の単位を指すが,要するに単語のことだと理解してよい.日本語を形態素解析する技術は,ここ数年で格段に進歩した.また,解析を行う

ソフトウェアもいくつか開発されている.本書で取り上げる「MeCab(和布蕪)」は工藤拓氏が開発した形態素解析器であり,フリーソフトとして公開されている

Page 17: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

72

5 RMeCabによるテキスト解析

本章では,日本語形態素解析器 MeCabを R から利用する方法を紹介する.なお,関数の実行方法を説明するため,筆者が GitHub アカウントに公開

しているサポートファイルを多数読み込む.これらのファイルが,たとえば“C:YUsersYishidaYDownloadsYTextMining” というフォルダに保存されているのであれば,あらかじめ以下のようにして,ワークスペースを変更してほしい.なお,Rではフォルダ区切りを表すのにスラッシュを使う.

setwd("C:/Users/ishida/Downloads/TextMining")

ここでは “C:YUsersYishidaYDownloadsYTextMining”の中に, “data”フォルダが存在していることを前提に操作する.

5.1 RMeCabパッケージ

テキストデータを形態素解析にかけて単語などに分解することは, MeCab を使えば簡単にできる.ただ,MeCab による形態素解析の結果を分析データとして利用する場合,なんらかの形式に変換して R に取り込む必要がある.そこで,形態素解析を行った結果を RMeCabパッケージを使って R のデータ形式で保存する方法を紹介する.なお,RMeCab では日本語テキストを形態素に分解するだけでなく,文字単位で切り分けたり,品詞単位で分類したりすることもできる.文字単位のような「意味」を欠いたデータが,分析目的によっては有効な場合もある.たとえば第 1章で言及したように,日本語の助詞と読点の組み合わせによって書き手を推定することが可能である(具体的な応用事例については,第 10章「書き手の判別」で紹介している).

5.2 短いテキストの解析

比較的短い文章を指定して形態素解析を行い,その結果をリストとして保存するには, RMeCabC()を利用する.この関数に引用符付きで文章を指定して実行すると,形態素解析の結果がリストとして返される.

Page 18: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

5.2 短いテキストの解析 73

library(RMeCab)

RMeCabC("本を読んだ")

[[1]]

名詞"本"

[[2]]

助詞"を"

[[3]]

動詞"読ん"

[[4]]

助動詞"だ"

解析結果はリストであるが,unlist() を併用することでベクトルに変換できる.

library(dplyr)

RMeCabC("今日は本を読んだ。") %>% unlist()

名詞 助詞 名詞 助詞 動詞 助動詞 記号"今日" "は" "本" "を" "読ん" "だ" "。"

引用符で囲まれているのが形態素であり,その上に表示されているのは品詞情報である.品詞情報はベクトルの要素名として保存されているので,特定の品詞だけを取り出すには,以下のように %in% 演算子を,添字として角括弧内に指定すればよい.解析結果から名詞と動詞だけを取り出してみよう.

hon <- RMeCabC("今日は本を読んだ。") %>% unlist()

hon [names(hon) %in% c("名詞", "動詞")]

名詞 名詞 動詞"今日" "本" "読ん"

なお,デフォルトでは活用語(動詞など)は入力された形態のまま(すなわち表層語として)返されるが,第 2引数として 1 を指定することで,原形にすることができる.

Page 19: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

74 第 5 章 RMeCab によるテキスト解析

RMeCabC("今日は本を読んだ。", 1) %>% unlist()

名詞 助詞 名詞 助詞 動詞 助動詞 記号"今日" "は" "本" "を" "読む" "だ" "。"

「読んだ」が「読む」「だ」と分解されていることに注意されたい.RMeCabC() の引数指定については,コンソールで ?RMeCabC を実行することでヘルプが表示される.以下で紹介する RMeCab パッケージの関数にはすべてヘルプが備わっており,関数名の最初に ? を付与して実行すれば表示される.

?RMeCabC

実行すると RStudio の右下の [Help] タブに以下のように表示される(紙幅の都合で出力の一部を省略した).

RMeCabC package:RMeCab R Documentation

Description:

‘ RMeCabC’ makes MeCab analyze Japanese sentences, and returns its

results in the form of a list. If 1 is designated as the second argument,

it returns each morpheme in its basic form.

Usage:

RMeCabC(str, mypref, dic = ””, mecabrc = ””, etc = ””)

Arguments:

str: japanese strings(sentences)

mypref: Default being 0, the same morphemic forms that appear on the text are

returned. If 1 is designated, the basic forms of them are instead.

dic: to specify user dictionary, e.x. ishida.dic

mecabrc: to specify mecab resource file

etc: other options to mecab

Value:

returns a list.

簡単に説明すると,1 行目には関数名とパッケージ名,2行目からはこの関数の目的,そして 6 行目の Usage は関数の使い方である.この関数では, str, mypref, dic,

mecabrc, etc の五つの引数が指定できる.Arguments に引数およびデフォルト値の説明がある.str は解析する文字列, mypref は活用語を表層形にするか(デフォルト),原形に直すか (mypref=1) の指定, dic はユーザーが独自に作成した辞書ファイルを指定でき,mecabrc は MeCab 設定ファイルがデフォルト以外の位置に保存さ

Page 20: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

5.3 MeCab の解析出力をすべて取り込む方法 75

れている場合に指定し, etc は MeCab へ特別なオプションを渡すためにある.ただし,最後の二つ (mecabrc, etc) を使う機会はないだろう.Value は,この関数がリストを返すことを表している.ヘルプは英語であるため,直感的にはわかりにくいかもしれない.そこで,本書の

サポートサイトに付録として RMeCab.R というスクリプトを用意している.ここには RMeCab パッケージの全関数について引数の説明と実行例が記されている.使い方に迷ったら,このスクリプトを参照されたい.

5.3 MeCab の解析出力をすべて取り込む方法

RMeCabC() の場合,MeCab の解析結果のうち原形と品詞(の大分類)の情報だけが抽出されているが,すべてを残すには RMeCabText()を利用する.デフォルトでは引数としてファイルを指定することになっている.たとえば,ワークスペースの “data”

フォルダ内に「本を買った」という文章を記録した hon.txt というファイルがあるならば,次のように実行する.最初に,ワークスペースに hon.txt というファイルが存在するかどうかを確認しておこう.

file.exists("data/hon.txt")

[1] TRUE

RMeCabText() にファイル名を指定する際に,引用符で囲む必要があることに注意されたい.

RMeCabText("data/hon.txt")

file = data/hon.txt

[[1]]

[1] "本" "名詞" "一般" "*" "*" "*" "*" "本" "ホン"

[10] "ホン"

[[2]]

[1] "を" "助詞" "格助詞" "一般" "*" "*" "*"

[8] "を" "ヲ" "ヲ"

[[3]]

Page 21: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

76 第 5 章 RMeCab によるテキスト解析

[1] "買っ" "動詞" "自立"

[4] "*" "*" "五段・ワ行促音便"

[7] "連用タ接続" "買う" "カッ"

[10] "カッ"

[[4]]

[1] "た" "助動詞" "*" "*" "*" "特殊・タ"

[7] "基本形" "た" "タ" "タ"

出力はリスト形式となる.ファイルの中身である「本を買った」という文章の場合,四つの形態素で構成されており,それぞれの形態素について 10 個の情報が出力されている.なお,ファイルをあらかじめ用意せず,R の実行時に作成することもできる.作成したファイルを永続的に保存する必要がなければ,tempfile()を使って一時ファイルを作成して,解析実行後に削除すればよい.tempfile() は OS ごとに決められた一時ファイル保存先に仮ファイルを作成する.これらのファイルはいずれ OS によって自動的に削除されるが,利用直後に unlink() に引数として指定することで明示的に削除することもできる.

# 一時ファイルを作成tmp <- tempfile()

writeLines("本を買った", con = tmp)

x <- RMeCabText(tmp)

# 一時ファイルを削除unlink(tmp)

# 解析結果を確認x

[[1]]

[1] "本" "名詞" "一般" "*" "*" "*" "*" "本" "ホン"

[10] "ホン"

[[2]]

[1] "を" "助詞" "格助詞" "一般" "*" "*" "*"

[8] "を" "ヲ" "ヲ"

[[3]]

[1] "買っ" "動詞" "自立"

[4] "*" "*" "五段・ワ行促音便"

[7] "連用タ接続" "買う" "カッ"

[10] "カッ"

Page 22: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

5.3 MeCab の解析出力をすべて取り込む方法 77

[[4]]

[1] "た" "助動詞" "*" "*" "*" "特殊・タ"

[7] "基本形" "た" "タ" "タ"

四つの形態素のそれぞれについて,品詞や読みなどの詳細な情報がリストとして出力されている.たとえば,ここから読みだけを取り出したいとしよう.ここで,リストから要素を取り出すのに purrr パッケージを使ってみよう.purrr パッケージには,リストの操作や繰り返し処理を効率的に実行するための関数が用意されている.最初にインストールを実行して読み込む.

install.packages("purrr")

library(purrr)

x %>% map_chr(extract(9))

[1] "ホン" "ヲ" "カッ" "タ"

ここで利用した map_chr()は,purrr パッケージの基本関数である map()から派生した関数である.map() はリストから要素を効率的に取り出すための関数であるが,map_chr() は対象が文字列である場合に使うことができる.内部で指定しているextract()はリストの各要素から 9 番目の文字列を抽出している.一時ファイルを作成できない場合で,抽出する情報が形態素と品詞情報で十分であ

れば,データフレームの要素として文字列を登録して解析することもできる.

tmp <- data.frame(BUN = "本を買った", stringAsFactor = FALSE)

x <- docDF(tmp, "BUN", type = 1)

x

TERM POS1 POS2   Row1

1  た 助動詞    *    1

2  を  助詞 格助詞    1

3  本  名詞  一般    1

4 買う  動詞  自立    1

なお,出力の行の並び(順番)は,WindowsとMac/Linuxで異なる.

Page 23: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

180

索 引

記 号$ 36

%% 50

%<>% 47, 67, 113

%>% 45

%in% 52, 105, 107, 117, 149, 161

:: 123

! 117, 134

関 数aggregate() 51

Aozora() 127

apply() 42

arrange() 79, 108, 172, 176

as.character() 66

autoplot() 164

availableTrendLocations() 173

basename() 172

brewer.pal() 131

c() 28

CA() 119

cbind() 153

collocate() 83

collScores() 86

colMeans() 35

corresp() 123

dist() 140, 159

docDF() 79, 94, 97, 116, 128, 131, 171

docMatrix() 87

docMatrix2() 93

docMatrixDF() 93

docNgram() 97, 158

docNgram2() 99

dtm2ldaformat() 151

edge.betweenness.community() 136

everything() 129, 134

extract() 77, 104

facet wrap() 155

file.exists() 75

filter() 46, 82

findAssoccs() 70

findFreqTerm() 70

for() 49

function() 50

fviz ca biplot() 119

gather() 155

geom bar() 155

getTrends() 174

ggdendrogram() 141, 159

graph from data frame() 109, 134, 177

grep() 56

grepl() 134

group by() 80

hclust() 140, 159

head() 33

html nodes() 103

html text() 103

iconv() 168, 171

if() 49

inspect() 65

install.packages() 167

lapply() 41

lda.collapsed.gibbs.sampler() 151

levels() 114

library() 37

list() 39

map() 77, 115

map chr() 77

matches() 119

mutate() 47

na.omit() 113

names() 53

Page 24: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

索 引 181

Ngram() 95

NgramDF() 98, 131, 176

NROW() 81, 115

options() 168

paste() 52, 171

PCorpus() 65

plot3d() 147

princomp() 162, 164

read.csv() 33

read excel() 38, 121

RMeCabC() 72

RMeCabFreq() 78

RMeCabText() 75

rownames() 160

rowSums() 117

sapply() 41

searchTwitter() 175

select() 46, 113

set.seed() 152

setup twitter oauth() 168

statusText() 170

str() 36

str detect() 58

str extract() 58, 146

str extract all() 61

str replace() 58

str subset() 58, 152

sub() 57

subset() 45

summarize() 81

summary() 112

svd() 144

t() 159, 164

tail() 108

tempfile() 76, 171

TermDocumentMatrix() 69

tkplot() 109, 135, 177

tm map() 66

top.topic.words() 152

twListToDF() 175

unique() 132

unlink() 172

use series() 114, 132

userTimeline() 168

VCorpus() 65

wordcloud() 130, 172

writeLines() 104, 116

xtabs() 114, 121

パッケージdplyr パッケージ 42

factoextra パッケージ 119

FactoMineR パッケージ 119

ggdendro パッケージ 141, 159

ggfortify パッケージ 164

ggplot2 パッケージ 54, 155

igraph パッケージ 109, 177

lda パッケージ 149

magrittr パッケージ 47, 104

purrr パッケージ 77, 115

readxl パッケージ 37, 121

rgl パッケージ 146

rtweet パッケージ 167

rvest パッケージ 103

SnowballC パッケージ 69

stringr パッケージ 57

tidyr パッケージ 155

tm パッケージ 64

topicmodels パッケージ 149

twitteR パッケージ 167

wordcloud パッケージ 130, 172

英 字API 166

CRAN 11

CSV 32

GitHub 9, 37

IDF 90

iris 54, 162

latent Dirichlet allocation 148

LDA 148

MeCab 7, 14

MI 値 84, 85

NA 28

N グラム 94

p 値 121

Page 25: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

182 索 引

R 11

RStudio 12

TF 90

ToothGrowth 43

Twitter 166

T 値 84, 85

Unicode プロパティー 63, 170

Web scraping 101

あ 行青空文庫 83, 126, 157

芥川龍之介 83

因子 35

ウェブスクレイピング 101

ウォード法 141

エスケープ文字 60

沖縄県観光 112

オブジェクト 26

か 行カイ自乗検定 121

カテゴリ変数 36

関数 29

機能語 89

帰無仮説 121

共起語 82

局所的重み 90

距離 140

口コミ 101

クラスター分析 139

クロス表 4, 114

形態素 14

形態素解析 7, 14

検定 121

コサイン正規化 90

コード 26

異なり語 78

コーパス 5

コミュニティー 135

固有値分解 162

さ 行射影 143

主成分 162

主成分得点 162

主成分分析 161

ショートカットキー 31

水準 36

ステミング 69

ストップワード 68

スパン 83

正規化 90

正規表現 56, 59, 170

セッション 27

潜在的意味インデキシング 5, 142

添字 29, 34

た 行大域的重み 90

対応分析 3, 119, 122

代入 26

タイプ 19, 78

対立仮説 121

ターム 19

単語文書行列 69, 86

重複行の統合 80

テキストマイニング 1

データ型 27

データ構造 28

データフレーム 31

転置 86, 141

デンドログラム 141, 159

特異値分解 143

読書メーター 101

独立性の検定 121

トークン 19, 78

トピックモデル 148

トレンド 173

な 行内容語 89

夏目漱石 157

ネットワークグラフ 109, 131

ノード 82

延べ語 78

Page 26: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

main : 2017/6/5(9:9)

索 引 183

は 行バイグラム 108, 109, 131, 158, 160

パイプ演算子 45

パイプ処理 42, 45

バイプロット 119

パッケージ 37

引数 30

否定演算子 117, 134

ビネット 48, 148

表層語 73

分割表 4, 114

文書単語行列 86

ベクトル 28

ベクトル演算 49

ヘルプ 30

本書の付録ファイル 9

ま 行宮沢賢治 126

メタ文字 60

文字クラス 62

モデル式 52, 114, 121

森鴎外 157

や 行有意 84

ら 行量指定子 60, 62

わ 行ワークスペース 26

ワードクラウド 130

Page 27: 「Rによるテキストマイニング - morikita.co.jp · 9.7 トピックモデル 148 第10 章 書き手の判別— 漱石と鴎外の文体比較 157 10.1 分析テキスト

okuzuke : 2017/5/29(9:22)

著 者 略 歴石田 基広(いしだ・もとひろ)  1989 年 東京都立大学大学院人文科学研究科修士課程修了  1991 年 東京都立大学大学院人文科学研究科修士課程中退  1991 年 広島大学文学部助手  1994 年 徳島大学総合科学部講師  1996 年 徳島大学総合科学部助教授  2008 年 徳島大学総合科学部准教授  2012 年 徳島大学大学院ソシオ・アーツ・アンド・サイエンス研究部教授  2017 年 徳島大学大学院社会産業理工学研究部教授  現在に至る

 編集担当 上村紗帆(森北出版) 編集責任 富井 晃(森北出版) 組  版 藤原印刷 印  刷   同   製  本   同  

Rによるテキストマイニング入門 (第 2版) c⃝石田基広 2017

2008 年 12 月 22 日 第 1 版第 1 刷発行 【本書の無断転載を禁ず】2016 年 9 月 10 日 第 1 版第 8 刷発行2017 年 6 月 30 日 第 2 版第 1 刷発行

著  者 石田基広発 行 者 森北博巳発 行 所 森北出版株式会社

東京都千代田区富士見 1-4-11(〒 102-0071)電話 03-3265-8341 / FAX 03-3264-8709http://www.morikita.co.jp/日本書籍出版協会・自然科学書協会 会員

<(社)出版者著作権管理機構 委託出版物>

落丁・乱丁本はお取替えいたします.

Printed in Japan / ISBN978-4-627-84842-9