以下、本開示の実施例について図面を参照して説明する。
図1は、実施例1に係るテキストデータ収集装置のハードウェア構成を示す構成図である。図1に示すテキストデータ収集装置10は、例えば、情報処理装置である。テキストデータ収集装置10は、クラウドシステムにより提供されるクラウドサーバなどを用いて実現されてもよい。テキストデータ収集装置10は、ソフトウェアシステムの開発や保守などに使用されてもよい。
図1に示すテキストデータ収集装置10は、プロセッサ11と、主記憶装置12と、補助記憶装置13と、入力装置14と、出力装置15と、通信装置16とを備える。これらは図示しないバスなどの通信手段を介して互いに通信可能に接続される。
プロセッサ11は、例えば、CPU(Central Processing Unit)及びMPU(Micro Processing Unit)などを用いて構成される。プロセッサ11は、主記憶装置12に格納されているプログラムを読み出して実行することにより、テキストデータ収集装置10の様々な機能を実現する。主記憶装置12は、プログラム及びデータを記憶する装置であり、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)及び不揮発性半導体メモリ(NVRAM(Non Volatile RAM))などである。
補助記憶装置13は、例えば、ハードディスクドライブ、SSD(Solid State Drive)、光学式記憶装置(例えば、CD(Compact Disc)やDVD(Digital Versatile Disc)など)、ICカード及びSDメモリカードなどで構成される。また、補助記憶装置13として、ストレージシステム又はクラウドサーバなどが用いられてもよい。補助記憶装置13は、プログラム及びデータを記憶する。補助記憶装置13に記憶されたプログラム及びデータは、必要に応じて主記憶装置12にロードされる。
入力装置14は、例えば、キーボード、マウス、タッチパネル、カードリーダ及び音声入力装置などを用いて構成される。入力装置14は、テキストデータ収集装置10を利用するユーザから種々の情報を受け付ける。出力装置15は、ユーザに処理経過及び処理結果などの種々の情報を提供する。出力装置15は、例えば、画面表示装置(液晶モニタ、LCD(Liquid Crystal Display)及びグラフィックカードなど)、音声出力装置(スピーカなど)及び印字装置などを用いて構成される。
通信装置16は、LANやインターネットなどの通信手段を介した他の装置との間の通信を実現する有線方式又は無線方式の通信インタフェースであり、例えば、NIC(Network Interface Card)、無線通信モジュール、USB(Universal Serial Interface)モジュール及びシリアル通信モジュールなどを用いて構成される。
なお、情報の入力及び出力は、通信装置16を介して図示していない他の装置との間で行われてもよい。また、テキストデータ収集装置10は、上記の構成とは別に、ASIC(Application Specific Integrated Circuit)などのハードウェアを備えていてもよい。
図2は、テキストデータ収集装置10の機能的な構成の一例を示す図である。図2に示すようにテキストデータ収集装置10は、ベースワードセット入力部101と、データ取得部102と、関連語取得部103と、データフィルタ部104と、情報記憶部105とを備える。また、情報記憶部105は、ベースワードセット格納部111と、学習用テキストセット格納部112と、関連語セット格納部113と、フィルタ済テキストセット格納部114とを備える。また、テキストデータ収集装置10は、テキストデータの集合であるテキストデータ群を格納する格納装置106と通信可能に接続される。格納装置106は、例えば、マイクロブログなどのウェブサイトを示すウェブ情報を格納するウェブサーバなどである。図2に示すテキストデータ収集装置10の各部は、図1で示した装置11〜16のいずれか1つ以上の構成にて実現される。例えば、各部の少なくとも1つは、プロセッサ11が、主記憶装置12又は補助記憶装置13に格納されているプログラムを読み出して実行することにより実現されてもよい。また、各部の少なくとも1つがASICなどのハードウェアを用いて実現されてもよい。
ベースワードセット入力部101は、テキストデータの取得及びフィルタリングに使用するワードのリストであるベースワードセット121を受け付ける入力部である。ベースワードセット入力部101は、受け付けたベースワードセット121を情報記憶部105のベースワードセット格納部111に格納する。
図3は、ベースワードセット121の一例を示す図である。図3に示すベースワードセット121は、テキストデータの取得及びフィルタリングに使用するワードであるワード301のリストを含む。
データ取得部102は、テキストを抽出するための抽出条件を定めた検索クエリであるクエリ122を格納装置106に送信して、格納装置106からクエリ122の抽出条件に合致するテキストデータであるテキスト123を取得する。
本実施例では、データ取得部102は、情報記憶部105のベースワードセット格納部111からベースワードセット121を読み込み、そのベースワードセット121に基づいてクエリ122を生成して格納装置106に送信し、格納装置106からテキスト123として関連語を取得するための関連語取得用テキストを取得する。データ取得部102は、関連語取得用テキストであるテキスト123をテキストセット124として情報記憶部105の学習用テキストセット格納部112に格納する。なお、データ取得部102は、関連語取得用テキストであるテキスト123をデータフィルタ部104に渡してもよい。
また、データ取得部102は、情報記憶部105のベースワードセット格納部111からベースワードセット121を読み込み、関連語セット格納部113からベースワードセット121に含まれるワードに関連する関連語の集合である関連語セット125を読み込む。データ取得部102は、読み込んだベースワードセット121及び関連語セット125に基づいて検索クエリであるクエリ122を生成して格納装置106に送信し、格納装置106からテキスト123としてフィルタリングの対象となる収集データを取得する。データ取得部102は、収集データであるテキスト123をデータフィルタ部104に渡す。なお、データ取得部102は、収集データであるテキスト123をテキストセット124として学習用テキストセット格納部112に格納してもよい。
図4は、クエリ122の一例を示す図である。クエリ122は、データ取得部102がテキスト123を取得するために格納装置106に送信する問い合わせ文である。
図5は、テキスト123の一例を示す図である。テキスト123は、データ取得部102が格納装置106から取得したテキストデータそのものである。テキスト123は、例えば、マイクロブログなどのブログに投稿されたテキストデータや、ウェブページとして登録されたテキストデータなどである。
図6は、テキストセット124の一例を示す図である。テキストセット124は、データ取得部102で取得したテキスト123のリストを含む。
図7は、関連語セット125の一例を示す図である。図4に示す関連語セット125は、ベースワードセット121に含まれるワードに関連する関連語701のリストを含む。
関連語取得部103は、情報記憶部105のベースワードセット格納部111に格納されたベースワードセット121と、格納装置106に格納されたテキストデータ群とに基づいて、ベースワードセット121に含まれるワード301に関連する関連語701を含む関連語セット125を取得する。関連語取得部103は、関連語701を定期的に繰り返し取得してもよい。
例えば、関連語取得部103は、情報記憶部105のベースワードセット格納部111からベースワードセット121を読み込み、学習用テキストセット格納部112からテキストセット124を読み込む。関連語取得部103は、ベースワードセット121及びテキストセット124に基づいて関連語セット125を生成し、生成した関連語セット125を情報記憶部105の関連語セット格納部113に格納する。なお、テキストセット124に含まれるテキスト123は、格納装置106のテキストデータ群から取得されたものであるため、この例でも、関連語取得部103は、格納装置106に格納されたテキストデータ群に基づいて、関連語セット125を取得することになる。
データフィルタ部104は、情報記憶部105のベースワードセット格納部111からベースワードセット121を読み込み、関連語セット格納部113から関連語セット125を読み込む。また、データフィルタ部104は、データ取得部102からテキスト123を受け取る。データフィルタ部104は、ベースワードセット121及び関連語セット125に基づいて、テキスト123をフィルタリングする。データフィルタ部104は、フィルタリングしたテキスト123をフィルタ済データであるフィルタ済テキストセットとして情報記憶部105のフィルタ済テキストセット格納部114に格納する。なお、テキスト123のフィルタリングは、テキスト123を選択的に除外することである。
情報記憶部105は、例えば、補助記憶装置13を用いて構成される。情報記憶部105は、上述したベースワードセット121、テキスト123、テキストセット124及び関連語セット125以外の情報を記憶してもよい。例えば、情報記憶部105は、ベースワードセット入力部101、データ取得部102、関連語取得部103及びデータフィルタ部104が参照及び生成する情報などを記憶してもよい。情報記憶部105による情報の管理には、例えば、ファイルシステム又はDBMS(DataBase Management System)が用いられてもよい。
図8は、ベースワードセット入力部101の動作の一例を説明するためのフローチャートである。
先ず、ベースワードセット入力部101は、ベースワードセット121を受け付ける(ステップS801)。このとき、ベースワードセット入力部101は、ユーザが入力装置14に直接入力したベースワードセット121を受け付けてもよいし、ユーザにて指定された格納場所にアクセスして、その格納場所からベースワードセット121を受け付けてもよい。後者の場合、例えば、テキストデータ収集装置10がアクセス可能な格納場所にベースワードセット121を予め格納しておき、ユーザがその格納場所を指定する情報を入力装置14に入力する。この場合、ベースワードセット入力部101は、入力された情報に基づいて、格納場所にアクセスし、その格納場所からベースワードセット121を受け付ける。
続いて、ベースワードセット入力部101は、ベースワードセット121をベースワードセット格納部111に格納する(ステップS802)。
図9は、データ取得部102による関連語取得用テキストを取得する動作の一例を説明するためのフローチャートである。
先ず、データ取得部102は、ベースワードセット格納部111からベースワードセット121を読み込む(ステップS901)。その後、データ取得部102は、ベースワードセット121に基づいてクエリ122を生成する(ステップS902)。例えば、データ取得部102は、ベースワードセット121に含まれる各ワード301を論理演算子(例えば、論理和OR)で結合した検索式をクエリ122として生成する。データ取得部102は、生成したクエリ122を格納装置106に送信する(ステップS903)。クエリ122の送信先となる格納装置106は複数あってもよい。
その後、データ取得部102は、格納装置106からテキスト123を受信し(ステップS904)、そのテキスト123を学習用テキストセット格納部112に格納する(ステップS905)。このとき、データ取得部102は、テキスト123を、学習用テキストセット格納部112内のテキストセット124に追加する。また、データ取得部102は、テキスト123を所定量に達するまで1件ずつリアルタイムに受信して学習用テキストセット格納部112に格納してもよいし、複数のテキスト123を一括して受信して学習用テキストセット格納部112に格納してもよい。また、これらの取得方法が併用されてもよい。
図10は、関連語取得部103の動作の一例を説明するためのフローチャートである。
先ず、関連語取得部103は、ベースワードセット格納部111からベースワードセット121を読み込み(ステップS1001)、学習用テキストセット格納部112からテキストセット124を読み込む(ステップS1002)。関連語取得部103は、テキストセット124に基づいて、同一のテキスト123内で出現する単語(ワード)のペアである単語ペアを示す単語共起数テーブル1100を生成する(ステップS1003)。ステップS1003における単語共起数テーブル1100を生成する処理は、例えば、図12を用いて後述する処理でもよい。
関連語取得部103は、単語共起数テーブル1100とベースワードセット121とに基づいて、関連語セット125を取得し(ステップS1004)、取得した関連語セット125を関連語セット格納部113に格納する(ステップS1005)。ステップS1004における関連語セット125を取得する処理は、例えば、図13を用いて後述する処理でもよい。
図11は、単語共起数テーブル1100の一例を示す図である。図11に示す単語共起数テーブル1100は、関連語セット125を取得するために用いられる情報であり、2つの単語(ワード)を含む単語ペア1101と、単語ペアの各単語が同時に出現する回数(例えば、各単語が同時に出現するテキスト123の数)である共起数1102とを有するレコードのリストを含む。単語ペア1101は、単語共起数テーブル1100のキーである。
図12は、図10のステップS1003の処理である単語共起数テーブル生成処理の一例を説明するためのフローチャートである。
先ず、関連語取得部103は、空の単語共起数テーブル1100を生成する(ステップS1201)。関連語取得部103は、テキストセット124に含まれるテキスト123ごとに、ループ処理R1としてステップS1203〜ステップS1208の処理を繰り返す(ステップS1202)。
ループ処理R1では、関連語取得部103は、対象となるテキスト123であるテキストTを単語に分割し、各単語を示す単語リストWLを生成する(ステップS1203)。テキストTを単語に分割する処理には、一般的な形態素解析技術が用いられてもよい。テキストTにおいて同じワードが複数回重複されて使用されている場合、単語リストWLから重複した分の単語を削除してもよいし、重複した分の単語を削除せずに重複したままにしてもよい。
関連語取得部103は、単語リストWLに含まれる互いに異なる単語のペアである単語ペアごとに、ループ処理R2としてステップS1205〜ステップS1207を繰り返す。単語ペアは、2つの単語を含む集合でもよいし、2つの単語の順序対でもよい。順序対の2つの単語の順序は、例えば、テキストTに出現した順番に応じて定められる。
ループ処理R2では、関連語取得部103は、対象となる単語ペア(W1、W2)が単語共起数テーブル1100のキーとして含まれるか否かを判断する(ステップS1205)。単語ペア(W1、W2)が含まれていない場合、関連語取得部103は、単語ペア(W1、W2)を単語共起数テーブル1100にキーである単語ペア1101として追加し、その単語ペア1101に対応する共起数1102に初期値である0を設定する(ステップS1206)。
ステップS1205で単語ペア(W1、W2)が含まれている場合、及び、ステップS1206が終了した場合、関連語取得部103は、単語共起数テーブル1100の単語ペア(W1,W2)に対応する共起数1102を1増加させる(ステップS1207)。
ステップS1205〜ステップS1207の処理を単語リストWLに含まれる全ての単語ペアに対して実行すると、関連語取得部103は、ループ処理R2を抜ける(ステップS1208)。そして、ステップS1203〜ステップS1208の処理をテキストセット124に含まれる全てのテキストに対して実行すると、関連語取得部103は、ループ処理R1を抜ける(ステップS1209)。
図13は、図10のステップS1004の処理である関連語取得処理の一例を説明するためのフローチャートである。
先ず、関連語取得部103は、空の関連語セット125を生成する(ステップS1301)。関連語取得部103は、単語共起数テーブル1100に対してデータクレンジングを行う(ステップS1302)。例えば、関連語取得部103は、単語共起数テーブル1100から共起数1102が閾値以下のレコードを削除してもよいし、共起数1102が大きい方から所定個数のレコードを残し、それ以外のレコードを削除してもよい。また、単語ペアが順序対の場合、関連語取得部103は、単語共起数テーブル1100内の単語ペア1101ごとに、単語ペア1101の各単語の相関を示す指標値を算出し、その指標値に応じて単語共起数テーブル1100からレコードを削除してもよい。指標値は、例えば、支持度及び確信度などである。
関連語取得部103は、ベースワードセット121に含まれるワード301ごとに、ループ処理R3としてステップS1304の処理を繰り返す(ステップS1303)。ループ処理R3では、関連語取得部103は、データクレンジングを行った単語共起数テーブル1100から、対象となるワード301であるワードWOと共起する単語を抽出し、その抽出した単語を関連語セット125に関連語701として追加する(ステップS1304)。具体的には、関連語取得部103は、単語共起数テーブル1100から、ワードWOを含む単語ペア1101におけるワードWOとは異なる単語を、ワードWOと共起する単語として抽出する。
ステップS1304の処理をベースワードセット121に含まれる全てのワード301に対して実行すると、関連語取得部103は、ループ処理R3を抜ける(ステップS1305)。
図10を用いて説明した関連語取得部103の動作が終了すると、データ取得部102は、フィルタリングの対象となるテキスト123であるフィルタ対象テキストを取得する。図14は、データ取得部102のフィルタ対象テキストを取得する際の動作を説明するためのフローチャートである。
先ず、データ取得部102は、ベースワードセット格納部111からベースワードセット121を読み込み(ステップS1401)、関連語セット格納部113から関連語セット125を読み込む(ステップS1402)。データ取得部102は、ベースワードセット121及び関連語セット125に基づいてクエリ122を生成する(ステップS1403)。例えば、データ取得部102は、ベースワードセット121に含まれるワード301及び関連語セット125に含まれる関連語701を論理演算子(例えば、論理和OR)で結合した検索式などである。データ取得部102は、生成したクエリ122を格納装置106に送信する(ステップS1404)。クエリ122の送信先となる格納装置106は複数あってもよい。
その後、データ取得部102は、ユーザから、テキストデータ123の取得の終了を指示するデータ取得終了指示を受け付けるまで、ループ処理R4としてステップS1406〜ステップS1407の処理を繰り返す(ステップS1405)。
ループ処理R4では、データ取得部102は、格納装置106から新しくテキスト123(フィルタ対象テキスト)を受信したか否かを判断する(ステップS1406)。テキスト123を受信した場合、データ取得部102は、そのテキスト123をデータフィルタ部104に渡す(ステップS1407)。テキスト123を受信していない場合、データ取得部102は、ステップS1407の処理をスキップする。そして、ユーザからデータ取得終了指示を受け付けると、データ取得部102は、ループ処理R4を抜ける(ステップS1408)。
なお、以上の処理は、データ取得部102は、テキスト123を1件ずつリアルタイムに受信していたが、複数のテキスト123を一括して受信してもよい。また、これらの取得方法が併用されてもよい。
図15は、データフィルタ部104の動作を説明するためのフローチャートである。
先ず、データフィルタ部104は、データ取得部102からテキスト123を受け取る(ステップS1501)。データフィルタ部104は、ベースワードセット格納部111からベースワードセット121を読み込み(ステップS1502)、関連語セット格納部113から関連語セット125を読み込む(ステップS1503)。
データフィルタ部104は、ベースワードセット121及び関連語セット125に基づいて、テキスト123の除外の要否を判断する(ステップS1504)。例えば、データフィルタ部104は、テキスト123が、ベースワードセット121及び関連語セット125に含まれる複数の単語(ワード301及び関連語701)のうち所定数M以上の異なる単語を含むか否を判断する。この場合、データフィルタ部104は、テキスト123が所定数M以上の異なる単語を含む場合、テキスト123の除外が不要と判断し、テキスト123が所定数M以上の異なる単語を含まない場合、テキスト123の除外が必要と判断する。所定数Mは、予め定められていてもよいし、ユーザにて設定されてもよい。また、所定数Mは、テキスト123を取得する処理の途中で変更されてもよい。
テキスト123の除外が不要な場合、データフィルタ部104は、テキスト123をフィルタ済データとしてフィルタ済テキストセット格納部114に出力して格納する(ステップS1505)。テキスト123の除外が必要な場合、データフィルタ部104は、テキスト123をフィルタ済テキストセット格納部114に格納せずに、処理を終了する。
実施例2では、関連語セット125を繰り返し取得して、テキストデータの収集に用いる関連語セット125を変更する例を説明する。以下、主に実施例1と異なる構成及び動作について説明する。
図16は、実施例2に係るテキストデータ収集装置10の機能的な構成の一例を示す図である。図16に示すように本実施例のテキストデータ収集装置10は、実施例1のテキストデータ収集装置10の構成に加えて、設定情報管理部107をさらに備える。また、本実施例の情報記憶部105は、実施例1の情報記憶部105の構成に加えて、設定情報格納部115をさらに備える。なお、情報記憶部105は、設定情報管理部107が参照及び生成する情報などをさらに記憶してもよい。
設定情報管理部107は、テキストデータ収集装置10の設定を示す設定情報126を受け付けると、設定情報126を設定情報格納部115に格納する。また、設定情報管理部107は、テキストデータ123の取得の開始を指示するデータ取得開始指示127を受け付けると、データ取得部102、関連語取得部103及びデータフィルタ部104に処理を開始させる。また、設定情報管理部107は、データ取得開始指示127を受け付けると、設定情報格納部115に格納した設定情報126を更新し、その後、設定情報126を定期的に更新する。また、設定情報管理部107は、テキストデータ123の取得の終了を指示するデータ取得終了指示128を受け付けると、データ取得部102、関連語取得部103及びデータフィルタ部104に終了指示を出力して処理を終了させる。
データ取得部102、関連語取得部103及びデータフィルタ部104は、設定情報格納部115に格納した設定情報126に従って、それぞれの処理を行う。
図17は、設定情報126の一例を示す図である。図17に示すように設定情報126は、設定情報レコード1701のリストを有し、各設定情報レコード1701は、設定のカテゴリを示す設定情報カテゴリ1702、設定に関する項目である設定項目1703及び設定項目の値である項目値1704を含む。
設定情報カテゴリ1702には、テキストセット124の取得に係る設定を示すテキストセット取得設定1710と、関連語セット125の取得に係る設定を示すデータ取得設定1720と、テキスト123にフィルタリングに係る設定を示すデータフィルタ設定1730と、各機能に共通の設定を示す共通設定1790とがある。
テキストセット取得設定1710の設定項目1703には、テキストセット124を取得する単位期間を示す1世代期間であるテキストセット1世代期間1711があり、その項目値1704には、期間を示す値が設定される。例えば、テキストセット1世代期間1711の項目値1704には、「1ヶ月」などの値が設定される。
データ取得設定1720の設定項目1703には、関連語セット125の取得に用いるテキストセット124が取得されたテキストセット1世代期間を示す直近世代数1721があり、その項目値1704には、直近のテキストセット1世代期間1711の数を示す値(本実施例では、0以上の整数)が設定される。例えば、直近世代数1721の項目値1704には、「5世代」などの値が設定される。
データフィルタ設定1730の設定項目1703には、テキスト123のフィルタリングに用いる関連語セット125が取得されたテキストセット1世代期間を示す直近世代数1731があり、その項目値1704には、直近のテキストセット1世代期間1711の数を示す値(本実施例では、0以上の整数)が設定される。例えば、直近世代数1731の項目値1704には、「5世代」などの値が設定される。なお、図の例では、直近世代数1721の項目値1704と直近世代数1731の項目値1704とに同じ値(「5世代」)が設定されているが、互いに異なる値が設定されてもよい。また、ウェイトタイプ1732の項目値1704には、例えば、「フラット」などの重み付けの方法を示す用語が値として設定される。
共通設定1790の設定項目1703には、現在のテキストセット1世代期間1711を示す現在世代番号1791があり、その項目値1704には、最初のテキストセット1世代期間1711から順に数えた際の現在のテキストセット1世代期間1711の番号を示す値(本実施例では、1以上の整数)が設定される。現在世代番号1791は、後述するように設定情報管理部107にて更新される。
図18は、本実施例のテキストセット124の一例を示す図である。図18に示すテキストセット124は、テキストレコード1801のリストを有し、各テキストレコード1801は、データ取得部102が取得したテキスト123と、テキスト123が取得されたテキストセット1世代期間を示す取得世代1802とを含む。
図19は、本実施例の関連語セット125の一例を示す図である。図19に示す関連語セット125は、関連語レコード1901のリストを有し、各関連語レコード1901は、関連語701と、関連語701の取得に用いたテキスト123の取得世代1802を示す取得世代1902とを含む。
図20は、設定情報管理部107における設定情報入力時の動作の一例を説明するためのフローチャートである。
先ず、設定情報管理部107は、設定情報126を受け付け(ステップS2001)、受け付けた設定情報126を設定情報格納部115に格納する(ステップS2002)。ステップS2001では、設定情報管理部107は、ユーザが入力装置14に直接入力した設定情報126を受け付けてもよいし、ユーザにて指定された格納場所にアクセスして、その格納場所から設定情報126を受け付けてもよい。前者の場合、設定情報を入力するためのユーザインタフェースが用いられてもよい。
図21は、設定情報126を入力するためのユーザインタフェースの一例を示す図である。図21に示すユーザインタフェース2100は、出力装置15などに表示する表示用の情報である。ユーザインタフェース2100は、設定情報126を入力するための設定情報入力部として、テキストセット1世代期間1711を入力するためのテキストセット1世代期間入力部2110と、直近世代数1721を入力するための直近世代数入力部2120と、直近世代数1731を入力するための直近世代数入力部2130と、ウェイトタイプ1732を入力するためのウェイトタイプ入力部2140とを備える。
テキストセット1世代期間入力部2110は、テキストセット1世代期間1711を示す数値を入力するための数値入力部2111と、数値入力部2111に入力された数値の単位を入力するための単位入力部2112とを含む。単位入力部2112では、「日」、「週」及び「月」などの期間の単位を表す語句が選択的に入力できてもよい。ウェイトタイプ入力部2140では、「フラット」などのウェイトタイプを示す語句が選択的に入力できてもよい。
また、ユーザインタフェース2100は、決定ボタン2150と、キャンセルボタン2160とを備える。決定ボタン2150は、ユーザインタフェース2100の各設定情報入力部に入力された設定情報126を確定して、設定情報管理部107に通知するためのボタンである。キャンセルボタン2160は、ユーザインタフェース2100の各設定情報入力部に入力した設定情報126を破棄して設定情報126を入力する処理を中断するためのボタンである。
図22は、設定情報管理部107によるデータ取得開始指示127を受け付けた際の動作を説明するためのフローチャートである。
先ず、設定情報管理部107は、ユーザからデータ取得開始指示127を受け付ける(ステップS2201)と、設定情報格納部115から設定情報126を読み込む(ステップS2202)。設定情報管理部107は、読み込んだ設定情報126内の現在世代番号1791の項目値1704と、経過時間PTとを初期化する(ステップS2203)。ここでは、設定情報管理部107は、現在世代番号1791の項目値1704を1に設定し、経過時間PTを0に設定する。経過時間PTは、現在のテキストセット1世代期間1711の開始時点からの経過時間に相当し、例えば、設定情報管理部107内で管理される。
設定情報管理部107は、現在世代番号1791の項目値1704を初期化した設定情報126を設定情報格納部115に格納する(ステップS2204)。そして、設定情報管理部107は、データ取得部102、関連語取得部103及びデータフィルタ部104に処理を開始させる(ステップS2205)。その後、設定情報管理部107は、ユーザからデータ取得終了指示128を受け付けるまで、ループ処理R5としてステップS2207〜S2209までの処理を繰り返す(ステップS2206)。
ループ処理R5では、設定情報管理部107は、経過時間PTが設定情報126内のテキストセット1世代期間1711を超過しているか否かを判断する(ステップS2207)。超過している場合は、設定情報管理部107は、設定情報126内の現在世代番号1791の項目値1704を1増加させ、経過時間PTを0に初期化する(ステップS2208)。そして、設定情報管理部107は、現在世代番号1791の項目値1704を更新(増加)させた設定情報126を設定情報格納部115に格納する(ステップS2209)。一方、超過していない場合は、設定情報管理部107は、経過時間PTを更新する(ステップS2210)。
設定情報管理部107は、ユーザからデータ取得終了指示128を受け付けると、ループ処理R5を抜ける(ステップS2211)。そして、設定情報管理部107は、データ取得部102、関連語取得部103及びデータフィルタ部104に終了指示を出力して処理を終了させる(ステップS2212)。
図23は、データ取得部102の動作の一例を説明するためのフローチャートである。
先ず、データ取得部102は、設定情報格納部115から設定情報126を読み込み、直前世代番号PNに設定情報126内の現在世代番号1791を設定する(ステップS2301)。直前世代番号PNは、テキスト123を取得する直前の時点のテキストセット1世代期間1711を示す情報である。
その後、データ取得部102は、ベースワードセット格納部111からベースワードセット121を読み込む(ステップS2302)。そして、データ取得部102は、設定情報管理部107から終了指示を受け付けるまで、ループ処理R6としてステップS2304〜S2312までの処理を繰り返す(ステップS2303)。
ループ処理R6では、データ取得部102は、関連語セット格納部113から対象関連語セットTWを読み込む(ステップS2304)。例えば、データ取得部102は、関連語セット格納部113に格納されている関連語セット125のうち、取得世代1902が(現在世代番号1791−直近世代数1721)から(現在世代番号1791−1)である関連語701を対象関連語セットTWとして読み込む。このとき、現在世代番号1791が1の場合のように、該当する取得世代1902に対応する関連語701が存在しない場合、対象関連語セットTWは空でもよい。また、データ取得部102は、対象関連語セットTWを上記の方法とは別の方法で読み込んでもよい。例えば、関連語701に関連語701を取得した時刻を示すタイムスタンプを予め付与しておき、データ取得部102は、そのタイムスタンプに応じて対象関連語セットTWを読み込んでもよい。
データ取得部102は、ベースワードセット121及び対象関連語セットTWに基づいて、クエリ122を生成する(ステップS2305)。データ取得部102は、生成したクエリ122を格納装置106に送信する(ステップS2306)。クエリは、例えば、ベースワードセット121に含まれるワード301及び対象関連語セットTWに含まれる関連語701を論理演算子(例えば、論理和OR)で結合した検索式などである。また、クエリ122の送信先となる格納装置106は複数あってもよい。
その後、データ取得部102は、直前世代番号PNと設定情報126内の現在世代番号1791とが互いに異なる値となるまで、ループ処理R7としてステップS2308〜S2311の処理を繰り返す(ステップS2307)。
ループ処理R7では、データ取得部102は、格納装置106から新しくテキスト123を受信したか否かを判断する(ステップS2308)。テキスト123を受信した場合、データ取得部102は、受信したテキスト123に現在世代番号1791を取得世代1802として対応付けたテキストレコード1801を学習用テキストセット格納部112内のテキストセット124に追加する(ステップS2309)。そして、データ取得部102は、受信したテキスト123をデータフィルタ部104に渡す(ステップS2310)。ステップS2308でテキスト123を受信しなかった場合、及び、ステップS2310の処理を終了した場合、データ取得部102は、直前世代番号PNに対して、現時点で最後に読み込んだ設定情報126内の現在世代番号1791を設定し、その後、設定情報格納部115から設定情報126を読み込む(ステップS2311)。
そして、直前世代番号PNとステップS2311で新たに読み込んだ設定情報126の現在世代番号1791とが互いに異なる値になると、データ取得部102は、ループ処理R7を抜ける(ステップS2312)。さらに設定情報管理部107から終了指示を受け付けると、データ取得部102は、ループ処理R8を抜ける(ステップS2313)。以上の動作例では、データ取得部102は、直近の第1対象数のテキストセット1世代期間に取得された関連語701に応じてテキスト123を取得することとなる。第1対象数は、(現在世代番号1791−直近世代数1721)から(現在世代番号1791−1)を差し引いた数である。
なお、以上の処理では、データ取得部102は、テキスト123を1件ずつリアルタイムに受信していたが、複数のテキスト123を一括して受信してもよい。また、これらの取得方法が併用されてもよい。また、設定情報管理部107から終了指示を受け付けた場合、データ取得部102は、実行中の処理に関わらず、その処理を中断して本動作を終了する。
図24は、関連語取得部103の動作を説明するためのフローチャートである。以下の通りである。
先ず、関連語取得部103は、設定情報格納部115から設定情報126を読み込み、直前世代番号PNに設定情報126内の現在世代番号1791を設定する(ステップS2401)。関連語取得部103は、ベースワードセット格納部111からベースワードセット121を読み込む(ステップS2402)。そして、関連語取得部103は、設定情報管理部107から終了指示を受け付けるまで、ループ処理R8としてステップS2404〜S2409までの処理を繰り返す(ステップS2403)。
ループ処理R8では、関連語取得部103は、学習用テキストセット格納部112から対象テキストセットTTを読み込む(ステップS2404)。例えば、関連語取得部103は、学習用テキストセット格納部112に格納されているテキストセット124のうち、取得世代1802が(現在世代番号1791−1)であるテキスト402を対象テキストセットTTとして読み込む。
関連語取得部103は、対象テキストセットTTに基づいて、単語共起数テーブル1100を生成する(ステップS2405)。単語共起数テーブル1100を生成する処理は、図12を用いて説明した動作においてテキストセット124を対象テキストセットTTに読み替えた処理でもよい。
関連語取得部103は、単語共起数テーブル1100とベースワードセット121とに基づいて、関連語セット125を取得する(ステップS2406)。関連語セット125を取得する処理は、図13を用いて説明した動作と同様な処理でもよい。関連語取得部103は、取得した関連語セット125の関連語ごとに、当該関連語を関連語701、取得世代1902を(現在世代番号1791−1)とする関連語レコード501を、関連語セット格納部113に格納する(ステップS2407)。
関連語取得部103は、直前世代番号PNに対して、現時点で最後に読み込んだ設定情報126内の現在世代番号1791を設定し、その後、設定情報格納部115から設定情報126を読み込む(ステップS2408)。関連語取得部103は、直前世代番号PNとステップS2408で新たに読み込んだ設定情報126内の現在世代番号1791とが異なるか否かを判断する(ステップS2409)。それらが同じ場合、関連語取得部103は、ステップS2408の処理に戻る。一方、それらが異なる場合、関連語取得部103は、ステップS2410の処理に進み、設定情報管理部107からデータ取得の終了指示を受け付けると、関連語取得部103は、ループ処理R8を抜ける(ステップS2410)。なお、設定情報管理部107からデータ取得の終了指示があった場合、関連語取得部103は、実行中の処理に関わらず、その処理を中断して本動作を終了する。以上の動作例では、関連語取得部103は、所定の1世代期間であるテキストセット1世代期間1711ごとに、直前のテキストセット1世代期間1711に格納装置106のテキストデータ群に新たに加わったテキストデータに基づいて、関連語701を取得することとなる。
図25は、データフィルタ部104の動作を説明するためのフローチャートである。
データフィルタ部104は、設定情報格納部115から設定情報126を読み込み、直前世代番号PNに設定情報126内の現在世代番号1791を設定する(ステップS2501)。データフィルタ部104は、ベースワードセット格納部111からベースワードセット121を読み込む(ステップS2502)。そして、データフィルタ部104は、設定情報管理部107から終了指示を受け付けるまで、ループ処理R9としてステップS2504〜S2510までの処理を繰り返す(ステップS2503)。
ループ処理R9では、データフィルタ部104は、関連語セット格納部113から対象関連語セットTWを読み込む(ステップS2504)。例えば、データフィルタ部104は、関連語セット格納部113に格納されている関連語セット125のうち、取得世代1902が(現在世代番号1791−直近世代数1731)から(現在世代番号1791−1)である関連語701を対象関連語セットTWとして読み込む。このとき、現在世代番号1791が1の場合のように、該当する取得世代1902に対応する関連語701が存在しない場合、対象関連語セットTWは空でもよい。また、データフィルタ部104は、対象関連語セットTWを上記の方法とは別の方法で読み込んでもよい。例えば、関連語701に関連語701を取得した時刻を示すタイムスタンプを予め付与しておき、データフィルタ部104は、そのタイムスタンプに応じて対象関連語セットTWを読み込んでもよい。
その後、データフィルタ部104は、直前世代番号PNと設定情報126内の現在世代番号1791とが互いに異なる値となるまで、ループ処理R10としてステップS2506〜S2509の処理を繰り返す(ステップS2505)。
ループ処理R10では、データフィルタ部104は、データ取得部102から新しくテキスト123を受信したか否かを判断する(ステップS2506)。テキスト123を受信した場合、データフィルタ部104は、ベースワードセット121及び関連語セット125に基づいて、テキスト123の除外の要否を判断する(ステップS2507)。ステップS2057におけるテキスト123の除外の要否を判断する処理は、例えば、図26を用いて後述する処理でもよい。
テキスト123の除外が不要な場合、データフィルタ部104は、テキスト123をフィルタ済データとしてフィルタ済テキストセット格納部114に出力して格納する(ステップS2508)。ステップS2507でテキスト123の除外が必要な場合、及び、ステップS2508の処理が終了した場合、データフィルタ部104は、直前世代番号PNに現時点で最後に読み込んだ設定情報126の現在世代番号1791を設定し、その後、設定情報格納部115から設定情報126を読み込む(ステップS2509)。
そして、直前世代番号PNと設定情報126の現在世代番号1791とが異なる値になると、データフィルタ部104は、ループ処理R10を抜ける(ステップS2510)。また、設定情報管理部107からデータ取得の終了指示を受け付けると、データフィルタ部104は、ループ処理R9を抜ける(ステップS2511)。以上の動作例では、データフィルタ部104は、直近の第2対象数のテキストセット1世代期間1703に取得された関連語701を用いて、テキスト123をフィルタリングすることとなる。第2対象数は、(現在世代番号1791−直近世代数1731)から(現在世代番号1791−1)を差し引いた数である。なお、設定情報管理部107からデータ取得の終了指示があった場合、データフィルタ部104は、実行中の処理に関わらず、その処理を中断して本動作を終了する。
図26は、図25のステップS2507の処理であるデータフィルタ処理の一例を説明するためのフローチャートである。
先ず、データフィルタ部104は、空のフィルタ要否判断結果配列Aを生成する(ステップS2601)。フィルタ要否判断結果配列Aは、テキスト123の除外の要否を判断するための情報である。その後、データフィルタ部104は、直近世代数1731の初期値である1から現在の直近世代数1731までの世代数Nごとに、ループ処理R11としてステップS2603〜S2606の処理を繰り返す(ステップS2602)。
ループ処理R11では、データフィルタ部104は、ベースワードセット121及び対象関連語セットTWに基づいて、テキスト123の除外の要否を判断するために用いるフィルタワードの集合であるフィルタワードセットFW(N)を生成する(ステップS2603)。例えば、データフィルタ部104は、ベースワードセット121に含まれるワード301と、対象関連語セットTWのうちの、取得世代1902が(現在世代番号1791−N)である関連語701とをフィルタワードとして示すフィルタワードセットFW(N)を生成する。
データフィルタ部104は、テキスト123が、フィルタワードセットFW(N)のうち所定数M以上の異なるフィルタワードを含むか否を判断する(ステップS2604)。所定数M以上の異なるフィルタワードを含む場合、データフィルタ部104は、フィルタ要否判断結果配列AのN番目の要素A[N]を「要」に設定する(ステップS2605)。一方、所定数M以上の異なるフィルタワードを含まない場合、データフィルタ部104は、フィルタ要否判断結果配列AのN番目の要素A[N]を「否」に設定する(ステップS2606)。なお、所定数Mは、予め定められていてもよいし、ユーザにて設定されてもよい。また、所定数Mは、処理の途中で変更されてもよい。
1から現在の直近世代数1731までの全ての世代数Nに対してステップS2603〜S2606の処理を行うと、ループ処理R11を抜ける(ステップS2607)。そして、データフィルタ部104は、フィルタ要否判断結果配列Aに基づいて、フィルタ要スコアSP及びフィルタ否スコアSNを求める(ステップS2608)。
例えば、データフィルタ部104は、フィルタ要否判断結果配列Aの要素のうち、値が「要」である要素の要素数をフィルタ要スコアSPとし、値が「否」である要素の要素数をフィルタ否スコアSNとしてもよい。また、データフィルタ部104は、フィルタ要否判断結果配列A及び設定情報126内のウェイトタイプ1732に基づいて、フィルタ要スコアSP及びフィルタ否スコアSNを求めてもよい。例えば、ウェイトタイプ1732が「フラット」の場合、データフィルタ部104は、テキストセット1世代期間1703ごとの重要度を示すウェイト情報として、全ての値が1である長さNのウェイト配列W=[1,1,・・・、1]を用いて、フィルタ要否判断結果配列Aにおける値が「要」である要素の要素番号Kにおけるウェイト配列Wの値W[K]の総和をフィルタ要スコアSPとし、フィルタ要否判断結果配列Aにおける値が「否」である要素番号Kにおけるウェイト配列Wの値W[K]の総和をフィルタ否スコアSNとしてもよい。また、ウェイトタイプ1732が「現在重視」の場合、データフィルタ部104は、K番目の要素が(N−要素番号)である長さNのウェイト配列W=[N,N−1,・・・、1]を用いて、フィルタ要否判断結果配列Aの値が「要」である要素番号Kにおけるウェイト配列Wの値W[K]の総和をフィルタ要スコアSP、フィルタ要否判断結果配列Aの値が「否」である要素番号Kにおけるウェイト配列Wの値W[K]の総和をフィルタ否スコアSNとしてもよい。
そして、データフィルタ部104は、フィルタ要スコアSPとフィルタ否スコアSNとを比較して、フィルタ要スコアSPがフィルタ否スコアSNよりも大きいか否かを判断する(ステップS2609)。フィルタ要スコアSPがフィルタ否スコアSNよりも大きい場合、データフィルタ部104は、テキスト123の除外が必要と判断して、フィルタ要否判断結果Rを「要」に設定する(ステップS2610)。一方、フィルタ要スコアSPがフィルタ否スコアSN以下の場合、データフィルタ部104は、テキスト123の除外が不要と判断して、フィルタ要否判断結果Rを「否」に設定する(ステップS2611)。
なお、本実施例では、現在世代番号1791が変わったことは、設定情報126を用いて
データ取得部102、関連語取得部103及びデータフィルタ部104に通知されていたが、設定情報126を用いずに通知されてもよい。また、直前世代番号PNは、データ取得部102は、関連語取得部103及びデータフィルタ部104で別々に管理されていたが、これらで共通に管理されてもよい。
実施例3では、実施例1におけるデータフィルタ部104のフィルタ処理を、フィルタモデル生成部108で生成したフィルタモデル129を用いて実施する例を説明する。以下、主に実施例1と異なる構成及び動作について説明する。
図27は、実施例3に係るテキストデータ収集装置10の機能的な構成の一例を示す図である。図27に示すように本実施例のテキストデータ収集装置10は、実施例1のテキストデータ収集装置10の構成に加えて、フィルタモデル生成部108を備える。また、本実施例の情報記憶部105は、実施例1の情報記憶部105の構成に加えて、フィルタモデル格納部116をさらに備える。なお、情報記憶部105は、フィルタモデル生成部108が参照及び生成する情報などをさらに記憶してもよい。
フィルタモデル生成部108は、テキストセット124及びベースワードセット121を受け付けて、フィルタモデル129を生成し、生成したフィルタモデル129をフィルタモデル格納部116に格納する。また、データフィルタ部104は、実施例1の場合と比べて、ベースワードセット121及び関連語セット125を読み込まない代わりに、フィルタモデル129を読み込み、フィルタモデル129を用いてテキスト123の除外の要否を判断する。
図28は、フィルタモデル生成部108の動作を説明するためのフローチャートである。
先ず、フィルタモデル生成部108は、ベースワードセット格納部111からベースワードセット121を読み込み(ステップS2801)、学習用テキストセット格納部112からテキストセット124を読み込む(ステップS2802)。フィルタモデル生成部108は、ベースワードセット121及びテキストセット124に基づいて、フィルタモデル129を生成する(ステップS2803)。そして、フィルタモデル生成部108は、生成したフィルタモデルをフィルタモデル129としてフィルタモデル格納部116に格納する(ステップS2804)。
フィルタモデル129は、例えば、機械学習や人工知能などの一般的な手法を用いて構築される2値分類器でもよい。この場合、フィルタモデル生成部108は、2値分類器を取得するための一般的なアルゴリズムを用いて、フィルタモデルを生成することができる。また、ステップS2803におけるフィルタモデルを生成する処理は、例えば、以下の図29に示すフローチャートに応じた処理でもよい。
図29は、図28のステップS2803の処理であるフィルタモデル生成処理の一例を説明するためのフローチャートである。
先ず、フィルタモデル生成部108は、テキストセット124を複数のクラスタにクラスタリングする(ステップS2901)。クラスタリングには、トピック分析のような一般的な機械学習の手法が用いられてもよい。クラスタリングによって分類するクラスタ数は、2以上の整数である。そして、フィルタモデル生成部108は、ベースワードセット121を用いて、クラスタごとにテキスト123の除外の要否を決定し、その決定に基づいて、クラスタと除外の要否との関係を示すモデル式をフィルタモデルとして生成する(ステップS2902)。例えば、テキストセット124をトピックモデルによってクラスタリングした場合、フィルタモデル生成部108は、例えば、トピックごとに、当該トピックのテキストセット124で使用されるワードのうち、出現する回数が多い順に規定数分のワードからなるワードセットとベースワードセット121の共通集合の要素数を求め、要素数が一番多いトピックを除外が不要なトピック、それ以外のトピックを除外が必要なトピックとしてもよい。
図30は、データフィルタ部104の動作の一例を説明するためのフローチャートである。
データフィルタ部104は、データ取得部102からテキスト123を受け取る(ステップS3001)。データフィルタ部104は、フィルタモデル格納部116からフィルタモデル129を読み込む(ステップS3002)。データフィルタ部104は、読み込んだフィルタモデル129を用いて、テキスト123をクラスタリングする(ステップS3003)。データフィルタ部104は、テキスト123が分類されたクラスタごとにテキスト123の除外の要否を判断する(ステップS3004)。テキスト123の除外が不要な場合、データフィルタ部104は、テキスト123をフィルタ済テキストセット格納部114に格納する(ステップS3005)。一方、テキスト123の除外が必要な場合、データフィルタ部104は、テキスト123を格納せずに処理を終了する。
本実施例では、フィルタモデル生成部108は、関連語セット125を用いずにフィルタモデルを生成していたが、関連語セット125を用いてフィルタモデルを生成してもよい。また、データフィルタ部104は、実施例1で説明したように関連語セットを用いたフィルタリングと、フィルタモデルを用いてフィルタリングとの両方を行ってもよい。この場合、データフィルタ部104は、一方のフィルタリングで「テキスト123の除外が不要」と判断した際に、テキスト123を格納してもよいし、両方のフィルタリングで「テキスト123の除外が不要」と判断した際に、テキスト123を格納してもよい。
本実施例では、関連語セット125及びフィルタモデル129を繰り返し取得して、テキストデータの収集に用いる関連語セット125とテキストデータのフィルタリングに用いるフィルタモデル129とを変更する例を説明する。以下、主に実施例3と異なる構成及び動作について説明する。
図31は、実施例4に係るテキストデータ収集装置10の機能的な構成の一例を示す図である。図31に示すように本実施例のテキストデータ収集装置10は、実施例3のテキストデータ収集装置10の構成に加えて、設定情報管理部107をさらに備える。また、本実施例の情報記憶部105は、実施例3の情報記憶部105の構成に加えて、後述する設定情報126を格納する設定情報格納部115をさらに備える。なお、情報記憶部105は、設定情報管理部107が参照及び生成する情報などをさらに記憶してもよい。
設定情報管理部107は、テキストデータ収集装置10の設定を示す設定情報126を受け付けると、設定情報126を設定情報格納部115に格納する。また、設定情報管理部107は、データ取得開始指示127を受け付けると、データ取得部102、関連語取得部103、データフィルタ部104及びフィルタモデル生成部108に処理を開始させる。また、設定情報管理部107は、データ取得開始指示127を受け付けると、設定情報格納部115に格納した設定情報126を更新し、その後、さらに設定情報126を定期的に更新する。また、設定情報管理部107は、テキストデータの取得の終了を指示するデータ取得終了指示128を受け付けると、データ取得部102、関連語取得部103、データフィルタ部104及びフィルタモデル生成部108に終了指示を出力して処理を終了させる。
データ取得部102、関連語取得部103及びデータフィルタ部104は、設定情報格納部115に格納した設定情報126に従って、それぞれの処理を行う。
図32は、設定情報管理部107によるデータ取得開始指示127を受け付けた際の動作を説明するためのフローチャートである。図32による設定情報管理部107の動作は、図22を用いて説明した動作において、ステップS2205をステップS3201に置き換え、ステップS2212をステップS3202に置き換えたものである。
具体的には、先ず、図22を用いて説明したステップS2201〜S2204の処理と同様な処理が実行される。ステップS2204の処理が終了すると、設定情報管理部107は、データ取得部102、関連語取得部103、データフィルタ部104及びフィルタモデル生成部108に処理を開始させる(ステップS3201)。その後、図22を用いて説明したステップS2206〜S2211の処理と同様な処理が実行される。ステップS2211の処理が終了すると、設定情報管理部107は、データ取得部102、関連語取得部103、データフィルタ部104及びデータフィルタ部104に終了指示を出力して処理を終了させる(ステップS3202)。
図33は、フィルタモデル生成部108の動作の一例を説明するためのフローチャートである。図33によるフィルタモデル生成部108の動作は、図24を用いて説明した動作において、ステップS2405を削除し、ステップS2406をステップS3301に置き換え、ステップS2407をステップS3302に置き換えたものである。
具体的には、先ず、ステップS2401〜ステップS2404の処理と同様な処理が実行される。ステップS2404の処理が終了すると、フィルタモデル生成部108は、ベースワードセット121と対象テキストセットTTとに基づいて、フィルタモデルを生成する(ステップS3301)。そして、フィルタモデル生成部108は、生成したフィルタモデル129をフィルタモデル格納部116に格納する(ステップS3302)。その後、ステップS2408〜ステップS2410の処理と同様な処理が実行される。
ステップS3301のフィルタモデルを生成する処理は、図29を用いて説明したフィルタモデル生成処理において、テキストセット124を対象テキストセットTTと読み替えたものでもよい。また、ステップS3302でフィルタモデル129を格納する処理では、フィルタモデル生成部108は、生成したフィルタモデル129を、当該フィルタモデル129の生成に用いた対象テキストセットTTの取得世代1802をフィルタモデル129の取得世代として対応付けてフィルタモデルセットとして格納する。
以上の動作では、フィルタモデル生成部108は、テキストセット1世代期間1703ごとに、直前のテキストセット1世代期間1703に格納装置106のテキストデータ群に新たに加わったテキストデータに基づいて、フィルタモデル129を生成することとなる。
図34は、フィルタモデルセットの一例を示す図である。図34に示すフィルタモデルセット3400は、フィルタレコード3401のリストを有し、各フィルタレコード3401は、フィルタモデル生成部108が生成したフィルタモデル129と、フィルタモデル129の生成に用いた対象テキストセットTTの取得世代である取得世代3402とを含む。
図35は、データフィルタ部104の動作を説明するためのフローチャートである。図35によるデータフィルタ部104の動作は、図25を用いて説明した動作において、ステップS2502を削除し、ステップS2504をステップS3501に置き換え、ステップS2507をステップS3302に置き換えたものである。
具体的には、先ず、ステップS2501及びステップS2503の処理と同様な処理が実行される。ステップS2503の処理が終了すると、データフィルタ部104は、フィルタモデル格納部116から対象フィルタモデルセットTFを読み込む(ステップS3501)。例えば、データフィルタ部104は、フィルタモデル格納部116に格納されているフィルタモデルセット3400のうち、取得世代3041が(現在世代番号1791−直近世代数1731)から(現在世代番号1791−1)であるフィルタモデル129を対象フィルタモデルセットTFとして読み込む。このとき、現在世代番号1791が1の場合のように、該当する取得世代3041に対応するフィルタモデル129が存在しない場合、対象フィルタモデルセットTFは空でもよい。また、データフィルタ部104は、対象フィルタモデルセットTFを上記の方法とは別の方法で読み込んでもよい。例えば、フィルタモデル129にフィルタモデル129を生成した時刻を示すタイムスタンプを予め付与しておき、データフィルタ部104は、そのタイムスタンプに応じて対象フィルタモデルセットTFを読み込んでもよい。
その後、ステップS2505及びS2506の処理と同様な処理が実行され、ステップS2506でテキスト123を受信した場合、データフィルタ部104は、対象フィルタモデルセットTFに基づいて、テキスト123の除外の要否を判断する(ステップS3502)。その後、ステップS2508〜ステップS2511の処理と同様な処理が実行される。ステップS3502の処理は、例えば、図36を用いて後述する処理でもよい。
図36は、図35のステップS3502の処理であるデータフィルタ処理の一例を説明するためのフローチャートである。図36によるデータフィルタ部104の動作は、図26を用いて説明した動作において、ステップS2603をステップS3601に置き換え、ステップS2507をステップS3302に置き換えたものである。
具体的には、先ず、ステップS2601及びS2602の処理と同様な処理が実行されり。ステップS2602の処理が終了すると、データフィルタ部104は、対象フィルタモデルセットTFに基づいて、テキスト123の除外の要否を判断するために用いるフィルタモデルFM(N)を生成する(ステップS3601)。例えば、データフィルタ部104は、対象フィルタモデルセットTFに含まれるフィルタモデル129のうち、取得世代3402が(現在世代番号1791−N)であるフィルタモデル129をフィルタモデルFM(N)として生成する。
データフィルタ部104は、テキスト123が、フィルタモデルFM(N)を用いてテキスト123の除外の要否を判断する(ステップS3062)。テキスト123の除外が不要な場合、ステップS2605の処理に進み、テキスト123の除外が必要な場合、ステップS2606の処理に進む。その後、ステップS2605〜S2611の処理が実行される。
以上の動作では、データフィルタ部104は、直近の第3対象数のテキストセット1世代期間1703に生成されたフィルタモデルを用いて、テキスト123をフィルタリングすることとなる。第3対象数は、(現在世代番号1791−直近世代数1731)から(現在世代番号1791−1)を差し引いた数である。
以上説明したように本開示は以下の事項を含む。
本開示の一態様に係るテキストデータ収集装置(10)は、テキストデータ群を格納する格納装置(106)からテキストデータを収集するテキストデータ収集装置であって、入力部(101)と、関連語取得部(103)と、データ取得部(104)と、データフィルタ部(104)と、記憶部(105)とを有する。入力部は、テキストデータ(123)を取得するためのワード(301)を受け付ける。関連語取得部は、ワードとテキストデータ群とに基づいて、ワードに関連する関連語(701)を繰り返し取得する。データ取得部は、格納装置から、ワード及び関連語に応じたテキストデータを収集データとして取得する。データフィルタ部は、テキストデータをフィルタリングするフィルタモデルと、前記ワード及び前記関連語との少なくとも一方を用いて、収集データをフィルタリングしたフィルタ済データを出力する。記憶部は、フィルタ済データを記憶する。
この場合、ワードとテキストデータ群とに基づいて繰り返し取得された関連語とワードとに応じてテキストデータが収集データとして取得され、その収集データがフィルタモデルと前記ワード及び前記関連語との少なくとも一方を用いてフィルタリングされる。このため、関連語が繰り返し取得されるため、ソーシャルメディアのように使用される用語の変化が大きい場合でも、所望のテキストデータを取得することができ、また、フィルタリングが行われるため、不必要なテキストデータが取得されてしまうことを抑制することが可能になる。したがって、所望のテキストデータを適切に取得することが可能になる。
また、関連語取得部は、所定の1世代期間(1711)ごとに、直前の1世代期間にテキストデータ群に新たに加わったテキストデータに基づいて、関連語を取得する。このため、ソーシャルメディアのように使用される用語の変化が大きい場合でも、最近使用されている用語に基づいて関連語を取得することが可能になり、所望のテキストデータを適切に取得することが可能になる。
また、データ取得部は、直近の第1対象数の1世代期間に取得された関連語に応じたテキストデータを収集データとして取得する。このため、最近使用されている用語から取得された関連語に応じたテキストデータを収集することが可能になり、所望のテキストデータを適切に取得することが可能になる。
また、データフィルタ部は、直近の第2対象数の1世代期間に取得された関連語を用いて、フィルタ済データを出力する。このため、最近使用されている用語から取得された関連語を用いてフィルタリングが可能となり、所望のテキストデータを適切に取得することが可能になる。
また、データフィルタ部は、1世代期間ごとの重要度を示すウェイト情報(W)をさらに用いて、フィルタ済データを出力する。このため、関連語が取得された期間に応じたフィルタリングが可能となり、所望のテキストデータを適切に取得することが可能になる。
また、テキストデータ収集装置は、テキストデータ群及びワードに基づいて、フィルタモデルを生成するモデル生成部(108)をさらに有する。このため、収集するテキストデータに適したフィルタモデルを生成することが可能になり、所望のテキストデータを適切に取得することが可能になる。
また、モデル生成部は、所定の1世代期間ごとに、直前の1世代期間にテキストデータ群に新たに加わったテキストデータに基づいて、フィルタモデルを生成する。このため、最近使用されている用語に基づいてフィルタモデルを生成することが可能になり、所望のテキストデータを適切に取得することが可能になる。
また、データフィルタ部は、直近の第3対象数の1世代期間に生成されたフィルタモデルを用いて、フィルタ済データを出力する。このため、最近使用されている用語から生成されたフィルタモデルを用いてフィルタリングが可能となり、所望のテキストデータを適切に取得することが可能になる。
また、テキストデータ収集装置は、データ取得部、関連語取得部及びデータフィルタ部に関する設定情報(126)を入力するためのインタフェース(2100)を出力することにより、設定情報を受け付ける設定情報管理部(107)をさらに有する。データ取得部は、設定情報に従って収集データを取得し、関連語取得部は、設定情報に従って関連語を取得し、データフィルタ部は、設定情報に従って前記フィルタ済データを出力する。このため、設定情報を入力するためのインタフェースを出力することが可能となり、容易に設定を行うことが可能になる。
上述した本開示の実施例は、本開示の説明のための例示であり、本開示の範囲をそれらの実施例に限定する趣旨ではない。当業者は、他の様々な態様で本開示を実施することができる。