テキストマイニングは、テキストデータから有用な知識や知恵を抽出する技術の総称です。
一般的に、テキストマイニングは、大まかには、
(1), テキストデータの準備
(2), テキストデータの解析
いったプロセスで行われ、(2)を一般的にテキストマイニングと呼んでいます。
(2)の中では、
- テキストデータから文を抽出
- 文から単語を抽出
- 単語同士の関係を抽出
- 意味を理解する
のようなプロセスで解析されます。
(1), (2), のそれぞれに、様々なフリーソフトやツール・ライブラリが公開されています。
テキストマイニングの初心者の方などは、
- どんなソフトやツール・ライブラリがあるの?
- 無料(フリー)で使える?
- どんな特徴があるの?
といった疑問を持つ方も多いかと思います。
そこで本記事では、
テキストマイニングで使えるフリーソフトや無料のツールやライブラリについて、サクッとまとめます。
本記事の概要
テキストマイニングに使えるフリーソフトや無料で使えるツール・ライブラリ、14個はこちらです
テキストマイニングのそれぞれのステップごとに、
フリーソフトや無料のツール・ライブラリをまとめたいと思います。
(1), テキストデータの準備
テキストマイニングでは、まずテキストデータを用意する必要があります。
自社の営業日報や、商品のアンケート結果、コールセンターへの問い合わせデータなどがあれば、
それを以後のテキストマイニングの元データとして使うことができます。
その他には、Webからテキストデータを取得する方法もございます。
Webからテキストデータをダウンロード技術の1つとして、「クローリング」があり、
以下のフリーソフトやライブラリが使えます。
wget
サクッとWebからデータを取得するには、
「wget」という無料のオープンソースソフトウェアを使うことができます。
wgetは、Webからデータをダウンロードするだけでなく、リンクを辿って、再帰的にWebページを取得することができます。
他にも、近年人気なPython でもクローリングが可能です。
Python ライブラリ 「requests」
Pythonライブラリの「requests」を使えば、
指定したURLのHTMLファイルなどを取得することができます。
このようにしてクローリングしたデータには、いくつかの形式があります。たとえば、
- WikipediaなどのWebサイトやブログ、ニュース記事などをダウンロードしたならHTML形式
- RSSから取得すれば、RDF形式
- APIから取得すれば、JSON形式
といった感じです。
これらのデータには、不要な部分が多く含まれており、必要な部分を抽出する必要があります。
この抽出することを「スクレイピング」と呼びます。
Pythonでスクレイピングするには、
Python ライブラリ「lxml」「cssselect」
といったライブラリが使えます。
requestsで取得したHTMLやXMLファイルは、lxmlによって操作できるようになり、
cssselect で cssを扱うことができ、HTMLから要素を抜き出すことができるようになります。
スクレイピング機能を持つものとして、
Python ライブラリ「BeautifulSoup」
も使えます。
これらを使うことによって、よりラクにスムーズにテキストデータを収集することが可能になります。
クローリングやスクレイピングについて、
- 詳しく学びたい!
- テキストデータの自動取得したい!
- オススメの本を知りたい!
といったあなたにはこちらがございます↓
『「クローリング」や「スクレイピング」を学びたいあなたにおすすめの本、8冊+α はこちらです』
(2), テキストデータの解析
テキストデータを取得したらすぐに分析できるわけではありません。
まずはテキストデータから文、単語、単語間の関係を抽出します。
これらを構造化しておくことで、以後の意味の解析がしやすくなります。
(2-1), 文の抽出
文の抽出を自動で行うには、主に2つの方法があります。
・文分割のための機械学習器を作成する方法
・系列ラベリング
機械学習って何?という方は、以下の記事をどうぞ↓
系列ラベリングって?についてです。
系列とは、単語の列が文になっているように、何かの要素が連なっているものを指します。
「系列ラベリング」とは、文の単語に品詞をつけるのように、系列の要素に何かのラベルをつけることを言います。
見本となる教師データの作成が必要だなぁ
と思われるかもしれません。
そういった時には、オープンソースの無料ツール
doccano
が役立つかもしれません。
「doccano」は、自然言語処理・機械学習に使われるラベル付きデータ(教師データ)の作成を容易にするツール(アノテーションツール)となっています。
(2-2), 単語の抽出(形態素解析)
文を抽出したら、各文から単語を抽出します。これを「形態素解析」と呼びます。
形態素解析を行うためのフリーソフトやツール、ライブラリには、
MeCab / ChaSen / nagisa / JUMAN / KyTea / Sudachi / KAKASI
などがあります。
MeCab
MeCabは、オープンソースの形態素解析エンジンです。
言語や辞書、コーパスに依存しない汎用的な設計とのことです。
ちなみに、和布蕪(めかぶ)は作者の好物だそうです。
ChaSen
ChaSen(茶せん)は、入力文を単語単位に分割して、品詞を付与するツールです。
Windowsでも使えます。
ChaSenは、開発拠点である奈良先端科学技術大学院大学のある奈良県生駒市高山町が、日本有数の茶せんの産地であることから名付けられたそうです。
JUMAN
JUMANは日本語形態素解析システムです。
使用者によって文法の定義や単語間の接続関係の定義などを容易に変更できるように工夫されています。
日本語解析の研究を目指す多くの研究者向けに開発されたとのことです。
Windowsでも使えます。
KyTea
KyTea(キューティー)は、日本語など単語(または形態素)分割を必要とするためのテキスト解析器です。
単語分割や品詞推定だけでなく、音声認識や音声生成でも重要となる読み推定を行えます。
Windowsで使えます。
Sudachi
Sudachi(すだち)は日本語形態素解析器です。
テキストの分割、品詞付与、正規化処理を行うことができます。
複数の分割単位を併用できたり、多数の収録語彙があるなどの特徴があります。
Python, Javaで使えます。
KAKASI
KAKASI(かかし)は、漢字仮名まじり文を、ひらがな文やローマ字文に変換するためのプログラムと辞書の総称です。
全文検索エンジン「namazu」内で分かち書きパッチとして用いられています。
kuromoji
kuromoji.js は、JavaやJavaScript(kuromoji.js)で気軽に実装できるオープンソース日本語形態素解析器です。
単語の分割、品詞のタグ付け、基本形の抽出、読み方の抽出などができます。
また、検索エンジンのApache Lucene、Apache Solr の日本語対応の土台として使われています。
nagisa
nagsa(なぎさ)は、RNNをベースにした日本語形態素解析器です。
Pythonモジュールとして使え、単語分割、品詞付与が可能となっています。
Bidirectional-LSTMを用いているので、
顔文字やURLに対して頑健な解析ができるのが特徴となっています。
(2-3), 単語間の関係抽出(構文解析・係り受け解析)・固有表現の抽出
単語に分割できたら、単語間の関係を調べます。
これを「構文解析」や「係り受け解析」と呼びます。
構文解析や係り受け解析には、CaboCha や KNP などのフリーソフトやライブラリがあります。
CaboCha
CaboCha(かぼちゃ)は、SVMに基づいた日本語係り受け解析器です。
固有表現の抽出もできます。
Windowsでも使えます。
KNP
KNPは、日本語文の構文・格・照応解析を行うシステムです。
形態素解析JUMANの解析結果を使います。
文節、基本句間の係り受け関係や、格関係、照応関係を得ることができます。
(2-4), 構造化テキストデータの統計解析
単語間の関係がわかったら、それらを元に、
テキストデータを構造化していきます。
例えば、商品に対するクチコミなどだったら、
- 商品名
- 属性
- 感想・評価
のような感じです。
これらを集計し、統計分析などすることで、
- マーケティングに活かしたり
- 自分に適する商品か判断したり
- 今人気は上り調子なのか、下り坂なのか
といった判断の助けにすることが可能になります。
これをスムーズに行うフリーソフトとして
KH Coder
がございます。
KH Coder は、テキストデータを統計的に分析するためのフリーソフトです。
主に社会調査データを分析するために制作されてました。
アンケートの自由記述や新聞記事、インタビュー記事などを統計解析することができます。
KH Coderの使い方についてはこちら↓
というわけで、本記事では、
テキストマイニングで使えるフリーソフトや無料のツールやライブラリについて、
サクッとまとめました。
こちらもございます↓
こちらの記事もございます↓
『「自然言語処理」を学びたい人におすすめの良書、10冊はこちらです』