『Rによるやさしいテキストマイニング』という本を刊行します

 2月17日、『Rによるやさしいテキストマイニング』という単著を刊行いたします。目次などは出版社のウェブサイトで公開されていますが、ここでは、もう少し詳しくご紹介します。*1

Rによるやさしいテキストマイニング

Rによるやさしいテキストマイニング

どうして本書が書かれたのか?

 近年、アンケートの自由回答データなどを定量的に分析するテキストマイニングの技法が大きな注目を集めています。Amazonで「テキストマイニング」という単語をタイトルに含む書籍を検索すると、本書執筆時点で30件以上ヒットします。しかし、「テキストマイニングを始めてみたいが、何から手をつけてよいか分からない」、「テキストマイニングの本はどれも難しい」などという声もしばしば聞こえてきます。これからテキストマイニングを始めてみようという人は、分析ツールの解説書で紹介されているような処理がなぜ必要なのか、あるいは、複数の手法の中で結局どれを選べばいいのか、といった疑問を抱くことがあります。また、実際の研究や業務のためのテキストデータをどのように集めればよいのか、が分からないという人もいます。そして、サンプルデータの分析ができるようになっても、本で学んだ技術が自分の研究や業務とどのようにつながるのか、というイメージが湧かない場合もあります。
 そこで本書では、単なるツールのハウツー本にならないように、データの収集方法、言語学や言語処理の分析手法に関しても詳しく解説します。類書には、「とりあえず、テキストマイニングを体験してみよう」という趣旨のもと、すぐにツールの使い方を紹介するものが多くあります。それに対して、本書では、「基礎編」でテキストデータの構築と分析に関する理論的な枠組みを学び、「準備編」でデータ収集やデータ分析の基本をひととおり身につけた上で、「実践編」のテキストマイニングに進みます。目次を見て頂ければ分かるように、全10章から構成される本書では、前半の5章が「基礎編」と「準備編」に割かれています。

本書の想定読者は誰か?

 本書で想定されている読者は、テキストマイニングに興味を持つ人文・社会科学系の大学生、商品企画やカスタマーサポートに関わるビジネスパーソンなどです。本書は、「テキストマイニングを学ぶと、どんなことができるようになるのか」、「テキストマイニングに必要な知識とは、一体何だろうか」、「高価なツールを使わずに、テキストマイニングをするにはどうしたらいいのか」といった疑問に答えます。
 これまで筆者は、複数の大学において、人文・社会科学系の受講生を対象とするテキストマイニングの授業を担当してきました。また、研究者向け、あるいはビジネスパーソン向けのセミナーで、テキストマイニングに関する講義をした経験もあります。それらの授業やセミナーの参加者の大半は、言語学統計学の知識を持たない人々です。本書には、筆者がこれまでに接してきた初心者たちに評判の良かった説明や実例が多く盛り込まれています。

本書を読むと何ができるようになるのか?

 本書を読むと、データの構築から分析まで、テキストマイニングに関する基本的な知識と技術をひととおり身につけることができます。また、単にツールの操作方法を知るだけでなく、どのようなときにどのような分析方法を用いるべきか、という判断がある程度できるようになります。
 本書では、テキストマイニングを行うにあたって、筆者が非常に重要であると思う技術のみを厳選して紹介します。それ以外の技術に関しては、別の文献を読む必要があります。しかし、本書では、より高度な書籍や論文を読み解くための足がかりを提供します。具体的には、より発展的な話題や技術に関して、コラムや脚注などで、次に読むべき文献を紹介します。また、必要に応じて、読者が自分でインターネット検索をするための検索キーワードの例を示します。筆者は、読者が単に本書に書かれた知識を得るだけでなく、たとえ書かれていないことであっても独力で調べられるようになるための手助けをしたいと考えています。

本書で使うツールは何か?

 本書では、主に、Rというデータ解析のソフトウェアを使用します。Rは、フリーウェアですので、誰でも自由にダウンロードして使用することができます。また、テキストマイニングだけでなく、様々なデータ解析機能を備えています。Rよりも使いやすい商用のテキスト分析ツールも存在しますが、お金のない学生や予算の限られた会社にとって、フリーウェアは非常にありがたいものです。そして、Rの使い方を1つずつ学んでいくことで、実際のデータ処理の過程をより深く理解することができます。

