情報ラボ > テキストマイニングとオープンデータ
アンケートの自由記述のような文章も、単語に分けて数えれば、データとして分析できます。集めたデータを整え、公開されているデータを使うところまで、手を動かして確かめましょう。
例の回答は、この教材のために作った架空のものです。入力した文章は、このページの中だけで処理され、どこにも送られません。
このページは、ブラウザに組み込まれた単語の区切り機能(Intl.Segmenter)で文章を区切っています。品詞を調べたり、「楽しかった」を「楽しい」に直したりはしないので、辞書で補います。
はじめは、同じ端末が別々の書き方で数えられています。表計算ソフトの集計でも、同じことが起こります。
データは架空の「情報ラボ市立図書館」の、月ごとの貸出冊数です。
人が見るには分かりやすい形
値をカンマ(,)で区切ったテキスト
名前と値の組を { } や [ ] で表したテキスト
住んでいる都道府県や市区町村のWebサイトにも、オープンデータのページがあることが多いです。このページは外部のデータを読み込みません。ダウンロードしたCSVは、表計算ソフトで開いたり、上の変換ツールに貼り付けたりして使えます。
データを活用するときは、「何を知りたいか」を決め、データを集め、使える形に整え、分析して、結果を読み取るという流れで進めます。大量のデータの中から、役に立つ規則やパターンを見つけ出すことをデータマイニングといいます。マイニング(mining)は「採掘」という意味で、データの山から価値のあるものを掘り出すイメージです。このページでは、文章を対象にしたデータマイニングであるテキストマイニングと、データの集め方・整え方、そして公開されているデータ(オープンデータ)の使い方を体験します。
アンケートの選択式の質問なら、「はい」が何人、「いいえ」が何人と、すぐに数えられます。しかし、「文化祭の感想を自由に書いてください」のような自由記述の回答は、一人ひとり書き方がちがうので、そのままでは数えられません。何百人分もあれば、全部を読んでまとめるのも大変です。
そこで、文章を単語に分け、どの語が何回出てくるか、どの語とどの語が一緒に出てくるかを数えて、文章全体の傾向をつかみます。これがテキストマイニングです。お店の口コミ、問い合わせの内容、SNSの投稿、授業の振り返りなど、文章のデータはたくさんあり、さまざまな場面で使われています。
英語は単語と単語の間に空白があるので、空白で区切れば単語に分けられます。日本語は単語の間に空白を入れないので、どこで区切るかをコンピュータが判断しなければなりません。文章を、意味を持つ最小の単位である形態素に分けることを形態素解析といいます。形態素解析のソフトウェアは、大きな辞書を使って文章を区切り、それぞれの語の品詞(名詞・動詞など)を判定し、「楽しかっ」を「楽しい」のようにもとの形(原形)に直すこともできます。実際のテキストマイニングでは、名詞・動詞・形容詞だけを数える、といった使い方をします。
このページの単語の区切りは、形態素解析ではありません。ブラウザに組み込まれている Intl.Segmenter という機能を使った、簡易的な区切りです。Intl.Segmenter は、JavaScript の国際化機能の仕様(ECMA-402)で定められていますが、どこで区切るかの具体的な方法は、ブラウザなどの実装に任されています。そのため、使うブラウザによって結果が少し変わることがあります。また、品詞は分からず、原形にも直しません。「楽しかった」が「楽」「しか」「っ」「た」のように細かく分かれることもあります。
そこで、このページでは2つの工夫で補っています。1つはストップワードです。「の」「が」「て」のような短いひらがなの語や、「する」「こと」のように、どの文章にも出てきて内容を表さない語を、数えない語として除きます。もう1つはユーザー辞書です。「模擬店」のように分かれてほしくない語を登録したり、「楽しかった=楽しい」のように、ちがう形を1つの語にまとめたりできます。本格的な形態素解析のソフトウェアにも、利用者が語を登録できる辞書の機能があります。
単語に分けたら、それぞれの語が何回出てくるか(出現頻度)を数えます。回数の多い語を棒グラフにすると、回答の中でよく話題にされていることが分かります。ワードクラウドは、出現回数の多い語ほど文字を大きくして並べた図です。全体の印象を一目でつかめますが、文字の位置には意味がなく、長い語ほど目立ちやすいという弱点もあります。正確に比べたいときは、棒グラフや表を見ましょう。
出現回数を読むときには、いくつか注意が必要です。
同じ文の中に、2つの語が一緒に出てくることを共起といいます。「模擬店」と「待ち時間」がよく一緒に出てくるなら、「模擬店の待ち時間」が話題になっていると考えられます。語を丸(ノード)、共起を線で表し、一緒に出た回数が多いほど線を太くした図を共起ネットワークといいます。
ただし、出現回数の多い語は、どの語とも一緒に出やすくなります。そこで、結びつきの強さを表す指標としてJaccard(ジャッカード)係数がよく使われます。
値は0から1で、AとBがいつも一緒に出るなら1、一度も一緒に出ないなら0になります。このページの図は、線でつながった語どうしが近づき、すべての語が互いに離れようとする力を計算して並べています(力学モデルによる配置)。そのため、図の上での位置や線の長さには、はっきりした意味はありません。読み取るのは「どの語とどの語が線で結ばれているか」と「線の太さ」です。また、共起は「一緒に出た」ことを示すだけで、原因と結果の関係を示すものではありません。
分析に使うデータは、さまざまな方法で集めます。
Webページから情報を自動で集めるプログラム(Webスクレイピング)もありますが、そのサイトの利用規約を確かめ、相手のサーバーに負担をかけないようにする必要があります。また、自由記述の回答には、名前など個人を特定できる情報が書かれていることがあります。結果を発表したりデータを共有したりする前に、そうした部分を取り除きます。
集めたばかりのデータには、まちがいや書き方のばらつきがあります。分析の前にそれを直す作業をデータクレンジング(データクリーニング)といいます。分析にかかる時間の多くは、この作業に使われるともいわれます。主な作業は次のとおりです。
「スマホ」「スマートフォン」「スマホ」は、人が読めば同じ意味ですが、コンピュータは別の文字列として数えます。全角と半角のちがいや、前後に入った空白も同じです。全角・半角をそろえ、同じ意味の書き方を1つにまとめる必要があります。「データを整える」のタブで、②の表記ゆれをまとめる前に①の全角・半角をそろえないと、「スマホ」がまとめられずに残ることを確かめてみましょう。整える順番にも意味があるのです。
「90分」のように単位がついていたり、全角の数字で書かれていたりすると、表計算ソフトやプログラムは数値として扱わず、平均などの計算から黙って外してしまうことがあります。計算結果がおかしいときは、数値として読めているかを確かめます。
同じ人の回答が2回送信されるなど、同じデータが重なって入っていることがあります。そのままでは、その人の回答を2人分として数えてしまいます。ただし、内容が同じでも別の人の回答なら重複ではありません。回答番号のように、一人ひとりを区別できる項目で判断します。
答えが空欄になっているなど、値がないことを欠損値といいます。扱い方には、その行を集計から除く方法と、平均値などで補う方法があります。除くとデータの数が減り、補うとデータの数は保てますが、平均で補った値は実際に答えられた値ではないので、ばらつきが実際より小さく見えます。どちらを選んだかを記録しておくことが大切です。
ほかの値から大きく離れた値を外れ値といいます。目安としては、箱ひげ図で使う「第3四分位数+四分位範囲×1.5より大きい、または第1四分位数−四分位範囲×1.5より小さい」という基準がよく使われます。外れ値には、「1日の利用時間が1500分」のように、ありえない値(入力のまちがいなど)と、めずらしいけれど本当にある値があります。ありえない値は除きますが、本当の値かもしれないものは、すぐに消さずに確かめます。都合の悪い値を消すと、分析結果をゆがめてしまいます。
データを保存したり受け渡したりするときは、決まった形式を使います。代表的なのが CSV と JSON です。どちらも文字だけで書かれたテキストのファイルなので、特定のソフトウェアがなくても読めます。
CSV(Comma-Separated Values)は、表の1行を1行に書き、値をカンマで区切る形式です。RFC 4180 という文書で、よく使われる書き方がまとめられています。値の中にカンマや改行、ダブルクォーテーション(")が入るときは、値全体を " で囲み、値の中の " は "" のように2つ重ねて書きます。表計算ソフトで開けるので、表の形のデータによく使われます。文字コードがちがうと文字化けすることがあるので注意します(文字コード)。
JSON(JavaScript Object Notation)は、{"月": "4月", "貸出冊数": 8421} のように、名前と値の組をまとめた「オブジェクト」と、値を並べた「配列」[ ]を組み合わせてデータを表す形式です。RFC 8259 で定められています。表の形でなくても、入れ子になったデータを表せるので、Webのサービスとプログラムの間でデータをやり取りするときによく使われます。数値と文字列が区別されるのも特徴です。
国や自治体、企業が持っているデータのうち、だれでも自由に使えるように公開されたものをオープンデータといいます。政府の「オープンデータ基本指針」では、次のいずれにも当てはまる形で公開されたデータをオープンデータと定義しています。
「機械判読」とは、コンピュータのプログラムが自動的にデータを加工、編集などできることを指します。指針では、機械が読みやすい形式の例として、CSV、XML、JSON、RDF、Markdown などを挙げています。日本では、官民データ活用推進基本法(平成28年法律第103号)によって、国と地方公共団体はオープンデータに取り組むことが義務づけられました。公開されたデータを使うことで、地域の課題の解決や新しいサービスづくり、行政の効率化などが期待されています。
PDF や画像は、印刷したときの見た目のまま閲覧できる一方で、プログラムでデータを読むのには向いていません。画像の中の表は、コンピュータにとっては色の点の集まりで、どこに何の数字が書いてあるかは分かりません。集計するには、人が数字を打ち直すか、文字を読み取る技術(OCR)を使い、まちがいがないかを確かめる必要があります。同じ表でも、CSV で公開されていれば、そのまま集計やグラフづくりに使えます。
Webを発明したティム・バーナーズ=リーは、オープンデータの使いやすさを5つの段階で表す「5つ星」の考え方を提案しています。★1つは「形式は問わず、オープンなライセンスでWebに公開する」、★2つは「構造化されたデータ(表の画像ではなく表計算ソフトのファイルなど)で公開する」、★3つは「特定のソフトウェアに縛られない形式(CSVなど)を使う」、★4つは「データの一つ一つを URI で示し、ほかの人がリンクできるようにする」、★5つは「ほかのデータにリンクして、データのつながりを示す」です。星が増えるほど、公開する側の手間は増えますが、使う側はデータを組み合わせやすくなります。
国の統計は、政府統計の総合窓口「e-Stat」で探せます。「RESAS(地域経済分析システム)」は、人口や産業構造などの地域経済に関するデータを、地図やグラフで分かりやすく見られるシステムで、経済産業省と内閣官房が提供しています。行政機関のオープンデータをまとめて検索できる「e-Govデータポータル」もあります。データを使うときは、利用規約を確かめ、出典を示しましょう。
情報Ⅰ 授業の進め方ガイドでは、この教材を次の授業で使います。ねらい・導入の問い・50分の流れ・確認問題をまとめています。