Web サービスを実装するとしたら内山将夫@NICT
mutiyama@nict.go.jp

1これまでに紹介したことで Web サービスを実装するとしたらどうするか• Google suggest• きざしランキング• 推薦サービス
念のための注意：ここで実装例として考えるのは，上記のサービ スの実際の実装とは，全く関係なく，それと似た機能を実現するために必要そうなことを述べるだけである．なお，推薦サービ スに関する記述の一部では，以下を参考にしている．Linden, G. Smith, B. York,J. (2003) Amazon.com recommendations: item-to-item collaborative filtering. IEEE Internet Computing, Volume: 7,
Issue: 1, pp.. 76–80

2

Google suggest
検索語を入れると，それを拡張するような検索語句のリストを返す．ユーザーは，リストの１つを選択するか，あるいは，何も選択しない．
例• bass– bass guitar– bass fishing• prog
– programming– programming languages– progesterone– progressive• duke– duke university– dukes of hazzard– duke nukem– duke ellington– duke power3

パーセプト ロンによる定式化• ユーザー入力を x• Gen(x) = x の拡張候補• 教師信号 y = ユーザーの選択結果• システムが候補 ŷ に与えるスコア w · Φ(x, ŷ)• 一位の候補と y が異なるときに w を更新する．
残りの問題• Φ(ユーザー入力, 検索候補) = 検索候補のベクトル表現• Gen(ユーザー入力) = 検索候補リスト
をど う設定するか．

4

Gen(x) の獲得
簡単な方法としては，これまでに入力された検索語をトライ構造に保持しておく，そして，ユーザーが入力した検索語に応じて，トライ構造を下に辿る．辿れるだけ辿ったところの下にある検索語のリストを Gen(x)とする．

5

Φ(x, y) をどう設定するか
x はユーザー入力で，y は拡張語である．Φ(x, y) は，少なくとも次の 2 つの要素を持つ．
• x と y の関連の強さ• y により検索されるページの人気度

6

x と y の関連の強さ
簡単な場合として，x = u, y = uv で，u と v が単語のときを考える．すると，u と v の共起強度として，検索ログにおける統計量を利用できるだろう．

v v 以外uaba+bu 以外 cdc+da+c b+dn
a = 「 uv 」を含む検索語の数
b = u を含む検索語の数 - ac = v を含む検索語の数 - ad = 全検索語の数 - a - b - cn = 全検索語の数
上記の共起テーブルにおける共起強度として，例えば，対数尤度比を利用する．

7

y により検索されるページの人気度• ページランクなどを利用できるだろう

8まとめ
以上より，Φ(x, y) = [対数尤度比，人気度]とベクトル表現を定義することが考えられる．
検索語の拡張 y のスコアは，w1対数尤度比 + w2人気度であり，w1 と w2 は，パーセプトロンアルゴ リズムを適用して，学習できる．
実際に，パーセプトロンのような学習ベースの方法で，上手く検索拡張語を suggest できるかは，不明である．
恐らく，これだけだと，検索リストには，似たものだけが集まってしまうことが考えられる．それは，推薦リストの全体としての多様性などを考えていないからである．推薦リストに載せるものとしては，大きめの推薦リストをクラスタリングして，その各クラスタから，１つずつを推薦するということも考えられる．

9

2008/2/6 の kizasi.jp より
きざしランキングでは，今日の話題の言葉と，その言葉の関連語を提示しているようである．

• E259 系– 成田エクスプレス– 新型車両– 253 系– 秋– JR 東日本• スーパーチューズデ イ– アメリカ– 民主党– メガチューズデ イ– 大統領– 注目– オバマ10

今日の話題の言葉をとる
今日のブログ 今日以外のブログ
単語 waba+bw 以外
cdc+da+cb+dna = w を含む今日のブログのエントリ数
b = w を含む全ブログのエントリ数 - ac = 今日のブログのエントリ数 - ad = 全ブログのエントリ数 - a - b - cn = 全ブログのエントリ数
このテーブルについて，対数尤度比をとると，もし，wが今日のブログに，特によく出現している場合には，その値は高くなる．

11