文系の読者でもテキストマイニングが使えるようになるのか?

 所謂「文系」の読者にとって、テキストマイニングのようなデータ処理は、あまり馴染みがないかも知れません。しかし現在、テキストマイニングは、社会学政治学のような社会科学、文学や歴史学のような人文科学でも盛んに活用されています。データ解析の技術は、もはや「理系」だけのものではありません(筆者も、大学時代は文学部でアイルランド文学の研究をしていました)。本書が読者の研究や業務にテキストマイニングを導入するきっかけとなりましたら、筆者にとって望外の喜びであります。

謝辞

 本書を出版する機会を与えてくださったオーム社に心より感謝の意を表します。また、本書の草稿に対して貴重なご意見をくださった石田基広徳島大学)、金明哲同志社大学)、田中省作立命館大学)、岡﨑友子東洋大学)、村上明ケンブリッジ大学)、西原史暁(教育測定研究所)の各氏に御礼を申し上げます。*2 そして、オンラインや対面で多くのことを教えてくださったRコミュニティの皆様、本書で紹介しているツールを開発された方々にも感謝します。

関連書籍

Rによるやさしいテキストマイニング: 機械学習編

Rによるやさしいテキストマイニング: 機械学習編

*1:以下の文章は、本書の「はじめに」の一部に加筆修正などを加えたものです。

*2:これらの所属は、本書刊行当時のものです。

Rで英文に品詞情報を付与する

 Rで英文に品詞情報を付与したいときは、openNLPパッケージを利用します。このパッケージの関数を使うと、Apache OpenNLP Maxent Part of Speech taggerによる品詞情報付与を行うことができます。以下の例では、Rの公式ウェブサイトから取った文に品詞タグを付与しています。

# パッケージの読み込み
library(openNLP)
library(NLP)

# テキストの読み込み
text <- "R is a free software environment for statistical computing and graphics."
text <- as.String(text)

# 品詞情報付与
sent_token_annotator <- Maxent_Sent_Token_Annotator()
word_token_annotator <- Maxent_Word_Token_Annotator()
text_an <- annotate(text, list(sent_token_annotator, word_token_annotator))
pos_tag_annotator <- Maxent_POS_Tag_Annotator()
text_an2 <- annotate(text, pos_tag_annotator, text_an)

# 品詞情報付与結果の整形
text_an3 <- subset(text_an2, type == "word")
tags <- sapply(text_an3$features, "[[", "POS")
sprintf("%s: %s", text[text_an3], tags)

 上記のスクリプトを実行すると、以下のような結果が表示されます。

 [1] "R: NN"           "is: VBZ"         "a: DT"          
 [4] "free: JJ"        "software: NN"    "environment: NN"
 [7] "for: IN"         "statistical: JJ" "computing: NN"  
[10] "and: CC"         "graphics: NNS"   ".: ."   

 このパッケージの詳しい使い方については、公式のマニュアルを参照してください。*1

(2017年9月23日追記)なお、本記事の内容につきましては、以下の書籍でより詳しく解説しています。ご興味をお持ちの方は、そちらもご参照頂ければ幸いに存じます。

*1:Parse_Annotator関数という構文解析のための関数も実装されていて、英文を解析するにはopenNLPmodels.enというパッケージが必要らしいのですが、現在はCRANから削除されていて、こちらで公開されているようです。

文章を自動要約する

 Rで文章の自動要約をするには、LSAfunパッケージのgenericSummary関数を使います。この関数を使うと、文章全体を最も的確に表すk個の文を抽出することができます。以下は、Rogue OneのWikipedia記事(英語版)の一部を使った例です。

