以下、添付図面を参照して、本発明の一実施形態について詳細に説明する。なお、図面の説明において同一又は相当要素には同一符号を付し、重複する説明を省略する。
図1は、一実施形態に係る名寄せ装置を含むサーバ10の機能構成を示す図である。サーバ10は、複数のPOI情報(場所情報)の名寄せを実行する装置である。複数のPOI情報は、例えば、互いに異なる複数のデータソース(例えば情報サービス事業者)により提供されるPOI情報の集合である。
「POI情報」とは、特定の場所(例えば施設等)を示すPOI(Point Of Interest)に関する情報である。POIの例としては、店舗、レジャー施設、及び観光施設等が挙げられる。POI情報は、POIの名称を示す情報(例えば文字列)、POIに関連付けられる位置座標を示す位置情報(例えば緯度及び経度)、及びPOIのカテゴリ(例えば「飲食店」等の施設のジャンル等)を示すカテゴリ情報(例えば文字列)等を含み得る。
「POI情報の名寄せ」とは、情報の重複を排除するために、同一のPOIを示すPOI情報同士をマージすることを意味する。例えば、互いに異なる複数のデータソースにより提供されるPOI情報の中には、同一のPOIに関する重複した複数のPOI情報が存在し得る。このようなPOI情報に含まれるPOIの名称、位置情報、カテゴリ情報等の詳細情報は、互いに一致する場合もあれば、互いに異なる場合もあり得る。詳細情報の不一致は、各データソースが保有している情報の違いに起因する。このため、複数のPOI情報を適切に名寄せするためには、詳細情報(名称、位置情報、カテゴリ情報等)が完全一致するペアを互いに重複するPOI情報(同一のPOIを示すPOI情報)として特定するだけでは十分ではない。すなわち、詳細情報の一部が互いに異なるペアについても同一のPOIを示す可能性があるため、このようなペアについてもPOI情報同士の同一性(同一のPOIを示すか否か)を適切に判定することが求められる。
ここで、2つのPOI情報が同一のPOIを示す場合、当該2つのPOI情報の位置情報が示す位置座標間の距離(POI間距離)は比較的小さくなると考えられる。そこで、サーバ10は、2つのPOI情報同士の位置情報の比較に基づいて、2つのPOI情報同士の同一性の判定(名寄せ判定)を実行する。サーバ10の特徴の1つは、このような位置情報の比較の際に用いる閾値(後述する許容距離に基づいて決定される値)を、判定対象となるPOI情報に応じて動的に決定する点にある。
図1を参照して、サーバ10の各機能要素について説明する。同図に示されるように、サーバ10は、記憶部11と、POI情報取得部12(場所情報取得部)と、投稿情報取得部13と、パラメータ決定部14と、判定部15と、を備える。
記憶部11は、サーバ10の処理に必要となる各種情報を記憶する。本実施形態では、記憶部11は、POI情報管理テーブル(図2及び図9参照)、比較対象ペア管理テーブル(図3参照)、投稿情報管理テーブル(図4参照)、関連付け管理テーブル(図6参照)、及び許容距離管理テーブル(図8参照)を記憶する。記憶部11に記憶された各種情報は、POI情報取得部12、投稿情報取得部13、パラメータ決定部14、及び判定部15からアクセス可能となっている。
POI情報取得部12は、互いに比較対象となるPOI情報のペア(以下「比較対象ペア」ともいう)である第1POI情報(第1場所情報)及び第2POI情報(第2場所情報)を取得する。一例として、POI情報取得部12は、複数のデータソースにより提供される複数のPOI情報が予め格納されたPOI情報管理テーブルを参照することにより、任意の2つのPOI情報を比較対象ペアとして取得する。
図2は、POI情報管理テーブルの一例を示す図である。POI情報管理テーブルに格納される1つのPOI情報(1レコード分の情報)は、POI情報を一意に特定するための識別情報であるPOI情報IDと、POIの名称と、POIに関連付けられる位置座標(以下「POI位置」ともいう)を示す位置情報とを含んでいる。
一例として、POI情報取得部12は、POI情報管理テーブルに格納された複数のPOI情報のうちから任意の2つのPOI情報を抽出することで得られる全ての組み合わせに対応する比較対象ペアを取得してもよい。POI情報取得部12により取得された比較対象ペアは、比較対象ペア管理テーブルに格納される。
図3は、比較対象ペア管理テーブルの一例を示す図である。比較対象ペア管理テーブルに格納される1つの比較対象ペアを示す情報(1レコード分の情報)は、互いに比較対象となる第1POI情報及び第2POI情報を含んでいる。比較対象ペア管理テーブルの「ID_A」列、「名称A」列、「緯度A」列、及び「経度A」列には、第1POI情報のPOI情報ID、名称(第1名称)、並びに、緯度及び経度(第1位置情報)が格納されている。また、比較対象ペア管理テーブルの「ID_B」列、「名称B」列、「緯度B」列、及び「経度B」列には、第2POI情報のPOI情報ID、名称(第2名称)、並びに、緯度及び経度(第2位置情報)が格納されている。「名称A」列又は「名称B」列のアルファベット“A”〜“F”は、それぞれ一以上の文字からなる文字列を表しており、同一のアルファベットは同一の文字列を表している。
投稿情報取得部13は、投稿された場所の位置座標を示す投稿位置情報を含む一以上の投稿情報のうちPOI情報管理テーブルに格納された各POI情報が示すPOI(すなわち、各POI情報に含まれる名称により特定されるPOI)を示す情報を含む投稿情報を取得する。ある比較対象ペア(第1POI情報及び第2POI情報)に着目した場合、投稿情報取得部13は、第1POI情報に含まれる名称(第1名称)により特定されるPOIを示す情報を含む投稿情報(第1投稿情報)と、第2POI情報に含まれる名称(第2名称)により特定されるPOIを示す情報を含む投稿情報(第2投稿情報)とを取得する。
投稿情報は、例えばマイクロブログ等のSNS(Social Networking Service)において不特定多数のユーザによって投稿されたテキスト情報等である。投稿情報に含まれる投稿位置情報は、例えばジオタグ等である。ジオタグとは、投稿情報に付加され得る位置情報であり、例えばユーザが所有する端末から投稿情報が投稿(発信)された際における当該端末の位置座標(緯度及び経度)を示す情報である。ジオタグは、例えば、投稿情報を投稿する際における上記端末の処理によって当該投稿情報に付加される。
一例として、投稿情報取得部13は、不特定多数のユーザによって投稿された複数の投稿情報を予め格納(蓄積)する投稿情報管理テーブルから、上述した要件に合致した投稿情報を取得する。なお、一般的な投稿情報には、投稿位置情報が付加されていない投稿情報も存在し得るが、本実施形態では投稿位置情報が付加された投稿情報のみを取り扱う。すなわち、投稿情報管理テーブルには、投稿位置情報が付加された投稿情報のみが格納されているものとする。
図4は、投稿情報管理テーブルの一例を示す図である。投稿情報管理テーブルに格納される1つの投稿情報(1レコード分の情報)は、投稿ID、ユーザID、タイムスタンプ、緯度、経度、及び投稿テキストを含んでいる。投稿IDは、投稿情報を一意に特定するための識別情報である。ユーザIDは、投稿情報を投稿したユーザを一意に特定するための識別情報である。ユーザIDは、例えばSNS等におけるログインID等である。タイムスタンプは、投稿情報が投稿された日時を示す情報である。緯度及び経度は、上述した投稿位置情報が示す位置座標(以下「投稿位置」ともいう)である。投稿テキストは、ユーザによって入力されたテキスト情報である。
図5に示されるフローチャートを参照して、投稿情報取得部13の処理手順の一例に着いて説明する。
まず、ステップS1において、投稿情報取得部13は、投稿情報管理テーブルに格納された投稿情報を1つ選択する。続いて、ステップS2において、投稿情報取得部13は、選択された投稿情報に含まれる投稿テキストに対して、公知の形態素解析を実行する。例えば投稿IDが「Text_001」である投稿情報(図4の投稿情報管理テーブルの1行目の投稿情報)に含まれる投稿テキスト「Aのサービスが素晴らしい」に対して形態素解析を実行した場合、「A/の/サービス/が/素晴らしい」のように複数の形態素(スラッシュ(/)で区切られた個々の文字列)が得られる。
続いて、ステップS3において、投稿情報取得部13は、POI情報管理テーブル(図2参照)に含まれるPOI名称と一致する形態素があるか否かを判定する。判定結果が「NO」の場合には、投稿情報取得部13は、ステップS7の処理(後述)を実行する。一方、判定結果が「YES」の場合には、ステップS4において、投稿情報取得部13は、当該POI名称を含むPOI情報を取得する。上記例では、POI名称“A”と一致する形態素が存在するため、ステップS3における判定結果は「YES」となる。このため、ステップS4において、POI名称“A”を含むPOI情報(図2のPOI情報管理テーブルに格納されたPOI情報IDが「Poi_A001」であるPOI情報)が取得される。この例では、POI名称“A”を形態素として含む投稿テキストが、上述した「POIを示す情報」に相当する。
続いて、ステップS5において、投稿情報取得部13は、ステップS4において取得されたPOI情報のPOI位置とステップS1において選択された投稿情報の投稿位置との直線距離である距離distを算出する。例えば、POI位置を(x1,y1)とし、投稿位置を(x2,y2)とすると、投稿情報取得部13は、下記(式1)により、距離distを算出できる。なお、下記(式1)において、rは赤道半径(6378.137km)を表す。
(式1):dist=r×cos-1(sin(y1)×sin(y2)+cos(y1)×cos(y2)×cos(x2-x1))
そして、投稿情報取得部13は、距離distが閾値以下であるか否かを判定する。閾値は、例えばオペレータ等により予め定められており、例えば1000m等である。閾値は、後述する判定部15が用いる許容距離(パラメータ)の取り得る最大値に応じて定義される。上記判定により、投稿情報取得部13は、ユーザがPOI名称“A”により特定されるPOIを訪問している最中に投稿した可能性の高い投稿情報を抽出できる。
ステップS5における判定結果が「NO」の場合には、投稿情報取得部13は、ステップS7の処理(後述)を実行する。一方、判定結果が「YES」の場合には、ステップS6において、投稿情報取得部13は、ステップS4において取得されたPOI情報とステップS1において選択された投稿情報とを関連付ける。上記例では、POI情報IDが「Poi_A001」であるPOI情報のPOI位置と投稿IDが「Text_001」である投稿情報の投稿位置との距離が144mであるため、投稿情報取得部13は、当該POI情報と当該投稿情報とを関連付ける。投稿情報取得部13は、互いに関連付けられるPOI情報及び投稿情報のペアを、関連付け管理テーブルに格納する。
図6は、関連付け管理テーブルの一例を示す図である。関連付け管理テーブルに格納される1つの関連付け情報(1レコード分の情報)は、互いに関連付けられるPOI情報及び投稿情報の各々のID(POI情報ID及び投稿ID)と、POI位置と投稿位置との距離distとを含んでいる。
続いて、ステップS7において、投稿情報取得部13は、投稿情報管理テーブルに格納された全ての投稿情報について処理を完了したか否かを判定する。判定結果が「YES」の場合には、投稿情報取得部13は処理を終了する。一方、判定結果が「NO」の場合には、投稿情報取得部13は、ステップS1に戻り、投稿情報管理テーブルから未処理の投稿情報を1つ選択し、新たに選択された投稿情報に対して上述した処理(ステップS2〜S6)を実行する。
以上の処理により、図6に示される関連付け管理テーブルが生成される。この例では、投稿IDが「Text_002」である投稿情報も、投稿IDが「Text_001」である投稿情報と同様に、POI情報IDが「Poi_A001」であるPOI情報に関連付けられている。投稿IDが「Text_003」である投稿情報は、投稿テキストの形態素としてPOI情報IDが「Poi_A001」であるPOI情報の名称“A”を含んでいるが、上記ステップS5において算出される距離distが閾値(1000m)より大きいため、当該POI情報には関連付けられていない。投稿IDが「Text_004」である投稿情報は、投稿テキストの形態素としてPOI情報IDが「Poi_A002」であるPOI情報の名称“B”を含んでおり、且つ、上記ステップS5において算出される距離distが閾値以下となるため、当該POI情報に関連付けられている。
各POI情報に関連付けられた投稿情報(より具体的には互いに関連付けられるPOI情報及び投稿情報の各々の位置座標間の距離dist)は、後述するパラメータ決定部14が各POI情報に関連付けられる許容距離を決定するために用いられる。
ここで、ある比較対象ペア(例えば、POI情報IDが「Poi_A001」であるPOI情報(第1POI情報)とPOI情報IDが「Poi_B001」であるPOI情報(第2POI情報)とのペア)に着目した場合、投稿情報取得部13は、以下の処理を実行する。すなわち、投稿情報取得部13は、上述の処理(特にステップS5における判定)により、第1POI情報のPOI位置(第1位置情報)と投稿位置との距離distと、閾値(ここでは1000m)との比較に基づいて、取得対象となる第1投稿情報(すなわち、第1POI情報に関連付けられる投稿情報)を決定し、当該第1投稿情報を取得する。同様に、投稿情報取得部13は、第2POI情報のPOI位置(第2位置情報)と投稿位置との距離distと、閾値(ここでは1000m)との比較に基づいて、取得対象となる第2投稿情報(すなわち、第2POI情報に関連付けられる投稿情報)を決定し、当該第2投稿情報を取得する。
パラメータ決定部14は、各POI情報について投稿情報取得部13により取得された投稿情報(すなわち、各POI情報に関連付けられた投稿情報)の投稿位置情報に基づいて、各POI情報に関連付けられる許容距離を決定する。例えば、パラメータ決定部14は、POI情報のPOI位置と当該POI情報に関連付けられた投稿情報の投稿位置との距離に基づいて、当該POI情報に関連付けられる許容距離を決定する。POI情報に関連付けられる許容距離は、当該POI情報に含まれる名称により特定されるPOIと同一であるか否かの判定に用いられる距離に関するパラメータである。
(第1の例)
例えば、パラメータ決定部14は、許容距離の算出対象となるPOI情報を1つ選択し、関連付けテーブル(図6参照)から当該POI情報のPOI情報ID(例えば「Poi_A001」)を含む関連付け情報を抽出する。そして、パラメータ決定部14は、抽出された一以上の関連付け情報に含まれる距離distの平均値を算出し、当該平均値に予め定められた係数(例えば「2」)を乗算した値を、当該POI情報に関連付けられる許容距離として決定してもよい。
(第2の例)
また、パラメータ決定部14は、上述のようにして許容距離の算出対象となるPOI情報について抽出された一以上の関連付け情報に含まれる距離distの所定パーセント点(例えば75パーセント点)を算出する。ここで、距離distのxパーセント点とは、複数の距離distのデータを昇順(小から大への順)に整列させた場合に、データ全体のx%番目に相当する距離distの値である。そして、パラメータ決定部14は、当該パーセンタイル値に予め定められた係数(例えば「2」)を乗算した値を、当該POI情報に関連付けられる許容距離として決定してもよい。
(第3の例)
図7を参照して、許容距離の算出手順の第3の例について説明する。パラメータ決定部14は、許容距離の算出対象となるPOI情報のPOI位置Pを中心とする所定の大きさの領域(例えば所定半径の円形領域)を設定する。例えば、図7に示されるように、パラメータ決定部14は、初期領域として半径d(例えばd=50m)の円形領域A1を設定する。そして、パラメータ決定部14は、関連付けテーブルを参照することにより、当該POI情報に関連付けられる投稿情報のうち、当該円形領域A1に投稿位置Tが含まれる投稿情報(すなわち、距離distが半径d以下である投稿情報)を抽出する。
続いて、パラメータ決定部14は、半径を2倍(2d)に拡張することで円形領域A1を円形領域A2に拡張し、拡張後の円形領域A2に投稿位置Tが含まれる投稿情報を抽出する。パラメータ決定部14は、領域の拡張によって、予め定められた数(例えば5個)以上の投稿情報が新たに抽出されたか否かを記憶しておく。パラメータ決定部14は、このように円形領域の半径を定数(ここでは半径d)刻みで拡張しつつ、領域の拡張によって予め定められた数以上の投稿情報が新たに抽出されたか否かを確認する。パラメータ決定部14は、領域の拡張によって予め定められた数以上の投稿情報が新たに抽出されない状況が予め定められた回数(例えば2回)連続で続いた場合に、上述した円形領域の拡張処理を終了する。そして、パラメータ決定部14は、予め定められた数以上の投稿情報が新たに抽出された最後の拡張が行われた後の円形領域の半径を、当該POI情報に関連付けられる許容距離として決定する。
図7の例では、半径dの円形領域A1を半径2dの円形領域A2に拡張した際に、予め定められた数(ここでは5個)の投稿情報が新たに抽出される。その後、円形領域A2を半径3dの円形領域A3に拡張した際には1個の投稿情報しか新たに抽出されず、円形領域A3を円形領域A4に拡張した際には新たに抽出される投稿情報は存在しない。このため、パラメータ決定部14は、円形領域A3を円形領域A4に拡張した時点で、領域の拡張によって予め定められた数以上の投稿情報が新たに抽出されない状況が2回連続で続いたことを検知し、円形領域の拡張処理を終了する。そして、パラメータ決定部14は、予め定められた数以上の投稿情報が新たに抽出された最後の拡張(すなわち、円形領域A1から円形領域A2への拡張)が行われた後の円形領域A2の半径2dを、当該POI情報に関連付けられる許容距離として決定する。
パラメータ決定部14は、上述したような処理を関連付け管理テーブルに含まれる全てのPOI情報について実行することにより、各POI情報に関連付けられる許容距離を決定する。各POI情報に関連付けられる許容距離は、許容距離管理テーブルに格納される。
図8は、許容距離管理テーブルの一例を示す図である。許容距離管理テーブルに格納される1つの情報(1レコード分の情報)は、POI情報IDと、当該POI情報IDにより識別されるPOI情報についてパラメータ決定部14により決定された許容距離とを含んでいる。
ここで、ある比較対象ペア(例えば、POI情報IDが「Poi_A001」であるPOI情報(第1POI情報)とPOI情報IDが「Poi_B001」であるPOI情報(第2POI情報)とのペア)に着目した場合、パラメータ決定部14は、以下の処理を実行する。すなわち、パラメータ決定部14は、第1POI情報のPOI位置(第1位置情報)と第1投稿情報(投稿情報取得部13により取得された第1POI情報に関連付けられる投稿情報)の投稿位置との距離distに基づいて、第1POI情報に関連付けられる許容距離を決定する。同様に、パラメータ決定部14は、第2POI情報のPOI位置(第2位置情報)と第2投稿情報(投稿情報取得部13により取得された第2POI情報に関連付けられる投稿情報)の投稿位置との距離distに基づいて、第2POI情報に関連付けられる許容距離を決定する。
このようにして算出される許容距離は、あるPOI情報が示すPOI(例えば施設等)の広さを反映した距離に関するパラメータであるといえる。具体的には、比較的広い領域(敷地)を有するPOI(例えば大型のテーマパーク及びショッピングモール等)については、当該POIに関する複数の投稿情報の投稿位置のばらつきが大きくなる傾向があり、上述のように算出される許容距離は大きくなる傾向がある。一方、比較的狭い領域(敷地)を有するPOIについては、当該POIに関する複数の投稿情報の投稿位置のばらつきが小さくなる傾向があり、上述のように算出される許容距離は小さくなる傾向がある。
判定部15は、比較対象ペア(第1POI情報及び第2POI情報)の同一性(同一のPOIを示すか否か)を判定する。具体的には、判定部15は、第1POI情報のPOI位置(図3における緯度A及び経度A)と、第2POI情報のPOI位置(図3における緯度B及び経度B)と、第1POI情報及び第2POI情報についてパラメータ決定部14により算出された許容距離とに基づいて、第1POI情報に含まれる第1名称(図3における名称A)により特定されるPOIと第2POI情報に含まれる第2名称(図3における名称B)により特定されるPOIとが同一のPOIであるか否かを判定する。以下、判定部15による判定手順の一例について説明する。
判定部15は、第1POI情報の名称Aと第2POI情報の名称Bとの最長共通部分列比lcsrを算出する。まず、判定部15は、名称Aと名称Bとの最長共通部分列を抽出する。共通部分列とは、2つの文字列において、互いに同じ要素が連続して出現する部分列である。最長共通部分列とは、取り得る共通部分列のうち、最も長い(最も文字数が多い)部分列である。2つの文字列X,Yの最長共通部分列比lcsrは、下記(式2)に示されるように、2つの文字列X,Yの最長共通部分列の長さ(文字数)である最長共通部分列長(LLCS:Length of Longest Common Subsequence)を、2つの文字列X,Yのうち長い方の文字列の文字列長(文字数)で除算した値である。
(式2):lcsr=LLCS(X,Y)/max(L(X),L(Y))
ここで、L(X)は文字列Xの文字列長を表す。max(x,y)はxとyの大きい方の値を表す。
具体例として、一方の文字列Xが「XX寿司YYYモール戸塚店」であり、他方の文字列Yが「YYYモール戸塚店」である場合について考える。この場合、文字列Xと文字列Yとの最長共通部分列は「YYYモール戸塚店」であり、LLCS(X,Y)は9である。また、L(X)は13であり、L(Y)は9であるため、max(L(X),L(Y))は13である。したがって、この例では、lcsrは0.692(=9/13)となる。
また、判定部15は、第1POI情報のPOI位置(第1位置情報)及び第2POI情報のPOI位置(第2位置情報)に基づいて、当該POI位置同士の距離であるPOI間距離poi_distを算出する。判定部15は、上述した(式1)と同様の計算を実行することにより、POI間距離poi_distを算出できる。
判定部15は、上述のように算出した最長共通部分列比lcsr及びPOI間距離poi_distを比較対象ペア管理テーブル(図3参照)に格納された比較対象ペアに関連付ける。これにより、図9に示されるように「poi_dist」列及び「lcsr」列の情報が付加された比較対象ペア管理テーブルが得られる。なお、図9においては、第1位置情報(緯度A及び経度A)及び第2位置情報(緯度B及び経度B)の項目の図示を省略している。
ここで、POI間距離poi_distが小さく、且つ、名称Aと名称Bとが同一である又は類似する場合、第1POI情報と第2POI情報とが同一のPOIを示す可能性が高い。すなわち、名称Aにより特定されるPOIと名称Bにより特定されるPOIとが同一のPOIである可能性が高い。そこで、判定部15は、例えば下記のように予め定められた判定条件を満たす場合に、第1POI情報と第2POI情報とが同一のPOIを示すと判定してもよい。ここで、min(x,y)はxとyの小さい方の値を表す。また、t1は第1POI情報に関連付けられる許容距離を表し、t2は第2POI情報に関連付けられる許容距離を表す。
(判定条件)
・lcsr≧0.8
・poi_dist≦Δd
・Δd=min(t1,t2)
上述した通り、許容距離は、POIの広さを反映した値であり、比較的広い領域を有するPOI程大きい値となる傾向がある。したがって、許容距離に基づく閾値Δd(本実施形態では一例として、第1POI情報に関連付けられる許容距離と第2POI情報に関連付けられる許容距離との小さい方)を用いてPOI間距離についての判定を行うことにより、各POIの広さに応じて適切に設定された閾値Δdを用いた判定を行うことができる。
以下、図9を参照して、判定部15による具体的な判定の例について説明する。なお、図9の比較対象ペア管理テーブルにおける1行目の比較対象ペア(以下「第1比較対象ペア」ともいう)は同一のPOIを示しており、2行目の比較対象ペア(以下「第2比較対象ペア」ともいう)は互いに異なるPOIを示しており、3行目の比較対象ペア(以下「第3比較対象ペア」ともいう)も同一のPOIを示しているものとする。
まず、第1比較対象ペアの判定について説明する。図8に示されるように、POI情報IDが「Poi_A001」であるPOI情報の許容距離t1は80mであり、POI情報IDが「Poi_B001」であるPOI情報の許容距離t2は125mである。このため、当該2つのPOI情報同士の同一性判定においては、上記判定条件の閾値Δdは80mとなる。そして、図9に示されるように、第1比較対象ペアのPOI間距離poi_distは56.81mであり、「poi_dist≦Δd」を満たす。また、第1比較対象ペアの最長共通部分列比lcsrは0.800であり、「lcsr≧0.8」も満たす。したがって、判定部15は、第1比較対象ペアは同一のPOIを示すと判定し、そのことを示す同一フラグ「1」を第1比較対象ペアに付加する。
次に、第2比較対象ペアの判定について説明する。図8に示されるように、POI情報IDが「Poi_A001」であるPOI情報の許容距離t1は80mであり、POI情報IDが「Poi_B002」であるPOI情報の許容距離t2は550mである。このため、当該2つのPOI情報同士の同一性判定においては、上記判定条件の閾値Δdは80mとなる。そして、図9に示されるように、第2比較対象ペアのPOI間距離poi_distは88.50mであり、「poi_dist≦Δd」を満たさない。したがって、判定部15は、第2比較対象ペアは同一のPOIを示さないと判定し、そのことを示す同一フラグ「0」を第2比較対象ペアに付加する。
次に、第3比較対象ペアの判定について説明する。図8に示されるように、POI情報IDが「Poi_A002」であるPOI情報の許容距離t1は770mであり、POI情報IDが「Poi_B003」であるPOI情報の許容距離t2は825mである。このため、当該2つのPOI情報同士の同一性判定においては、上記判定条件の閾値Δdは770mとなる。そして、図9に示されるように、第3比較対象ペアのPOI間距離poi_distは350.00mであり、「poi_dist≦Δd」を満たす。また、第3比較対象ペアの最長共通部分列比lcsrは1.000であり、「lcsr≧0.8」も満たす。したがって、判定部15は、第3比較対象ペアは同一のPOIを示すと判定し、そのことを示す同一フラグ「1」を第3比較対象ペアに付加する。
ここで、第3比較対象ペアの判定において、仮に第1比較対象ペアの判定と同一の閾値Δd(80m)を用いた場合には、「poi_dist≦Δd」を満たさないため、第3比較対象ペアは同一のPOIを示すと判定されない。すなわち、実際には同一のPOIを示す比較対象ペアを同一のPOIを示すと判定できない判定漏れが生じてしまう。また、第2比較対象ペアの判定において、仮に第3比較対象ペアの判定と同一の閾値Δd(770m)を用いた場合には、「poi_dist≦Δd」を満たすため、第2比較対象ペアは同一のPOIを示すと判定されてしまう。すなわち、実際には同一のPOIを示さない比較対象ペアを誤って同一のPOIを示すと判定してしまう誤判定が生じてしまう。
一方、本実施形態のように閾値Δdが判定対象のPOI情報に応じて動的に決定される構成によれば、閾値Δdが判定対象のPOIの広さを反映した値となる。その結果、上述したように、第2比較対象ペアが同一のPOIを示さないと正しく判定されると共に、第3比較対象ペアが同一のPOIを示すと正しく判定される。
なお、上述した閾値Δdは一例であり、閾値Δdは、例えば第1POI情報に関連付けられる許容距離t1と第2POI情報に関連付けられる許容距離t2との大きい方(以下「max(t1,t2)」)又は平均値等であってもよい。また、閾値Δdが小さい程、POI間距離に関する条件(poi_dist≦Δd)が厳しくなるため、第1POI情報と第2POI情報とが同一のPOIを示すと判定され難くなる。このため、閾値Δdを小さくすることにより、実際には同一のPOIを示さないPOI情報のペアを誤って同一のPOIを示すと判定すること(誤判定)を抑制し得る。その一方で、閾値Δdを小さくした場合には、判定漏れが生じ易くなり、実際には同一のPOIを示すPOI情報のペアを適切に判定できない確率が高くなる。したがって、誤判定を抑制することを重視する場合には、上述のように「Δd=min(t1,t2)」により算出される閾値Δdを用いてもよい。一方、判定漏れを抑制することを重視する場合には、「Δd=max(t1,t2)」により算出される閾値Δdを用いてもよい。このように、閾値Δdの算出方法は、判定の目的に応じて適宜使い分けられてもよい。例えば、閾値Δdの算出方法は、オペレータ等の操作によって切り替え可能であってもよい。
また、判定部15は、公知の機械学習によって予め生成された判定モデルを用いて上記判定を行ってもよい。このような判定モデルは、例えば、同一のPOIを示すか否かが判明しているPOI情報同士のペアを学習データとして用いた機械学習を実行することにより生成される。判定モデルは、例えば、説明変数としてPOI間距離(poi_dist)、最長共通部分列比(lcsr)、閾値Δdを入力し、目的変数として同一のPOIを示すか否か(例えば同一のPOIを示す場合には「1」、同一のPOIを示さない場合には「0」を取る変数)を出力するモデルである。
次に、図10に示されるフローチャートを参照して、サーバ10の動作を説明する。
ステップS11において、POI情報取得部12は、比較対象ペア(第1POI情報及び第2POI情報)を取得する。本実施形態では、POI情報取得部12は、POI情報管理テーブル(図2参照)に格納された複数のPOI情報のうちから任意の2つのPOI情報を抽出することで得られる全ての組み合わせに対応する比較対象ペアを取得する。POI情報取得部12により取得された比較対象ペアは、比較対象ペア管理テーブル(図3)に格納される。
ステップS12において、投稿情報取得部13は、POI情報管理テーブルに格納された各POI情報が示すPOI(すなわち、各POI情報に含まれる名称により特定されるPOI)を示す情報(本実施形態では、当該POIの名称と一致する形態素を含む投稿テキスト)と投稿位置を示す投稿位置情報とを含む投稿情報を取得する。ある比較対象ペア(第1POI情報及び第2POI情報)に着目した場合、投稿情報取得部13は、第1POI情報のPOI位置(第1位置情報)と投稿位置との距離distと、閾値(例えば1000m)との比較に基づいて、取得対象となる第1投稿情報(すなわち、第1POI情報に関連付けられる投稿情報)を決定し、当該第1投稿情報を取得する。同様に、投稿情報取得部13は、第2POI情報のPOI位置(第2位置情報)と投稿位置との距離distと、閾値(例えば1000m)との比較に基づいて、取得対象となる第2投稿情報(すなわち、第2POI情報に関連付けられる投稿情報)を決定し、当該第2投稿情報を取得する。
ステップS13において、パラメータ決定部14は、第1POI情報のPOI位置(第1位置情報)と当該第1POI情報に関連付けられた投稿情報(第1投稿情報)の投稿位置との距離distに基づいて、第1POI情報に関連付けられる許容距離t1を決定する。同様に、パラメータ決定部14は、第2POI情報のPOI位置(第2位置情報)と当該第2POI情報に関連付けられた投稿情報(第2投稿情報)の投稿位置との距離distに基づいて、第2POI情報に関連付けられる許容距離t2を決定する。
ステップS14において、判定部15は、上述したような判定手順により、第1POI情報及び第2POI情報が同一のPOIを示すか否かを判定する。すなわち、判定部15は、第1POI情報のPOI位置(図3における緯度A及び経度A)と、第2POI情報のPOI位置(図3における緯度B及び経度B)と、第1POI情報及び第2POI情報についてパラメータ決定部14により算出された許容距離t1,t2とに基づいて、第1POI情報に含まれる第1名称(図3における名称A)により特定されるPOIと第2POI情報に含まれる第2名称(図3における名称B)により特定されるPOIとが同一のPOIであるか否かを判定する。より具体的には、判定部15は、許容距離t1,t2に基づいて決定される閾値Δdを用いて、上記判定を実行する。その後、判定部15は、反手結果を所定の態様で出力する。本実施形態では、図9に示されるように、判定部15は、判定結果を示す同一フラグを比較対象ペア(第1POI情報及び第2POI情報)に付加することにより、判定結果を出力する。
以上述べたサーバ10では、第1名称により特定されるPOIに関する投稿情報(第1投稿情報)の投稿位置情報に基づいて、第1POI情報に関連付けられ、第1名称により特定されるPOIの広さを反映した許容距離t1(パラメータ)を決定できる。そして、第1POI情報及び第2POI情報の位置座標(第1位置情報及び第2位置情報)と共にこのように決定された許容距離t1に基づいて、第1POI情報と第2POI情報との同一性が判定される。本実施形態では、上述した判定条件「poi_dist≦Δd」に基づく判定が実行される。したがって、第1名称により特定されるPOIの広さを考慮して同一性(同一のPOIを示すか否か)を判定することが可能となる。その結果、サーバ10によれば、POI情報同士の同一性の判定精度を向上させることができる。より具体的には、上述のようにPOI情報と投稿情報とに基づいて動的に決定される許容距離t1を用いて閾値Δdを動的に決定することにより、固定の閾値を用いる場合と比較して、POI情報同士の同一性をより精度良く判定することが可能となる。
また、判定部15は、第1位置情報と第2位置情報とに基づいて第1名称により特定されるPOIと第2名称により特定されるPOIとのPOI間距離poi_distを算出し、当該POI間距離poi_distと許容距離t1に基づく閾値Δdとの比較に基づいて、第1名称により特定されるPOIと第2名称により特定されるPOIとが同一のPOIであるか否かを判定する。本実施形態では、判定部15は、「poi_dist≦Δd」を満たすか否かに基づく判定を実行する。この構成によれば、POI間距離と判定対象となるPOI情報に関連付けられた許容距離t1に基づく閾値Δdとの比較に基づいて、POI情報同士の同一性を精度良く判定することが可能となる。
また、投稿情報取得部13は、第1位置情報が示す位置座標と投稿位置情報が示す位置座標との距離distと、予め定められた閾値(上記例では1000m)との比較に基づいて、取得対象となる第1投稿情報を決定し、取得対象として決定された第1投稿情報を取得する。この構成によれば、第1POI情報が示すPOIを訪問している最中のユーザが投稿した可能性の高い投稿情報を、第1投稿情報として適切に抽出できる。その結果、第1POI情報が示すPOIの広さを反映した許容距離t1を適切に決定できる。
また、パラメータ決定部は、第1位置情報が示す位置座標と第1投稿情報の投稿位置情報が示す位置座標との距離distに基づいて、第1POI情報に関連付けられる許容距離t1を決定する。このような構成(例えば上述した第1〜第3の例に示した手順で許容距離t1を決定する構成)によれば、第1POI情報が示すPOIの広さを反映した許容距離t1を適切に決定できる。
また、投稿情報取得部13は、一以上の投稿情報のうち第2名称により特定されるPOIを示す情報を含む一以上の第2投稿情報を更に取得する。パラメータ決定部14は、投稿情報取得部13により取得された第2投稿情報の投稿位置情報に基づいて、第2POI情報に関連付けられる許容距離t2を更に決定する。判定部15は、第2POI情報に関連付けられる許容距離t2に更に基づいて、第1名称により特定されるPOIと第2名称により特定されるPOIとが同一のPOIであるか否かを判定する。例えば、上述した実施形態では、サーバ10は、互いに比較対象となる一方のPOI情報(第1POI情報)の許容距離t1を算出するだけでなく、他方のPOI情報(第2POI情報)の許容距離t2も算出し、当該2つのPOI情報の許容距離t1,t2に基づいて閾値Δdを決定し、当該閾値Δdを用いてPOI間距離poi_distに関する判定を実行する。このように、互いに比較対象となる2つのPOI情報の両方について算出された許容距離t1,t2に基づいて決定される閾値Δdを用いた判定を実行することにより、POI情報同士の同一性をより精度良く判定することが可能となる。
なお、本発明は上記実施形態に限定されない。例えば、上記実施形態は、判定部15が複数の比較対象ペアについて判定することを前提としている。このため、上記実施形態では、POI情報取得部12、投稿情報取得部13、及びパラメータ決定部14は、複数の比較対象ペアに含まれる全てのPOI情報に対する処理をまとめて実行する構成について説明した。しかし、判定部15が特定の1つの比較対象ペアの判定のみを実行する場合には、POI情報取得部12は、当該比較対象ペアに含まれる2つのPOI情報のみを取得してもよい。そして、投稿情報取得部13は、当該2つのPOI情報に関連付けられる投稿情報のみを取得してもよく、パラメータ決定部14は、当該2つのPOI情報に関連付けられる許容距離のみを決定してもよい。
また、比較対象ペアに含まれる一方のPOI情報(第1POI情報)のみについて許容距離t1が決定されてもよい。すなわち、投稿情報取得部13及びパラメータ決定部14は、第1POI情報のみについて上述した処理(投稿情報の関連付け及び許容距離t1の決定)を実行してもよい。この場合、判定部15は、一方のPOI情報について決定された許容距離t1をそのまま閾値Δdとして用いて、上述した判定(判定条件に基づくルールベースの判定、又は判定モデルに基づく判定)を実行してもよい。
また、パラメータ決定部14は、POI情報に関連付けられる投稿情報(図6の関連付けテーブルにおいて当該POI情報に関連付けられた投稿情報)の投稿位置のみに基づいて、当該POI情報に関連付けられる許容距離を決定してもよい。例えば、あるPOI情報に関連付けられる投稿情報の投稿位置のばらつきは、当該POI情報が示すPOIの広さに応じた値になると考えられる。投稿位置のばらつきは、特に限定されないが、例えば、あるPOI情報に関連付けられる70%以上の投稿情報の投稿位置が含まれる最小の円形領域の半径等によって表現され得る。そこで、パラメータ決定部14は、例えば、このような投稿位置のばらつきを示す数値を許容距離として決定してもよいし、当該数値に対して予め定められた計算(例えば予め定められた係数の乗算)をすることで得られる値を許容距離として決定してもよい。
また、判定部15は、上述した判定条件とは異なる判定条件を用いてPOI情報同士の同一性を判定してもよい。例えば、各POI情報に、上述したカテゴリ情報が関連付けられている場合、判定部15は、カテゴリ情報同士の比較(例えばカテゴリ情報によって示されるカテゴリが同一である又は類似するか否か)にも基づいて、POI情報同士の同一性を判定してもよい。
また、投稿情報に含まれる「POIを示す情報」は、当該POIの名称(文字列)を含む投稿テキスト以外の情報であってもよい。例えば、POIを示す情報は、公知の画像認識技術によって当該POIを示すと特定され得る画像データであってもよい。或いは、POIを示す情報は、公知の音声認識技術によって当該POIを示すと特定され得る音声データであってもよい。
なお、上記実施形態の説明に用いたブロック図は、機能単位のブロックを示している。これらの機能ブロック(構成部)は、ハードウェア及び/又はソフトウェアの任意の組み合わせによって実現される。また、各機能ブロックの実現手段は特に限定されない。すなわち、各機能ブロックは、物理的及び/又は論理的に結合した1つの装置により実現されてもよいし、物理的及び/又は論理的に分離した2つ以上の装置を直接的及び/又は間接的に(例えば、有線及び/又は無線で)接続し、これら複数の装置により実現されてもよい。
例えば、上記実施形態におけるサーバ10は、上記実施形態のサーバ10の処理を行うコンピュータとして機能してもよい。図11は、本実施形態に係るサーバ10のハードウェア構成の一例を示す図である。上述のサーバ10は、物理的には、プロセッサ1001、メモリ1002、ストレージ1003、通信装置1004、入力装置1005、出力装置1006、及びバス1007等を含むコンピュータ装置として構成されてもよい。
なお、以下の説明では、「装置」という文言は、回路、デバイス、ユニット等に読み替えてもよい。サーバ10のハードウェア構成は、図11に示された各装置を1つ又は複数含むように構成されてもよいし、一部の装置を含まずに構成されてもよい。
サーバ10における各機能は、プロセッサ1001、メモリ1002等のハードウェア上に所定のソフトウェア(プログラム)を読み込ませることで、プロセッサ1001が演算を行い、通信装置1004による通信、メモリ1002及びストレージ1003におけるデータの読み出し及び/又は書き込みを制御することで実現される。
プロセッサ1001は、例えば、オペレーティングシステムを動作させてコンピュータ全体を制御する。プロセッサ1001は、周辺装置とのインターフェース、制御装置、演算装置、レジスタ等を含む中央処理装置(CPU:Central Processing Unit)で構成されてもよい。
また、プロセッサ1001は、プログラム(プログラムコード)、ソフトウェアモジュール、及び/又はデータを、ストレージ1003及び/又は通信装置1004からメモリ1002に読み出し、これらに従って各種の処理を実行する。プログラムとしては、上述の実施の形態で説明した動作の少なくとも一部をコンピュータに実行させるプログラムが用いられる。例えば、サーバ10の判定部15は、メモリ1002に格納され、プロセッサ1001で動作する制御プログラムによって実現されてもよく、図1に示した他の機能ブロックについても同様に実現されてもよい。上述の各種処理は、1つのプロセッサ1001で実行される旨を説明してきたが、2以上のプロセッサ1001により同時又は逐次に実行されてもよい。プロセッサ1001は、1以上のチップで実装されてもよい。なお、プログラムは、電気通信回線を介してネットワークから送信されてもよい。
メモリ1002は、コンピュータ読み取り可能な記録媒体であり、例えば、ROM(Read Only Memory)、EPROM(Erasable Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、RAM(Random Access Memory)等の少なくとも1つで構成されてもよい。メモリ1002は、レジスタ、キャッシュ、メインメモリ(主記憶装置)等と呼ばれてもよい。メモリ1002は、上記実施形態に係る情報処理方法(図10のフローチャートに示される手順等)を実施するために実行可能なプログラム(プログラムコード)、ソフトウェアモジュール等を保存できる。
ストレージ1003は、コンピュータ読み取り可能な記録媒体であり、例えば、CD−ROM(Compact Disc ROM)等の光ディスク、ハードディスクドライブ、フレキシブルディスク、光磁気ディスク(例えば、コンパクトディスク、デジタル多用途ディスク、Blu−ray(登録商標)ディスク)、スマートカード、フラッシュメモリ(例えば、カード、スティック、キードライブ)、フロッピー(登録商標)ディスク、磁気ストリップ等の少なくとも1つで構成されてもよい。ストレージ1003は、補助記憶装置と呼ばれてもよい。上述の記憶媒体は、例えば、メモリ1002及び/又はストレージ1003を含むデータベース、サーバ、その他の適切な媒体であってもよい。
通信装置1004は、有線及び/又は無線ネットワークを介してコンピュータ間の通信を行うためのハードウェア(送受信デバイス)であり、例えばネットワークデバイス、ネットワークコントローラ、ネットワークカード、通信モジュール等ともいう。
入力装置1005は、外部からの入力を受け付ける入力デバイス(例えば、キーボード、マウス、マイクロフォン、スイッチ、ボタン、センサ等)である。出力装置1006は、外部への出力を実施する出力デバイス(例えば、ディスプレイ、スピーカー、LEDランプ等)である。なお、入力装置1005及び出力装置1006は、一体となった構成(例えば、タッチパネル)であってもよい。
また、プロセッサ1001及びメモリ1002等の各装置は、情報を通信するためのバス1007で接続される。バス1007は、単一のバスで構成されてもよいし、装置間で異なるバスで構成されてもよい。
また、サーバ10は、マイクロプロセッサ、デジタル信号プロセッサ(DSP:Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)、FPGA(Field Programmable Gate Array)等のハードウェアを含んで構成されてもよく、当該ハードウェアにより、各機能ブロックの一部又は全てが実現されてもよい。例えば、プロセッサ1001は、これらのハードウェアの少なくとも1つで実装されてもよい。
以上、本発明について詳細に説明したが、当業者にとっては、本発明が本明細書中に説明した実施形態に限定されるものではないということは明らかである。本発明は、特許請求の範囲の記載により定まる本発明の趣旨及び範囲を逸脱することなく修正及び変更された態様として実施することができる。したがって、本明細書の記載は、例示説明を目的とするものであり、本発明に対して何ら制限的な意味を有するものではない。
本明細書で説明した各態様/実施形態の処理手順、フローチャート等は、矛盾の無い限り、順序を入れ替えてもよい。例えば、本明細書で説明した方法については、例示的な順序で様々なステップの要素を提示しており、提示した特定の順序に限定されない。
入出力された情報等は特定の場所(例えば、メモリ)に保存されてもよいし、管理テーブルで管理されてもよい。入出力される情報等は、上書き、更新、又は追記され得る。出力された情報等は削除されてもよい。入力された情報等は他の装置へ送信されてもよい。
判定は、1ビットで表される値(0か1か)によって行われてもよいし、真偽値(Boolean:true又はfalse)によって行われてもよいし、数値の比較(例えば、所定の値との比較)によって行われてもよい。
本明細書で説明した各態様/実施形態は単独で用いられてもよいし、組み合わせて用いられてもよいし、実行に伴って切り替えて用いられてもよい。また、所定の情報の通知(例えば、「Xであること」の通知)は、明示的に行うものに限られず、暗黙的(例えば、当該所定の情報の通知を行わない)によって行われてもよい。
ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語と呼ばれるか、他の名称で呼ばれるかを問わず、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能ファイル、実行スレッド、手順、機能等を意味するよう広く解釈されるべきである。
また、ソフトウェア、命令等は、伝送媒体を介して送受信されてもよい。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア及びデジタル加入者回線(DSL)等の有線技術及び/又は赤外線、無線及びマイクロ波等の無線技術を使用してウェブサイト、サーバ、又は他のリモートソースから送信される場合、これらの有線技術及び/又は無線技術は、伝送媒体の定義内に含まれる。
本明細書で説明した情報及び信号等は、様々な異なる技術のいずれかを使用して表されてもよい。例えば、上記の説明全体に渡って言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、チップ等は、電圧、電流、電磁波、磁界若しくは磁性粒子、光場若しくは光子、又はこれらの任意の組み合わせによって表されてもよい。
なお、本明細書で説明した用語及び/又は本明細書の理解に必要な用語については、同一の又は類似する意味を有する用語と置き換えてもよい。
本明細書で使用する「システム」及び「ネットワーク」という用語は、互換的に使用される。
また、本明細書で説明した情報、パラメータ等は、絶対値で表されてもよいし、所定の値からの相対値で表されてもよいし、対応する別の情報で表されてもよい。
上述したパラメータに使用される名称はいかなる点においても限定的なものではない。さらに、これらのパラメータを使用する数式等は、本明細書で明示的に開示したものと異なる場合もある。
本明細書で使用する「決定(determining)」という用語は、多種多様な動作を包含する場合がある。「決定」は、例えば、計算(calculating)、算出(computing)、処理(processing)、導出(deriving)、調査(investigating)、探索(looking up)(例えば、テーブル、データベースまたは別のデータ構造での探索)、確認(ascertaining)した事を「決定」したとみなす事などを含み得る。また、「決定」は、受信(receiving)(例えば、情報を受信すること)、送信(transmitting)(例えば、情報を送信すること)、入力(input)、出力(output)、アクセス(accessing)(例えば、メモリ中のデータにアクセスすること)した事を「決定」したとみなす事などを含み得る。また、「決定」は、解決(resolving)、選択(selecting)、選定(choosing)、確立(establishing)、比較(comparing)などした事を「決定」したとみなす事を含み得る。つまり、「決定」は、何らかの動作を「決定」したとみなす事を含み得る。
本明細書で使用する「に基づいて」という記載は、別段に明記されていない限り、「のみに基づいて」を意味しない。言い換えれば、「に基づいて」という記載は、「のみに基づいて」と「に少なくとも基づいて」との両方を意味する。
本明細書で使用する「第1の」、「第2の」等の呼称を使用した要素へのいかなる参照も、それらの要素の量又は順序を全般的に限定するものではない。これらの呼称は、2つ以上の要素間を区別する便利な方法として本明細書で使用され得る。したがって、第1及び第2の要素への参照は、2つの要素のみがそこで採用され得ること、又は何らかの形で第1の要素が第2の要素に先行しなければならないことを意味しない。
「含む(including)」、「含んでいる(including)」、及びそれらの変形が、本明細書あるいは特許請求の範囲で使用されている限り、これら用語は、用語「備える」と同様に、包括的であることが意図される。さらに、本明細書あるいは特許請求の範囲において使用されている用語「又は(or)」は、排他的論理和ではないことが意図される。
本明細書において、文脈又は技術的に明らかに1つのみしか存在しない装置であることが示されていなければ、複数の装置をも含むものとする。
本開示の全体において、文脈から明らかに単数を示したものではなければ、複数のものを含むものとする。