話題の言葉 u に関連する単語 v をとる
v v 以外uaba+bu 以外 cdc+da+c b+dna = u と v を含むブログのエントリ数
b = u を含むブログのエントリ数 - ac = v を含むブログのエントリ数 - a
d = 全ブログのエントリ数 - a - b - c
n = 全ブログのエントリ数
このテーブルについて，対数尤度比をとると，もし，vが u と共起していることが多ければ ，その値は高くなる．

12ここまでのまとめ• 言葉と言葉の共起の強さは，案外と，実用に役立つ• 簡単な統計量でも，面白い．その理由は，言葉自体に面白い関係が内在するので，それを拾うことができれば，簡単な処理でも，面白いことができるからである．
• サービス = コンテンツ + アルゴ リズムという考えが成立するとすると，言葉は，コンテンツとして，非常に価値がある場合がある．そのため，アルゴ リズムは，複雑なものでなくても，サービスとしては，面白くなる．
ただし，サービスを実際に展開するには，応答速度など ，様々な解決すべき問題があるだろう．

13

推薦サービス「ぐ りとぐら」を買った人は，以下も買った．

• しろくまちゃんのほっとけーき• おおきなかぶ• はらぺこあおむし• ぐ りとぐらのえんそく• ぐ りとぐらのおきゃくさま「ぐ りとぐら 」を買った人のリストを (a,b,c) として，「しろくまちゃんのほっとけーき」を買った人のリストも (a,b,c) とする．そうすると，「ぐ りとぐら」と「しろくまちゃんのほっとけーき」は，それらを買った人が共通するので，「ぐ りとぐら」を買った人には，「しろくまちゃんのほっとけーき」も推薦しよう．
問題• アイテム (本) をど う表現するか• アイテムの類似度をど う計算するか

14

アイテムの表現と類似度• アイテム xi = [xi1, xi2, ..., xin]


1 もしアイテム i を顧客 j が買ったら
 0 上記以外

xij = つまり，アイテムを，それを買った人のリストで表現する• 類似度
xi · xjcos(xi, xj ) =||xi||||xj ||15

推薦の方法ア イテム x を 買った 人には ，DB 中のア イテム y をcos(x, y) により，スコア付けし，その上位を提示する．
アイテム x1, x2, ... を買った人には，DB 中のアイテム yをXcos(xi, y)iによりスコア付けし，その上位を提示する．

16

アイテムの類似度に基づく推薦の利点
オフラインで類似度を計算することができる．

for xi ∈ アイテムのリスト
for 顧客 ∈ xi
for xj ∈ 顧客が買ったアイテムリスト
内積 (xi, xj )+ = 1
により内積 xi · xj を計算でき，これを利用して，類似度cos(xi, xj ) をオフラインで計算できる．
手間の掛る計算をオフラインですることにより，サービスのときには，素早く応答できる．

17

パーセプト ロンによる実装• 顧客が買ったものを x• Gen(x) = 推薦候補リスト• 教師信号 y = ユーザーが買ったもの• システムが候補 ŷ に与えるスコア w · Φ(x, ŷ)• 一位の候補と y が異なるときに w を更新する．
• Φ(x, ŷ) = たとえば ，x と ŷ を共に買った人が 1 で，そうでない人が 0 のベクトル．
このような設定の下で，パーセプトロンによる学習をすることもできる．それで上手くいくかはわからない．

18

この推薦法の問題点など• 似たものばかりが上位にくることがある．
そのため，上位に来たものは，既に買っていたりする．その理由は，リストの個々の要素に独立にスコアを与えているから．
もっと，多様な推薦リストが望ましい場合もある．そのためには，個別のアイテムに独立にスコアを与えるのではなく，推薦リストにまとめてスコアを与えて，良い推薦リストを得る必要がある．

• 推薦するものとして，なるべく，もうかるものを推薦するということも考えられる．そうした場合には，買う確率はある程度低くとも，高価なものを推薦するとかも考えられる．

19

課題• 適当な Web サービスを自分で実装するとしたら，どうするかを考える• まだ存在しない，面白いサービスを考えてみる

20

まとめ
• 生活に密着した中で自然言語処理に関係する技術が使われるようになってきた．
• 自然言語は，コミュニケーションの基本要素の１つであるので，これは，当然であろう．
• 自然言語処理は，今後，ますます，使われるようになると思われる．

21