# パッケージの読み込み
library(LSAfun)
# 文章の読み込み
text <- "Rogue One: A Star Wars Story (or simply Rogue One) is a 2016 American epic space opera film directed by Gareth Edwards and written by Chris Weitz and Tony Gilroy, from a story by John Knoll and Gary Whitta. The film, a Lucasfilm production and distributed by Walt Disney Studios Motion Pictures, stars Felicity Jones, Diego Luna, Ben Mendelsohn, Donnie Yen, Mads Mikkelsen, Alan Tudyk, Jiang Wen, and Forest Whitaker. The story follows Jyn Erso, daughter of the unwilling designer of the Galactic Empire's superweapon the Death Star, and her mission to retrieve the schematics so the Death Star can be destroyed. The first film in the Star Wars Anthology series, Rogue One is set immediately before the events of the original 1977 Star Wars film and is the first live-action Star Wars film to not feature an opening crawl. Principal photography began at Elstree Studios near London during early August 2015 and wrapped in February 2016, with reshoots and additional filming taking place in mid-June 2016. The film premiered in Los Angeles on December 10, 2016 and was released in the United States on December 16, 2016. Rogue One received generally positive reviews, with praise for its acting, action sequences, musical score, and darker tone, although some criticism was directed at its use of computer-generated imagery to revive certain characters. It has grossed over $1 billion worldwide, making it the fourth highest-grossing film of 2016 and 27th all-time. The film has been nominated for two Oscars at the 89th Academy Awards: Best Sound Mixing and Best Visual Effects."
# 文章要約(k = 1)
> genericSummary(text, k = 1)

 上記のスクリプトを実行すると、以下のような結果が表示されます。

[1] "The first film in the Star Wars Anthology series, Rogue One is set immediately before the events of the original 1977 Star Wars film and is the first live-action Star Wars film to not feature an opening crawl"

 因みに、kの数を2や3に変化させると、以下のような結果が得られます。

# k = 2の場合
[1] "The first film in the Star Wars Anthology series, Rogue One is set immediately before the events of the original 1977 Star Wars film and is the first live-action Star Wars film to not feature an opening crawl"
[2] "Rogue One: A Star Wars Story (or simply Rogue One) is a 2016 American epic space opera film directed by Gareth Edwards and written by Chris Weitz and Tony Gilroy, from a story by John Knoll and Gary Whitta"    
# k = 3の場合
[1] "The first film in the Star Wars Anthology series, Rogue One is set immediately before the events of the original 1977 Star Wars film and is the first live-action Star Wars film to not feature an opening crawl"
[2] "Rogue One: A Star Wars Story (or simply Rogue One) is a 2016 American epic space opera film directed by Gareth Edwards and written by Chris Weitz and Tony Gilroy, from a story by John Knoll and Gary Whitta"    
[3] "Principal photography began at Elstree Studios near London during early August 2015 and wrapped in February 2016, with reshoots and additional filming taking place in mid-June 2016"                            

(2017年9月23日追記)なお、本記事の内容につきましては、以下の書籍でより詳しく解説しています。ご興味をお持ちの方は、そちらもご参照頂ければ幸いに存じます。

2017年1月に購入した本・ご恵贈頂いた本

 以下の本を購入しました。

Fundamental Considerations in Language Testing (Oxford Applied Linguistics)

Fundamental Considerations in Language Testing (Oxford Applied Linguistics)

Language Testing in Practice: Designing and Developing Useful Language Tests (Oxford Applied Linguistics)

Language Testing in Practice: Designing and Developing Useful Language Tests (Oxford Applied Linguistics)

完全独習 ベイズ統計学入門

完全独習 ベイズ統計学入門

高校生からの統計入門 (ちくまプリマー新書)

高校生からの統計入門 (ちくまプリマー新書)

発達心理学のための統計学:縦断データの分析 (心理学のための統計学7)

発達心理学のための統計学:縦断データの分析 (心理学のための統計学7)

イノベーションの普及過程の可視化―テキストマイニングを用いたクチコミ分析

イノベーションの普及過程の可視化―テキストマイニングを用いたクチコミ分析

謎解きの英文法 冠詞と名詞

謎解きの英文法 冠詞と名詞

謎解きの英文法 文の意味

謎解きの英文法 文の意味

謎解きの英文法 否定

