【文献】
CHU, Zi et al.,Who is Tweeting on Twitter: Human, Bot, or Cyborg?,Proceedings of the 26th Annual Computer Security Applications Conference,ACM,2010年12月10日,pp.21-30
(58)【調査した分野】(Int.Cl.,DB名)
前記受付手段により当該ルールに該当することのみで投稿者をカテゴリ分類する旨の設定を受け付けたルールについて、当該ルールに該当した場合にいずれのカテゴリに分類するかの選択を受け付けるカテゴリ選択受付手段をさらに備え、
前記通知手段は、さらに、
前記カテゴリ選択受付手段により選択を受け付けたカテゴリが、前記算出手段により算出された割合が最も高いカテゴリではない場合に、その旨を通知することを特徴とする請求項2に記載の情報処理装置。
投稿者と当該投稿者のカテゴリとを対応付けた教師データを記憶し、投稿者に関する情報に基づき当該投稿者を各カテゴリに分類する情報処理装置における情報処理方法であって、
前記情報処理装置のルール受付手段が、投稿者に関する情報に基づき投稿者を各カテゴリに分類するためのルールの設定を受け付けるルール受付工程と、
前記情報処理装置の算出手段が、前記教師データとして記憶された投稿者のうち、前記ルール受付工程により受け付けたルールに合致する投稿者の数を算出し、当該投稿者数の内訳を各カテゴリの割合として算出する算出工程と、
前記情報処理装置の通知手段が、前記算出工程により算出された割合が所定の値を満たすカテゴリが存在しない場合、前記設定されたルールについて、投稿者をカテゴリ分類するルールとして不適切である旨を通知する通知工程と、
を備えることを特徴とする情報処理方法。
投稿者と当該投稿者のカテゴリとを対応付けた教師データを記憶し、投稿者に関する情報に基づき当該投稿者を各カテゴリに分類する情報処理装置において実行可能なプログラムであって、
前記情報処理装置を、
投稿者に関する情報に基づき投稿者を各カテゴリに分類するためのルールの設定を受け付けるルール受付手段と、
前記教師データとして記憶された投稿者のうち、前記ルール受付手段により受け付けたルールに合致する投稿者の数を算出し、当該投稿者数の内訳を各カテゴリの割合として算出する算出手段と、
前記算出手段により算出された割合が所定の値を満たすカテゴリが存在しない場合、前記設定されたルールについて、投稿者をカテゴリ分類するルールとして不適切である旨を通知する通知手段として機能させるためのプログラム。
【発明を実施するための形態】
【0015】
図1は、本発明の実施形態における投稿者分類システムの構成を示す図である。投稿者分類システムは、ユーザルール設定部、教師データ登録部、辞書作成部、ルール重み設定部、投稿文分解部、カテゴリ分類確率計算部、判定部を備えている。
【0016】
また、ルール登録データテーブル、カテゴリマスタテーブル、投稿者データテーブル、投稿文データテーブル、辞書テーブルを備えている。
【0017】
ユーザルール設定部は、ユーザにより設定されたルールを登録する機能を備える。ユーザは、
図2に一例を示すルール設定画面を介して、ルールの設定をする。
【0018】
図2は、ルール設定画面の一例を示した図である。本実施例では、投稿者を3つのカテゴリ(「BOT」、「ニュース」、「一般ユーザ」)に分類する場合について説明する。ここで「BOT」とは、特定のサイトに誘導することを目的とし、自動的に投稿するようにプログラムされたものを指す。また、「ニュース」とは、ニュースサイトなどのメディアを指す。また、「一般ユーザ」とは、BOTやニュース以外の投稿者を指す。本実施例では、投稿者をこれら3つのカテゴリに分類する場合について説明する。そのため、
図9に示すカテゴリマスタテーブルには、3つのタプルが登録されていることとなる。
【0019】
図2においてユーザからの設定を受け付けるのは、「ルール201」と「設定206」の項目である。
【0020】
ルール201はプルダウンになっており、ユーザからプルダウンで表示されるルールのいずれかの選択を受け付ける。プルダウンに表示されるルールは、
図4に示すテーブルに登録されたものである。これらのルールは、不図示のルール登録画面などを介してユーザにより登録されるものである。また、ルールは論理積を用いることも可能であるとする。
【0021】
ここでルールとは、
図4に示すように投稿文(投稿内容)とは関係のない情報に関する条件である。例えば自己紹介文や、投稿件数や、リンク者に関する情報などである。このように、投稿内容とは関係のない情報によりルールを作成することで、投稿文以外の情報をカテゴリ分類の指標とすることが可能となる。このように、投稿文以外の情報も用いてカテゴリ分類をすることで、単に投稿内容だけを用いた場合や、投稿者情報だけを用いた場合に比べ、より適切なカテゴリ分類を実現することができる。
【0022】
該当数202には、ルール201が選択されると、教師データフラグが1である投稿者のうち、当該選択されたルールに該当する投稿者の数が算出され、表示される。また、BOT203、ニュース204、一般ユーザ205には、教師データフラグが1であり、かつ選択されたルールに該当する投稿者のうち、それぞれのカテゴリに分類された投稿者の数と比率(割合)とが算出され、表示される。
【0023】
このように、投稿者の数や比率を表示することで、ユーザは、これらの数値を参考にしながらルールを設定することが可能となるため、適切なルールを設定することが可能となる。
【0024】
また、ここで算出された比率は、「重み」として
図8に示すルール登録データテーブルに登録される。例えば、ルール1が
図2に示すような比率(90%、10%、0%)を持つ場合、重みとして、各カテゴリにそれぞれ整数値90、10、0が登録される。
【0025】
ここで、例えば算出された比率(重み)が30、30、40といった値となった場合、当該ルールは、投稿者をどのカテゴリに分類すべきかを決定するためのルールとしては不適切であると言える。すなわち、このようなルールは、各カテゴリに属する投稿者の特徴を表したルールではないといえるため、このようなルールを用いても適切な分類は出来ない。そこで、このような場合には、適切なルールではない旨をユーザに対して警告する。
【0026】
適切なルールではない旨を警告する画面の一例を
図19に示す。
【0027】
適切なルールか否かの判断においては、例えば予め比率(重み)が80を超えるカテゴリがあるか否か(ある場合は適切、ない場合は不適切)といった基準を登録しておき、その基準により判定することが可能である。
【0028】
設定206は、ユーザからラジオボタンにより「自動」または「確定」のいずれかの選択を受け付ける。「自動」とは、判定部においてカテゴリ分類確率計算部で計算された確率を用いて判定することを意味する(自動が設定されたルールを、「自動ルール」とする)。また、「確定」は、判定部において当該ルールだけを用いて判定することを意味する(確定が設定されたルールを、「確定ルール」とする)。
【0029】
重みが100となるカテゴリが存在しないルールにおいて、「確定」が選択された場合には、誤分類が含まれることになる旨をユーザに警告する。すなわち確定ルールの場合には、当該ルールに該当する投稿者については、必ず
図3に示す画面で設定されたカテゴリに分類されることになる。そのため、他のカテゴリに属する確率(可能性)があるにもかかわらず、それを考慮せずに設定されたカテゴリに属すると判断されるため、誤分類の可能性が残る旨の警告を出すことで、ユーザに注意を与えることが必要となる。
【0030】
「確定」が選択されると、
図3に示す確定ルール登録画面が表示され、当該ルールに該当する投稿者をどのカテゴリに所属させるかの設定を受け付ける。
図3の例では、ルール3に該当する投稿者は、カテゴリ「一般ユーザ」に属すると決定される。また、ユーザにより設定されたカテゴリが、重みの最も高いカテゴリではない場合に警告を出しても良い。例えば重みが「BOT」10、「ニュース」10、「一般ユーザ」80であるにもかかわらず、
図3の画面で「BOT」が選択された場合に警告を出してもよい。このような警告により、ルールの誤設定を防止することが可能となる。誤分類の可能性がある旨の警告画面の一例を
図20に示す。
【0031】
ユーザにより設定されたカテゴリが、重みの最も高いカテゴリではない場合の警告画面の一例を
図21に示す。
【0032】
なお、教師フラグが1の投稿者とは、
図11に示すフローチャートの処理により、ユーザによりカテゴリ分類された投稿者である。すなわちユーザの目視による確認によってカテゴリが判定された投稿者である。
【0033】
教師データ登録部は、教師データを登録する機能を備える。教師データを登録する際に用いられる画面の一例を
図5に示す。
【0034】
図5には、投稿者データテーブルから無作為に抽出された投稿者ID(501)と、その投稿者により投稿された投稿文(502)が表示される。ユーザはこの投稿文を確認し、投稿者がいずれのカテゴリに属するかを判断し登録する。
【0035】
カテゴリ欄(503)には、カテゴリマスタテーブル(
図9)に登録されたカテゴリ名が表示され、ラジオボタンにより選択を受け付ける。
【0036】
また、投稿者IDをクリックすることで、その投稿者の投稿者データテーブルに登録されているデータを表示することが可能である。また、投稿文をクリックすることで、その投稿者の過去の投稿文を新たに収集し表示することが可能である。また、過去の投稿文が取得できない場合には、投稿文データテーブルからその投稿者の他の投稿文を表示する。
【0037】
ユーザにより登録ボタン(504)が押下されることで、投稿者のカテゴリが登録される。登録されると、当該投稿者IDの投稿者データテーブル(
図7)の属性「カテゴリID」に選択されたカテゴリIDが登録される。また、属性「教師データフラグ」には「1」が登録され、教師データとして用いられる。
【0038】
一括登録ボタン(505)を押下することで、
図5に示す画面に表示された投稿者のカテゴリを一括で登録することも可能である。
【0039】
辞書データ作成部は、教師データをもとに辞書テーブル(
図10)を作成する機能を備える。辞書データ作成部は、投稿者データテーブル(
図7)の属性「教師データフラグ」が「1」である投稿者IDの投稿文を投稿文データテーブル(
図6)から取得する。そして、取得した投稿文データを形態素解析し、辞書テーブル(
図10)の属性「単語」に形態素解析で得られた単語を登録する。また、属性「単語出現数」に当該単語が当該カテゴリの投稿文に出現する個数を登録する。また、属性「カテゴリID」に当該単語が含まれていた投稿者のカテゴリIDを登録する。また、属性「カテゴリ別投稿者数」にカテゴリ別の投稿者数の合計を登録する。
【0040】
ここで、投稿文にURL(Uniform Resource Locator)が含まれている場合は、そのホスト名を単語として登録する。また、URLが短縮URLである場合には、実際にその短縮URLが示すサイトにアクセスし、実際のURLを取得する。そして、当該取得したURLのホスト名を単語として登録する。
【0041】
短縮URLとは、実際のURLを、より少ない文字数で表したURLである。各種のサービスが実際のURLを短縮URLに変換するサービスを行っており、実際のURLが同じであっても変換するサービスによって異なる文字列に変換されることがある。そのため、実際にサイトにアクセスして実際のURLを取得する必要がある。すなわち、実際には全く同じ内容(同じサイト)を示しているにもかかわらず、異なる単語として登録されてしまうのを防ぐために、実際のサイトにアクセスして実際のURLを取得する必要がある。
【0042】
また、実際のURLのすべての文字列を単語として登録するのではなく、ホスト名を登録するのは、URLが示すコンテンツではなく、URLが示すサイトを登録するためである。
【0043】
すなわち、URLのすべての文字列を登録した場合、それは一過性のもの(各サイトのコンテンツ)を登録することになるが、ホスト名を登録することで、恒常的なもの(サイト)を登録することができる。
【0044】
例えば、「ニュース」のカテゴリに分類すべき投稿者は、「ABC新聞の2013年6月1日の記事について投稿した投稿者」ではなく、「ABC新聞の記事について投稿した投稿者」である。このように、一過性のものについて投稿したか否かではなく、恒常的なものについて投稿したか否かで判断することが適切であると言えるため、ホスト名を辞書に登録する。
【0045】
さらに、URLのすべての文字列を単語として辞書に登録した場合、当該登録された単語は、今後の分類には使われなくなる単語になる可能性が高い。
【0046】
すなわち、例えば辞書に「商品A」を示すURLを登録した場合、この商品Aが終売してしまうと、今後、商品Aについて投稿する者はいなくなっていく可能性が高いといえる。そのため、辞書に登録したURLは、今後は使われなくなっていくと言える。同様にニュースについても、過去の記事について投稿する者は少なくなっていくと考えられる。
【0047】
以上の観点から、本実施形態では、URLについては、そのホスト名を辞書に登録する。
【0048】
ルール重み計算部は、
図8に示すルール登録データテーブルに登録されているルールに当てはまる投稿者を、
図7の投稿者データテーブルから抽出し、各カテゴリ別に重みを算出して、投稿者データテーブルに算出した重みを登録する機能を備える。
【0049】
ここで登録する重みは当てはまるルール全ての重みを合計したものである。
【0050】
投稿文分析部は、投稿文データテーブル(
図6)から投稿文を抽出し、形態素解析をして単語に分解する機能を備える。なお、形態素解析については、公知の技術により実現可能であるため、ここでは詳細の説明を省略する。
【0051】
カテゴリ分類確率計算部は、ルール重み計算部で計算された重みと、投稿文分析部で得られた単語と、
図10に示す辞書テーブルとを用いて、特定の投稿者が分類されるカテゴリのそれぞれの確率を計算する機能を備える。具体的な処理については、後述する。
【0052】
判定部は、カテゴリ分類確率計算部で算出された確率を比較して、確率が最も高いカテゴリに投稿者を分類する機能を備える。そして、
図7の投稿者データテーブルを更新する。
【0053】
図6に示す投稿文データテーブルは、マイクロブログ等から収集した投稿文のデータが登録されたテーブルである。投稿文データテーブルには、投稿文を一意に識別するための投稿文ID、当該投稿文を投稿した投稿者を識別するための投稿者ID、投稿文、投稿日時、投稿された場所を示す位置情報などが登録されている。
【0054】
図7に示す投稿者データテーブルは、マイクロブログ等から収集した投稿者のデータが登録されたテーブルである。
【0055】
投稿者データテーブルには、投稿者を識別するための投稿者ID、投稿者の登録名、判定部により判定されたカテゴリを識別するカテゴリID、教師データフラグ、ルール重み計算部により計算された各カテゴリの重みの合計、データ登録日時、投稿者の自己紹介文などが登録されている。
【0056】
図8に示すルール登録データテーブルは、ユーザにより
図2に示す画面を介して設定されたルールが登録されたテーブルである。
【0057】
なお、削除フラグには「0」が登録され、ユーザにより
図2の画面を介して削除指示がなされた場合に、「1」が登録される。
【0058】
図9に示すカテゴリマスタテーブルは、投稿者を分類するカテゴリを管理するテーブルである。カテゴリマスタテーブルには、カテゴリIDとカテゴリ名とが対応付けて登録されている。
【0059】
図10に示す辞書テーブルは、カテゴリ分類確率計算部で使用される辞書データが登録されたテーブルである。上述の通り、辞書テーブルに登録されるデータは、辞書データ作成部により作成され登録される。
【0060】
次に、
図11を用いて、教師データ登録部と辞書データ作成部による辞書データ作成処理を説明する。
【0061】
図11に示す処理は、情報処理装置101のCPU1801が所定の制御プログラムを読み出して実行する処理である。
【0062】
ステップS101では、情報処理装置101のCPU1801が、マイクロブログ等の分析対象とする投稿文と当該投稿文を投稿した投稿者に関する情報とをインターネット等から取得する。
【0063】
取得した情報については、投稿文データテーブル(
図6)や、投稿者データテーブル(
図7)に格納する。
【0064】
ステップS102では、情報処理装置101のCPU1801は、
図5に示す教師データ作成画面を表示し、ステップS101で取得したデータを表示する。そして、ユーザから各投稿者に対するカテゴリ分類を受け付ける。ユーザにより登録ボタン(504、505)が押下されると、受け付けたカテゴリを示すカテゴリIDを含むデータを、投稿者データテーブル(
図7)に登録し、教師データフラグを「1」として登録する。
【0065】
ステップS103では、情報処理装置101のCPU1801は、カテゴリ別の投稿文を取得する。具体的には、ステップS102で登録されたカテゴリIDが同一の投稿者による投稿文を投稿文データテーブルから取得する。
【0066】
ステップS104では、情報処理装置101のCPU1801は、ステップS103で取得した投稿文を形態素解析により単語に分解する。
【0067】
ステップS105では、情報処理装置101のCPU1801は、ステップS104の処理により得られた単語毎に、カテゴリ毎の当該単語の出現数、当該単語を使用した投稿者数を辞書テーブルに登録する。そして、本フローチャートの処理を終了する。
【0068】
以上の処理により、ユーザの判断により投稿者がカテゴリ分類され、カテゴリ分類の結果から辞書データを作成することが可能となる。ここで作成された辞書データを基準として、
図12におけるカテゴリ分類処理が実行される。
【0069】
次に
図12を用いて、カテゴリ判定を行っていない投稿者について、
図11の処理により作成された辞書データを用いてカテゴリ分類をする処理について説明する。
【0070】
図12に示す処理は、情報処理装置101のCPU1801が所定の制御プログラムを読み出して実行する処理である。
【0071】
ステップS201では、情報処理装置101のCPU1801は、判定対象(カテゴリ分類する対象)となる投稿者の投稿文を投稿文データテーブルから取得する。
【0072】
投稿文データテーブルから取得する投稿文は、
図11のステップS101で格納された投稿文のうち、カテゴリ分類されていない投稿者による投稿文である。
【0073】
ステップS202では、情報処理装置101のCPU1801は、判定対象の投稿者の投稿者情報(自己紹介文)を投稿者データテーブル(
図7)から取得する。
【0074】
ステップS203では、情報処理装置101のCPU1801は、辞書テーブルに登録されたデータを用いて、事前確率をカテゴリ別に算出する。
事前確率は、以下の計算式により算出される。
事前確率=カテゴリ別投稿者数/カテゴリ別投稿者数の総和
【0075】
ステップS204では、情報処理装置101のCPU1801は、ルール登録データテーブル(
図8)から、ユーザにより登録されたルールを取得する。
【0076】
ステップS205では、情報処理装置101のCPU1801は、ステップS204で取得したルールのうち、確定ルールに判定対象の投稿者が合致するか否かを判定する。
【0077】
判定対象の投稿者が該当する確定ルールがある場合(ステップS205:YES)は、処理をステップS211に移行する。
【0078】
ステップS211では、情報処理装置101のCPU1801は、判定対象の投稿者を、確定ルールに対応するカテゴリに分類して処理を終了する。ここで、複数のカテゴリに分類される場合(複数の確定ルールに該当する場合)は、事前確率が最も高いカテゴリに分類する。
【0079】
判定対象の投稿者が該当する確定ルールがない場合(ステップS205:NO)は、処理をステップS206に移行する。
【0080】
ステップS206では、情報処理装置101のCPU1801は、判定対象の投稿者が該当する自動ルールの重みの合計をカテゴリ別に算出し、算出したカテゴリ別の重みの合計を投稿者データテーブルに登録する。
【0081】
ステップS207では、情報処理装置101のCPU1801は、ステップS206で算出したカテゴリ別の重みの合計値が最も高いカテゴリについて、その尤度を高めるために、事前確率を更新する。
事前確率の更新について処理の一例を以下説明する。
【0082】
例えば、カテゴリが3つ(BOT、ニュース、一般ユーザ)あり、事前確率がそれぞれA、B、Cであるとする。このうちAが最も高い値であるとする。他方で、重みの合計値については、ニュースのカテゴリが最も大きいとする。この場合、重みが最も高いニュースのカテゴリの尤度を高くしたいので、ニュースのカテゴリの事前確率をBからAに更新する。これにより、ニュースの事前確率を高めることが可能となる。
【0083】
このように、ルールに基づき算出された重みを考慮して、事前確率を更新することで、投稿内容だけでなく、投稿者の情報を考慮したカテゴリ分類が可能となる。また、事前確率を最大のカテゴリと合わせることで、事前確率を考慮に入れず、投稿内容によるカテゴリ分類をすることが可能となる。
【0084】
この方法以外にも、例えばカテゴリ別の重みの比をそれぞれの事前確率に乗算する方法なども考えられる。本発明においては、事前確率の更新処理の具体的方法はいずれの方法であってもよい。
【0085】
ステップS208では、情報処理装置101のCPU1801は、判定対象の投稿者の投稿文を形態素解析により単語に分解する。ここでの形態素解析の条件(解析に用いる辞書や求める品詞など)は、辞書テーブルを作成した際に用いた条件と同じものとする。
【0086】
ここで、投稿文にURL(Uniform Resource Locator)が含まれている場合は、そのホスト名を単語として登録する。また、URLが短縮URLである場合には、実際にその短縮URLが示すサイトにアクセスし、実際にURLを取得する。そして、当該取得したURLのホスト名を単語として登録する。
【0087】
短縮URLとは、実際のURLを、より少ない文字数で表したURLである。各種のサービスが実際のURLを短縮URLに変換するサービスを行っており、同じURLであっても変換するサービスによって異なる文字列に変換される。そのため、実際にサイトにアクセスして実際のURLを取得する必要がある。すなわち、実際には全く同じ内容を示しているにもかかわらず、異なる単語として登録されてしまうのを防ぐために、実際のサイトにアクセスしてURLを取得する必要がある。
【0088】
ステップS209では、情報処理装置101のCPU1801は、ステップS208の形態素解析により得られた単語と辞書テーブルとを用いて、尤度をカテゴリ別に単語ごとに求める。ここで単語別の尤度は以下の計算式により求められる。
【0089】
単語別尤度=辞書テーブルに登録されている単語の数/カテゴリ別の辞書テーブルに含まれている単語の総数
【0090】
ステップS210では、情報処理装置101のCPU1801は、ステップS207で求めた事前確率と、ステップS209で求めた単語別の尤度とを用いて、カテゴリ別に事後確率を求める。
【0091】
ステップS211では、情報処理装置101のCPU1801は、ステップS210で求めた事後確率が最大となるカテゴリを、判定対象の投稿者のカテゴリと判定し、投稿者データテーブルに当該カテゴリを登録する。
【0092】
なお、本実施例のようにナイーブベイズ分類を用いた場合、辞書テーブルに登録されていない単語が出現すると、事後確率が0になってしまうゼロ頻度問題が生じる。この問題に対しては、ラプラススムージング等の手法を用いることで対処することが可能である。
【0093】
次に、
図13を用いて、ルール登録データテーブルに新たなルールが追加された場合、および既存のルールが削除された場合に発生する処理について説明する。
【0094】
図13に示す処理は、情報処理装置101のCPU1801が所定の制御プログラムを読み出して実行する処理である。
【0095】
ステップS301では、情報処理装置101のCPU1801は、新たに追加登録されたルール、削除されたルールを抽出する。これは、
図2に示すルール設定画面により、登録ボタンが押下された場合または削除ボタンが押下された場合に実行される。
【0096】
ステップS302では、情報処理装置101のCPU1801は、新たに追加または削除されたルールに該当する投稿者の投稿文と、投稿者データとをそれぞれ投稿文データテーブル、投稿者データテーブルから取得する。
【0097】
ステップS303では、情報処理装置101のCPU1801は、事前確率を算出する。ここでの算出処理は、ステップS203における処理と同様である。
【0098】
そして、ステップS302で取得した全投稿者に対して、ステップS305〜S313の処理を実行する(ステップS304)。
【0099】
ステップS305では、情報処理装置101のCPU1801は、ルール登録データテーブルに登録されたルールのうち確定ルールに、判定対象の投稿者が合致するか否かを判定する。
【0100】
判定対象の投稿者が該当する確定ルールがある場合(ステップS305:YES)は、処理をステップS313に移行する。
【0101】
ステップS313では、情報処理装置101のCPU1801は、判定対象の投稿者を、確定ルールに対応するカテゴリと判定し、投稿者データテーブルに当該カテゴリを登録する。ここで、複数のカテゴリに分類される場合(複数の確定ルールに該当する場合)は、事前確率が最も高いカテゴリに分類する。
【0102】
判定対象の投稿者が該当する確定ルールがない場合(ステップS305:NO)は、処理をステップS306に移行する。
【0103】
ステップS306では、情報処理装置101のCPU1801は、投稿者データテーブルからカテゴリ別の重みを取得する。
【0104】
ステップS307では、情報処理装置101のCPU1801は、ルールが新たに追加された場合は、当該ルールの重みをカテゴリ毎に加算する。他方、ルールが削除された場合は、当該ルールの重みをカテゴリごとに減算する。そして、加算・減算した重みにより、投稿者データテーブルを更新する。
【0105】
ステップS308では、情報処理装置101のCPU1801は、ステップS307の処理により、最も大きい重みを持つカテゴリが変更されたか否かを判定する。
【0106】
最も重みの大きいカテゴリが変更された場合(ステップS308:YES)は、処理をステップS309に移行する。
【0107】
最も重みの大きいカテゴリが変更されていない場合(ステップS308:NO)は、次の投稿者に対する処理に移行し、次の投稿者に対してステップS305〜S313の処理を実行する。
【0108】
ステップS309では、情報処理装置101のCPU1801は、最も重みの高いカテゴリの事前確率を更新する。ステップS309の処理は、
図12のステップS207の処理と同様である。
【0109】
また、ステップS310〜S313の処理については、それぞれ
図12のステップS208〜S211の処理と同一であるため、ここでの説明は省略する。
【0110】
次に
図17を用いて、投稿者データに変更があった場合に実行される処理について説明する。
【0111】
図17に示す処理は、情報処理装置101のCPU1801が所定の制御プログラムを読み出すことで実行される処理である。
【0112】
ステップS401では、情報処理装置101のCPU1801は、投稿者データテーブルと同じ属性値を持つダミーテーブルを作成する。そして、投稿者データテーブルに登録され、教師データフラグが「0」である投稿者のすべてに対して、ステップS403〜S419の処理を実行する(ステップS402)。
【0113】
ステップS403では、情報処理装置101のCPU1801は、最新の投稿者データを取得し、ステップS401で作成したダミーテーブルに登録する。このとき、カテゴリIDとカテゴリNの重みは、投稿者データテーブルに登録されている属性値を登録する。教師データフラグについては、「0」を登録する。
【0114】
ステップS404では、情報処理装置101のCPU1801は、カテゴリIDとカテゴリNの重みを除いた投稿者データテーブルの属性値と、ダミーテーブルに登録された属性値とを比較し、差異があるかを比較する。
【0115】
差異がある場合(ステップS405:YES)は、処理をステップS406に移行する。
【0116】
差異がない場合(ステップS405:NO)は、次の投稿者に対する処理に移行する。
【0117】
差異がある場合は、全ルールについて、ダミーテーブルに登録されたデータの判定処理を行う(ステップS406)。
【0118】
ステップS407では、情報処理装置101のCPU1801は、ルール登録データテーブルに登録されたルールのうち確定ルールに、ダミーテーブルに登録された投稿者が合致するか否かを判定する。
【0119】
合致する確定ルールがある場合(ステップS407:YES)は、処理をステップS418に移行する。
【0120】
ステップS418では、情報処理装置101のCPU1801は、ステップS407で合致すると判定された確定ルールに設定されたカテゴリをダミーテーブルに登録する。
【0121】
合致する確定ルールがない場合(ステップS407:NO)は、処理をステップS408に移行する。
【0122】
ステップS408では、情報処理装置101のCPU1801は、投稿者データテーブルからカテゴリ別の重みを取得する。
【0123】
ステップS409では、情報処理装置101のCPU1801は、ステップS408で取得した重みをダミーテーブルに登録する。
【0124】
以上のステップS407〜S409の処理を、全ルールについて行う(ステップS410)。
【0125】
ステップS411では、情報処理装置101のCPU1801は、重みが最高のカテゴリが変わったか否かを判定する。
【0126】
重みが最高のカテゴリが変わった場合(ステップS411:YES)は、処理をステップS412に移行する。
【0127】
重みが最高のカテゴリが変わっていない場合(ステップS411:NO)は、処理をステップS419に移行する。
【0128】
ステップS412では、情報処理装置101のCPU1801は、事前確率を計算する。
【0129】
ステップS413では、情報処理装置101のCPU1801は、ステップS412で計算された事前確率により、更新する。
【0130】
ステップS414では、情報処理装置101のCPU1801は、判定対象者の投稿文を取得する。
【0131】
ステップS415では、情報処理装置101のCPU1801は、ステップS414で取得した投稿文を形態素解析により単語に分解する。
【0132】
ステップS416では、情報処理装置101のCPU1801は、ステップS415で得られた単語と辞書テーブルとを用いて、尤度をカテゴリ別に単語ごとに求める。
【0133】
ステップS417では、情報処理装置101のCPU1801は、事前確率と、単語別の尤度とを用いて、カテゴリ別に事後確率を求める。
【0134】
ステップS418では、情報処理装置101のCPU1801は、事後確率が最大となるカテゴリを特定し、ダミーテーブルに当該カテゴリを登録する。
【0135】
ステップS419では、情報処理装置101のCPU1801は、ダミーテーブルに登録された値を、投稿者データテーブルに上書きする。
【0136】
以上の処理により、投稿者情報が変更された場合に、投稿者を再度分類することが可能となる。
【0137】
次に、カテゴリ判定が行われていない投稿者を分類する処理について、具体例を用いて説明する。
【0138】
ここでは、
図14〜
図16に示すテーブルがあらかじめ用意されていることを前提として、未判定の投稿者(ここでは「A_news」として説明する)を実際に分類する具体的な処理を、
図12のフローチャートに沿って説明する。
【0139】
なお、辞書テーブル作成時の条件として、形態素解析時に抽出する品詞は、名詞と形容詞とする。
【0140】
まず、判定対象の投稿者の投稿文を取得する。ここで判定対象の投稿者の投稿文が「[速報]セールが始まりました!」の1つだけであったとする。
【0141】
次に、投稿者の投稿情報を取得する。ここで判定対象の投稿者の自己紹介文が「Aニュースサイトからの投稿です。」であったとする。
【0142】
次に、事前確率を計算する。
図15の辞書テーブルより、BOT、ニュース、一般ユーザのそれぞれの事前確率は、BOT:70/100、ニュース:20/100、一般ユーザ:10/100となる。具体的には、辞書テーブルに登録された投稿者数は100であり、そのうちカテゴリがBOTである投稿者数は70、ニュースは20、一般ユーザは10である。
【0143】
次に、該当するルールを確認する。ここでA_newsは、ルール2(ルール2は「自己紹介文に“ニュース”という単語が含まれる」というルールであるとする)に該当する。そのため、ルール2のそれぞれの重みを投稿者データテーブルに登録する。
【0144】
そして、事前確率を更新する。上記の処理で得られたそれぞれのカテゴリの重みを比較すると、カテゴリB(ニュース)の重みが最大であることが分かる(
図16)。そこで、カテゴリBの事前確率を20/100から70/100に更新する。ここでは、上述した重みが最大であるカテゴリの事前確率を、事前確率が最大のものに合わせることによって更新する。
【0145】
次に、投稿文を形態素解析し、単語に分解する。A_newsの投稿文「[速報]セールが始まりました!」から名詞と形容詞を抜き出すと、「速報」、「セール」が得られる。
【0146】
次にカテゴリ別に尤度を計算する。まずBOTの尤度を求める。
図15の辞書テーブルを見ると、BOT(カテゴリID:A)の単語に「速報」は存在しないが、「セール」は存在している。よって、BOTの「速報」の尤度は1/60となり、「セール」の尤度は10/60となる。なお、尤度の計算は、当該カテゴリにおける当該単語の出現数/当該カテゴリの単語出現数の総数となる。また、「速報」の尤度が0/60としないのは、上述したラプラススムージングという手法を用いたためである。
【0147】
以下同様に、ニュースの「速報」と「セール」の尤度は、それぞれ20/60、1/60となる。一般ユーザの「速報」と「セール」の尤度は、それぞれ1/40、1/40となる。
【0148】
次に、事後確率を計算する。まず、BOTの事後確率を求める。BOTの事前確率は70/100であり、単語(「速報」「セール」)の尤度はそれぞれ1/60、10/60である。そのため、事後確率は、(70/100×1/60)×(70/100×10/60)=0.00136(小数第6位四捨五入)となる。
【0149】
以下同様に、ニュースの事後確率は更新された事前確率を用いて(70/100×20/60)×(70/100×1/60)=0.00272となる。また一般ユーザの事後確率は、(10/100×1/40)×(10/100×1/40)=0.00001となる。
【0150】
次に算出した事後確率を比較し、カテゴリに分類する。上記の計算で得られた事後確率を比較すると、ニュースの事後確率が最も高い。そのため、投稿者「A_news」はニュースのカテゴリに分類される。
【0151】
最後に、投稿者データテーブルの属性“投稿者ID”がA_newsであるテーブルの属性“カテゴリID”にニュースのカテゴリIDである“B”が登録される。
【0152】
図18は、情報処理装置101のハードウエア構成を示す図である。
【0153】
図18において、1801はCPUで、システムバス1804に接続される各デバイスやコントローラを統括的に制御する。また、ROM1803あるいは外部メモリ1811には、CPU1801の制御プログラムであるBIOS(Basic Input / Output System)やオペレーティングシステムプログラム(以下、OS)や、各サーバ或いは各PCの実行する機能を実現するために必要な各種プログラム等が記憶されている。
【0154】
1802はRAMで、CPU1801の主メモリ、ワークエリア等として機能する。CPU1801は、処理の実行に際して必要なプログラム等をROM1803あるいは外部メモリ1811からRAM1802にロードして、該ロードしたプログラムを実行することで各種動作を実現するものである。
【0155】
また、1805は入力コントローラで、入力装置1809等からの入力を制御する。1806はビデオコントローラで、液晶ディスプレイ等のディスプレイ装置1810への表示を制御する。なお、ディスプレイ装置は、液晶ディスプレイに限られず、CRTディスプレイなどであっても良い。これらは必要に応じてクライアントが使用するものである。
【0156】
1807はメモリコントローラで、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)や、フレキシブルディスク(FD)、或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等の外部メモリ1811へのアクセスを制御する。
【0157】
1808は通信I/Fコントローラで、ネットワークを介して外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いた通信等が可能である。
【0158】
なお、CPU1801は、例えばRAM1802内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ装置1810上での表示を可能としている。また、CPU1801は、ディスプレイ装置1810上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【0159】
ハードウエア上で動作する各種プログラムは、外部メモリ1811に記録されており、必要に応じてRAM1802にロードされることによりCPU1801によって実行されるものである。
【0160】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【0161】
また、本発明におけるプログラムは、
図11〜
図13、
図17の処理をコンピュータに実行させるプログラムである。なお、本発明におけるプログラムは、
図11〜
図13、
図17の各処理ごとのプログラムであってもよい。
【0162】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読み出し、実行することによっても本発明の目的が達成されることは言うまでもない。
【0163】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した記録媒体は本発明を構成することになる。
【0164】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、DVD−ROM、磁気テープ、不揮発性のメモリカード、ROM、EEPROM、シリコンディスク等を用いることが出来る。
【0165】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0166】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0167】
また、本発明は、複数の機器から構成されるシステムに適用しても、ひとつの機器から成る装置に適用しても良い。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0168】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。