謎解きの英文法 否定

謎解きの英文法 単数か 複数か

謎解きの英文法 単数か 複数か

謎解きの英文法 省略と倒置

謎解きの英文法 省略と倒置

謎解きの英文法 時の表現

謎解きの英文法 時の表現

謎解きの英文法 使役

謎解きの英文法 使役

謎解きの英文法 副詞と数量詞

謎解きの英文法 副詞と数量詞

五文型の底力―ここから始まる英語理解への5つ道具 (「底力」シリーズ 4)

五文型の底力―ここから始まる英語理解への5つ道具 (「底力」シリーズ 4)

英文法用語の底力―用語の誤解を解けば英語は伸びる (「底力」シリーズ 7)

英文法用語の底力―用語の誤解を解けば英語は伸びる (「底力」シリーズ 7)

英検1級 面接大特訓

英検1級 面接大特訓

英検準1級 面接大特訓

英検準1級 面接大特訓

 そして、以下の本をご恵贈頂きました。心より感謝を申し上げます。

ダメな統計学: 悲惨なほど完全なる手引書

ダメな統計学: 悲惨なほど完全なる手引書

2016年度 言語処理論B (Day 3)

 以下は、東京外国語大学の集中講義「言語処理論B」に関するメモです。

Class 11~15: 個人研究

データ収集

 この授業では、「Rを用いた日本語もしくは英語の分析」というテーマのレポートを書いてもらう予定です。細かいテーマ設定などは自由で、可能な限り、授業期間中に相談に乗ります。インターネット上には、様々な言語データがあります。以下は、その一部です。

 なお、インターネットから入手したデータには、本文以外の余分な情報が含まれていることが多いです。分析にあたっては、それらを事前に削除する必要があります。たとえば、青空文庫のルビのように、カッコに囲まれた部分を一括で削除するには、以下のような処理を行います。

  • サクラエディタをダウンロードし、インストールする
    • V2(Unicode版)の「最新版」を選択する
  • 明日《あした》 における 《あした》 のようなルビを削除するには、、、
    • テキストデータをサクラエディタにコピーする
    • メニューバーの「検索」から「置換」を選択する
    • 正規表現」の欄にチェックを入れる
    • 置換前を「《.*?》」とし、置換後には何も入れない
    • 「すべて置換」をクリック
  • 明日(あした) における (あした) のようなルビを削除するには、、、
    • 置換前を置換前を「(.*?)」とし、置換後には何も入れない
    • あとは、上記と同じ

 レポート作成に向けて、できるだけ授業時間中にデータ分析を終えることが望ましいです。

レポート執筆要領

 以下の要領で作成してください。締切から成績提出期限まで時間がないので、1秒でも締切を過ぎたレポートは採点しません

  • 締切: 2017年1月31日 23時59分(日本時間)
  • 提出先: kobayashi077 [あっとま~く] toyo.jp ([あっとま~く]の部分を@にしてください)
  • テーマ: Rを用いた日本語もしくは英語の分析
  • 書式
    • ワード (docx) で作成
    • A4で6~10枚、1ページあたり40文字×30行
    • 冒頭に、内容を適切に表現したタイトル、学籍番号と氏名を書くこと
    • 研究目的、分析データの概要、分析手順、分析結果、結果に対する考察(自分の言葉で)などを含めること
    • 参考文献を用いる場合は、きちんと明記すること
    • 最後に「付録」として、分析に使ったRスクリプトを記載すること(結果を得るための必要最低限でよい)
    • 細かい書式は自由だが、大学のレポートとして相応しい文章を心がけること
    • 図表や付録などが本文の3分の1を超えないこと

 レポートは、以下のような基準で採点する予定です(諸般の事情で、変更される可能性もあります)。

  • 問題設定(10点)
    • 実質科学的に意味のある問題設定がなされているか
  • 分析手順(20点)
    • データの入手方法および前処理、そしてデータ解析方法が適切か
  • 考察(10点)
    • データ分析から得られた結果に対して、適切な考察がなされているか
  • 書式(10点)
    • 大学のレポートとして相応しい形式に則っているか