ブログではないです

ブログでなくはないです

Learning to Compute Word Embeddings on the Fly [Bahdanau+, arXiv'17]

https://arxiv.org/abs/1706.00286

概要

Bahdanauの新作。従来の統計的テキスト処理では未知語はUNKトークンに変換された上で共通のものとして扱われるが、そこをWordNetの単語の定義文をエンコード(各単語ベクトルの平均 or LSTMの最終ステート)した補助ベクトルを加えて補うことで未知語についても意味が獲得できるよね、という話。QA (SQuAD), Entailment (SNLI), 言語モデルの3タスクで評価。

基本的な未知語処理のモデルは下図の通りで、それぞれのタスクのベースラインとなるモデルにおいて文をエンコードする際通常のLSTMなどの代わりにこのエンコーダを使うだけ。 また、本研究ではmulti-word expressionについては取り扱っていない。

補助ベクトルとして(1)定義文からなるベクトル表現を用いた場合 (2)定義文の代わりに単語の文字列情報を入れる (“word” という単語に “w o r d” という定義文を与える) 場合 (3)大規模な外部データで事前訓練したGLoVeを用いた場合 の3種類で比較。

f:id:jack_and_rozz:20170905164942p:plain:w400

QAについては[Xiong+ ICLR'17] のモデルがベース。コンテキスト文と質問文をそれぞれエンコードした後それらのベクトル表現をこねこねしてquestion-document representationと呼ばれるものを作り,そこから2つの出力層を使って回答スパンの開始と終了位置を求めるのだとか。 こねこねする部分が微妙に複雑でなんでこんな計算にしてるのか元論文読まないといまいち意図が把握できない。最近のQAこんなんばっかりだ。

f:id:jack_and_rozz:20170905201445p:plain:w300

結果は上の表の通り。devセットの評価では未知語について文字ベースでスペル情報を入れると大きく改善、肝心の辞書情報の方の寄与はやや低め。(ただtestセットでは逆転しているので1~3%程度ならこの精度帯だと誤差?) また、結局一番良いのはGLoVeを用いたときで、それすらも現時点でのSQuADの公式サイトのランキングを見るとまだまだ上位陣 (EM: ~78%)には及ばない。そもそもベースラインがしょぼい。QAでSOTAを取ることが目標というわけではないのだろうけど。
これらを全部同時にやった時の場合は実験しなかったのだろうか?まあまだarXiv版だからこれから色々追加実験するのかもしれない。 他のタスクについても性能向上への寄与は同じような感じ。

また、Future workとして (1) 定義文中の未知語はどうするのか? (2) cyclicな定義はどうするのか(右の反対が左、左の反対が右とか) を上げている。 前者については同様の処理を繰り返す(つまり定義文中の未知語についてもその定義文を用いる)ことが自然だと考えられるが、計算量やメモリの観点からそれを素直にやるのは辛そうだとのこと。この2つは上手いこと解決できたら面白いと思う。

感想

GLoVeによる初期化を"data-rich scenerios" と言っているが、低頻度語・未知語について定義文を得るのと大量のunlabeled dataを得るの、どちらが簡単かなあ? wordnetに定義として登録されてるレベルのちゃんとした表現はむしろ問題になる低頻度語・未知語ほど手に入りにくくなるんじゃないかとも思うので、新しめのエンティティについても 定義文らしいものが早期に記述されるであろうWikipediaのデータを用いた疑似定義文でも有効だよ、ということを実験したほうが良かったのでは。 *1

また、単語の定義文を使うといってもある単語に紐づく lexicon / synsetは複数あるためそこのWSDが必須になると思うのだがそこの処理についての詳しい記述が見当たらなかった気がする・・・?どうしているんだろう。

*1:と思ったらそれもfuture workにあった。データの作成が面倒だったとかそういう・・・?

cloze-style QA まとめ

cloze-style QAタスク(センター試験のような、文章を読んだ上でその文章に関するクエリのプレースホルダに正解の単語を埋める形式のQA) について読んだやつまとめ。(ある程度読んだら追加)

CNN/Daily Mail QA Dataset

Teaching Machines to Read and Comprehend [NIPS'15] で公開されたデータセット。 このデータセットの面白いところは構築時点でcontext, query共にそれぞれのエンティティが@entity0, @entity1, ... といった形で置換されており、 この処理によってエンティティに関する事前知識を持っていた場合に記事を読まずに質問に答えることを不可能にしている。*1 データサイズとしてはCNNが380K記事、Daily Mailが879K記事前後。

Teaching Machines to Read and Comprehend [Hermann+, NIPS'15]

タスク・データセットの提案に加えて簡単な頻度ベースの選択モデルやFrame-semantic model, Word distance modelといったベースラインとNNベースのモデルを比較。

NNベースでやる場合は回答候補単語 (@entity0 とかのトークン) a, 文書d, クエリqに対して { \displaystyle p(a | d,q) \propto exp(W(a) g(d, q)) } の形で確率を計算。 文書とクエリから構築したベクトルと回答候補aのベクトルの内積になっている。

{ \displaystyle g(d, q)) } の作り方については
(Deep LSTM Reader) : 文書とクエリを区切り文字を使ってくっつけて一気に読む
(Attentive Reader) : クエリベクトルuと,uを用いて文書の各単語にアテンションを掛けたベクトルrの重み付け和を取る
(Impatient Reader) : クエリが1単語読まれる度にその時点でのクエリベクトル{ \displaystyle y_q (i)} と前回の文書ベクトルr(i-1),文書の各単語を用いてアテンションを掛けてr(t) を計算し直す
などをやっている。AttentiveとImpatientには結果(Accuracy) の差はあまりなくニューラルにして5%, アテンションを掛けてもう5%向上といった感じ。

Dynamic Entity Representation with Max-pooling Improves Machine Reading [Kobayashi+, NAACL'16]

以前言語処理学会で見て面白いなあと思っていた研究。[Hermann+, NIPS'15] では文書・クエリのベクトル表現の話が中心で回答候補のベクトルについては特に何もしていなかったが(というよりそれがこのタスクの重要なところじゃないの?という気がするけど)、それに対して文書から動的に対象となるエンティティのベクトル表現を構築することがメインテーマ。

提案手法の工夫は大きく分けて3つ。 

  1. (dynamic entity representation) まずあるエンティティeについて、eが{ \displaystyle \tau}番目の単語として登場するコンテクスト文cをbidirectional LSTMによって読んだときのベクトル表現を { \displaystyle {\textbf d}_{e,c} = tanh(W_{hd} [  {\textbf  h}_{c,T}^{\rightarrow}, {\textbf  h}_{c,1}^{\leftarrow}, {\textbf  h}_{c,\tau}^{\rightarrow}, {\textbf  h}_{c,\tau}^{\leftarrow} ] + {\textbf b}_d) } と表現する事で文脈を伴うエンティティの表現ができる。

  2. (max-pooling) 次に、複数回登場するエンティティについては以前の文脈を踏まえて理解したいため2回目以降に再登場するエンティティについてはこれまでの文脈c'におけるベクトル表現を集めてmax-poolingを取ったもの { \displaystyle {\textbf x}_{c, \tau} = W_{dx} {max-pooling}_{c' \in c} ({\textbf d}_{e, c'}) + {\textbf b}_x } を入力する。

  3. (byway) そのようにしてそれぞれの文脈におけるエンティティのベクトル表現を構築した後、同じくbidirectional LSTMによってエンコードした質問文によってアテンションを掛けることで最終的な文書全体でのエンティティのベクトル表現 { \displaystyle {\textbf v}(e; D,q) } を構築する。またその際に、出力文と入力文のそれぞれの単語(列)が概ね対応している翻訳と違って質問応答では候補エンティティがそもそも正解でない場合、アテンションの重みの総和は1になるようになっているけどどこに注目すれば良いのさ?という問題が起きる。そのため候補エンティティ1単語だけの文を擬似的に追加して、「どれにも注目したくない場合」 のアテンション候補を作っている。(理解が合っているかちょっと自信ない。)*2

結果としては dybanuc entity representation だけだと [Hermann+'15] とほぼ変わらず(62.3%)、 max-pooling と bywayどちらかだけ入れると 8% (!) 上昇、両方入れると 10%ほど上昇(72.0%)。w2vによる初期化もすると 72.9%で、 [Hill+, ICLR'16]のsingle-modelによる結果(68.4%) を超えてNAACL'16 の時点でSOTA。

A Thorough Examination of the CNN/Daily Mail Reading Comprehension Task [Chen+, ACL'16]

Hermannらのモデルのちょっとした改良によるSOTAと、データセットの詳細な分析。結論としてはこのデータセット微妙じゃないか?というもの。

Hermannらの論文に対するモデルの変更点はアテンションを取る時に質問とパラグラフの一文の重み付け和を取ったもののtanhを用いていたのに対して, ChenらのNNベースのモデルでは{ \displaystyle softmax(\textbf q^{\mathrm T} \textbf W_{s} \textbf p_{i}) } のようにbilinear termを用いてアテンションを取っている。2つの文の関係の強さをモデリングするのに重み付け和を取るのは不自然な感じがあったのでこの変更には納得感。

重要なのがデータセットの分析で、全体から100問サンプリングして人手で分類したところほぼ質問文と同じ文がパラグラフ中に出現するのが13%,質問文の言い換えが41%と半分以上はかなり簡単に解け(ニューラルモデルだとそれぞれ100.0%, 95.1%の正解率), 共参照解析のエラーが8%, 回答に曖昧性があるものが17%と,計25%が回答困難な問題で,現状のニューラルモデルはほぼ理想的な精度(72.4 ~ 75.8%)を達成しているとの結論。この研究を境にこのデータセット使った研究があまり見られなくなってる・・・。

Children's Book Test

The Goldilocks Principle: Reading Children's Books with Explicit Memoy Representations [Hill+, ICLR'16]

Memory Networkを用いた手法の提案と、Children's book test (CBT)というCNN/Daily Mail と似たデータセットの作成についての話が中心。
データセットの違いは回答候補の表層がマスクされていない(言語についての事前知識を使うことを許している)点と、データセット作成時にCoreNLPによる品詞解析やNERなどを行って回答候補を数種類(Named Entity, Noun, Verb, Preposition) に分けて、回答候補のタイプを揃えていること。

Memory Networkによるモデルではいくつかのウィンドウパターンを使ったメモリのとり方や,メモリへのアテンションの仕方などを数種類試行。訓練時にハードアテンションを用いるのが効くとか。 Memory NetworkとHierarchical RNN + attentionを比べた時,文についての状態ベクトルを作るにあたって,窓幅を取って単語embeddingの重み付け和を取る(Memory Network)より RNNなりでエンコードするようが自然に思えることから正直個人的には後者のほうが好きなのだけれどどうして前者が比較的持て囃されているのだろう。 今回のタスクで1文中に回答候補が複数出現した時のように,1文中の別々の事柄について別なメモリとして持てる事が嬉しい場合が多い、ということなのだろうか。

*1:しかしデータを眺めた所各文書間である単語に対するエンティティのIDは共通だったので、厳密にはある一つの文書だけを読んでエンティティを理解しているわけではない(訓練データの他の文書も参考にしている)気がするがそれは良いんだろうか?

*2:"we make an artificial occurrence for each entity with no contexts, which serves as a byway to attend when no other occurrences can be reasonably related to the query." と書いてあったのでそういうことだと思うんだけど・・・

Towards an Automatic Turing Test: Learning to Evaluate Dialogue Responses [Lowe+, ACL'17]

http://aclanthology.coli.uni-saarland.de/pdf/P/P17/P17-1103.pdf

概要

学会中に発表聞きながら書いていたので短め。追記するかも。
How NOT to evaluate your dialogue system[Liu+, EMNLP'16] の著者の一人。 上記の論文中でBLEUなどの翻訳用のmetricやどちらの応答が良いか選ぶなどといった、現在の対話の自動評価手法が人間の人手評価との相関が無いことを検証していた。 結論としては人手評価のデータ (応答への1-5のスコアなど) を集め、それを用いて評価用のモデルを学習することが信頼性を担保しつつ、対話モデルの評価を低コストに行う手法であるとの事。そして今回は汎用ドメインTwitter)のデータを用いて実際にそれをやってみたよ、という話。面白かった。

f:id:jack_and_rozz:20170805074228p:plain:w400

Learning to generate one-sentence biographies from Wikidata [Chisholm+, EACL'17]

https://aclweb.org/anthology/E17-1060

概要

Wikipediaは多くの場合その記事に対応するWikidata item (他エンティティとの関係ラベルやある属性の値などの知識グラフ) を持つことを利用して、 ある人物についてWikidataから値を抽出したテンプレート (“TITLE mathias tuomi SEX OR GENDER male DATE OF BIRTH 1985-09-03 …”) からWikipediaの該当記事の第一文目を生成するタスク(Biography generation)。自分の研究でWikipedia/Wikidataを使ってみようかと思っているので参考に。

提案手法はアテンションを用いたseq2seqに,出力文を用いてもう一度入力文を復元するループ構造を加える事で入力文を復元できるだけの情報を出力文が持つように制約をかけたautoencoder的なseq2seq。 どこかで見たことあるような・・・。ちゃんと読んでないけどNIPSのdual learningとかもこんなのじゃなかったっけ。

学習の際decodeした時点で誤差の伝播が途切れるので同時に繋げて学習はしていないそうだけど、最終的な損失はどうなっているんだろう?入力→出力と出力→入力のを単に足しているだけ?その辺ちゃんと書いてなかった気がする。 

しかし結果としてはプレーンなattention seq2seqと比べてBLEUが8近く上昇。 翻訳ならとんでもない改善だけどBLEUがどの程度上がるとどうなのかということがタスクによって違うからなんとも。

感想

Wikipediaの各エンティティについて、Wikidataと組み合わせることで扱いやすい属性値と関連するテキストが同時に手に入るというのはなるほどと思った。 恐らくこの研究の新規性というのはWikipediaとWikidataのデータの性質を上手く使って構造化されたデータとテキストデータのマップを行った所にあると思うのだけど、 そのような性質を持つデータはWikipedia以外にあまりイメージできないのでどういう状況でこの研究の、というよりこのタスクについての知見は意味を持つんだろうという気もする。(エンティティの属性値だけあってそれについてのテキストを生成したい状況って何?)

こういうループバック的なモデルはこのタスクや翻訳のように入出力間の1対1対応が比較的強いような場合については良い制約として働くだろうけど、 例えば対話応答のように入出力間の1対1対応が全然取れないような場合ではむしろどうなんだろう、という気もする。

この研究とは関係ない話になってしまうがそもそも対話のように一対多関係にある入出力であっても無理やり一対一写像として学習しようとしているのが今のNNモデルだ、という意見は以前からあってその辺りのどの程度データそのものの入出力関係が多様なのかという定量的な評価指標って無いのだろうか。

ACL'17 まとめ

聴講&ポスターを見ていて気になった論文をセッションごとに。読んで記事書いたら随時リンクを更新。 全体感想なんかもあとで。

Quastion Answering

Dialogue

Information Extraction

Semantics

  • Skip-Gram - Zipf + Uniform = Vector Additivity (Gittens+)

Outstanding Papers

Poster, Workshop, etc.

  • Building a Non-Trivial Paraphrase Corpus using Multiple Machine Translation Systems (Suzuki+)
  • [NMT1st] Stronger Baselines for Trustable Results in Neural Machine Translation
  • [CoNLL'17] Named Entity Disambiguation for Noisy Text (Eshel+)

An End-to-End Model for Question Answering over Knowledge Base with Cross-Attention Combining Global Knowledge [Hao+, ACL'17]

Question answering over knowledge base (KB-QA) に関する研究。タスクとしては [Unger+, ‘14] が先駆け?タスクの定義の細かい所が分かっていないのだが単なるQAタスクでも手がかりとしてKBを使っていたらKB-QA? 他タスクの手がかりとしてKBを使う、という発想自体がこの研究の新規性というわけではないが実際にNNベースでそれをやっている研究を読んだのは初なので読んでみた。

ここではQAのデータセットとして WikiQuestion , KBとしてFreeBaseを使ってKBのエンティティから解答候補を選ぶモデルになっているが、そもそも解答がKBに無いような場合はどうするんだろう。どのKBを使うかも含めての無差別級的な評価が普通なんだろうか?

提案モデルの概要図は以下。 前提として、KBはFreebaseを使っているため (subject, relation, object) のtripleの集合の形で与えられる。 計算時間を削減するために質問文中の topic entityを見つけて(それもFreebase APIから出来るらしい)、そこから2-hop以内で辿れるentityのみを解答候補とする。 そうして絞り込んだそれぞれの回答候補について、answer entity, answer relation, answer type, answer context*1 の4つのaspect (図のFrance-Parisの例が分かりやすい) それぞれについてembedding ({ \displaystyle { e_e, e_r, e_t, e_c } })を用意しており、concatするわけではなくattentionもそれぞれのaspectについて計算したものを最後に足す方式。

f:id:jack_and_rozz:20170803015433p:plain:w400

論文としてのメインは下図のCross-Attention。 名前の通り (1) A-Q attention と (2) Q-A attention の2段階からなる。 [Hermann+ ‘15] のre-reading mechanismを参考にしたとか。

f:id:jack_and_rozz:20170803015859p:plain:w400

(1) A-Q attention: 通常NNベースのQAタスクだと質問文ベクタは一度RNNなりでエンコードしたもので固定するのに対して、解答候補 { \displaystyle e_i} ごとに質問文ベクタ{ \displaystyle q_i} を構築するのが A-Q attention. そうして計算した質問文ベクタ { \displaystyle q_i} と entityのあるaspectのembedding { \displaystyle e_i \in { e_e, e_r, e_t, e_c } } について内積を取って和を取ったそれぞれのスコア { \displaystyle S (q, e_i) } を計算する。

(2) Q-A attention: (1)で計算した各aspectごとのスコアをattentionによって重み付けしたもの { \displaystyle S (q, a) = \sum_{e_i \in {e_e,e_r,e_t,e_c}} \beta_{e_i} S (q, e_i) } が最終的な質問文{ \displaystyle q}と解答候補{ \displaystyle a}のペアに対するスコアとなる。 今度は質問文を固定して解答候補のそれぞれのaspectに重み付けすることで{ \displaystyle \beta_{e_i}}を得るわけだが、その際の質問文を表すベクトルは単純に各タイムステップの隠れ層の平均を取る。

A-Q attentionは解答候補の性質によって質問文のどこを見るかを変える、Q-Aは逆に質問文の性質によって解答候補のどこを見るかを変えるモデルなわけだけど、両方やる必要ある?(本質的には時系列データの畳み込みが難しいところにattentionの採用理由があるわけなんだからA-Q attentionだけで良くない?)という気もする。

訓練時は正例1つと、解答候補中からk個負例を選んでヒンジロスを取る。質問文のトピックによってはそもそも解答候補がk個もない場合もあるので、その場合はランダムに他のトピックまで解答候補を拡張。テストの際、解答が1つとは限らないのでスコアがマージンを超えたentityのセットを解答とする。

また、グラフ構造を利用するためにKBについてTransEをKB-QAと交互にマルチタスク形式で学習 (Global)。TransEについても同様にヒンジロスを目的関数とする。

結果は以下の通り。[Bordes+, ‘15] からちょっとだけ改善。 cross-attentionの寄与は微妙な所・・・。 むしろKBの構築をマルチタスクでやることの方が筋も良さそうだし効果も出ているからそっちを推せばいいのに、という気もする。

f:id:jack_and_rozz:20170805012728p:plain:w200 f:id:jack_and_rozz:20170805012732p:plain:w210

紹介しておいてなんだがこういうattentionの範囲をどんどん広げていくタイプのモデルは計算量が増える上に、系列データの単一ベクトルへの圧縮を諦めているようであまり好みではない。あちこちのタスクでattentionによって大きく改善が得られているというのはその通りなので現実的に即効性のある考えではあるのだけど・・・。

*1:注釈に “Answer context is the 1-hop entities and predicates which connect to the answer entity along the answer path"と書いていたのだがイマイチ分からなかった。英語得意な人おしえて・・・

KB系 (link prediction) まとめ

最近KB周りがマイブームなので実装の参考も兼ねて KB + Text => Great KB な論文を多読してみた とそこから辿れる少し前の論文を斜め読み。 基本的には (subject, relation, object) からなるtripleをグラフの2ノード間のラベル付きエッジとみなし、それぞれのノード・エッジのembeddingを元にそこにリンクが存在するか否かを推定するLink Predictionタスク。論文による違いは多くの場合tripleに対するスコア関数と、外部情報(グラフ構造や品詞による制約etc)をどう程度使うか。 データセットは大体FreeBase(FB15k, FB15k-237, FB20k..)とWordNet

ところでFB15kなんかは配布されている形ではentityが全部 /m/05qtj みたいなidの形になっている上に、すでにWikidataに移行してしまっているため具体的なentity名への変換APIがもう使えなくなってしまっている (Wikidataの記事との対応を取ったdumpはあるがFB15kの8割ちょいくらいしか網羅できていない)のだが、グラフ構造だけで完結する話はともかく他タスクと絡めて使いたい場合はどうしているんだろう・・・。

A Review of Relational Machine Learning forKnowledge Graphs [Nickel+, IEEE'16]

IEEEのinvited paper。長い。分野の相場観があまり分かってなかったので読んだ。 特によく分かってなかった損失周りをどうするのが一般的なのかについて、既読の論文でもそうなっていたようにクロスエントロピー + L2正規化もしくは sigmoidを用いてスコアを確率にした上で { \sum_i \displaystyle 1 - p(triple_{neg_i}) + p(triple_{pos_i})} に同じく正規化項を加えたものが一般的なようだ(この場合正例と負例の数は同じにする)。

またあまり気にしていなかった負例の作り方についても少し議論があり、正例以外のtripleを全て負例とする、つまり完全にランダムに3つの要素を選択して(正例にない)負例を作るよりも (subject, relation, object)のうちsubject or object とrelationの2つは固定して1つだけ入れ替えることで、比較的plausibleな負例を作るというアプローチもあるとのこと。

Representing Text for Joint Embedding of Text and Knowledge Bases [Toutanova+, EMNLP'15]

グラフ間のrelationのtextualな要素に注目した研究。例えば 「設立」 という単語に関係するグラフであってもそのrelationとしてはco-founded, founder_of, with_founders_of, helped_establishなどたくさん存在する。そうしたrelationのうち低頻度のものは学習が難しくなるが、他のrelationにも出てくる"founder"という単語からなんとなくそのrelationの意味は推測出来る。

そこでConvと呼ばれる提案手法では例えばtripleを "SUBJECT co-founder of OBJECT" という文だとみなし,係り受け解析を行った結果の "SUBJECT { \displaystyle \rightarrow_{appos}} co-founder { \displaystyle \rightarrow_{prep}} of { \displaystyle \rightarrow_{pobj}} OBJECT" というトークン列をCNNでエンコードして得たベクトルからスコアと確率を得る。 従来のスコア関数で推測した確率による損失との重み付け和に対して最適化することで従来手法との共存が可能であり、既存のスコア関数であるmodelF, modelE, distMultなどに対して実験。結果はfiltered(後述)の条件でFB15k-237に対して最高でMRRが0.424, HITS@10が61.1。

確率と損失関数周りがよく分かっていない。彼らはtripleの集合{ \displaystyle \tau}のtriple{ \displaystyle (e_s, r, e_o) \in \tau}に対して

確率を { \displaystyle p(e_o | e_s, r ; \Theta) = {{e^{f(e_s, r, e_o; \Theta)}} \over {\sum_{e' \in Neg_{(e_s, r, ?)}} e^{f(e_s, r, e' ; \Theta))}}} }
損失を { \displaystyle L(\tau, \Theta) = -\sum_{(e_s, r, e_o \in \tau)} log p (e_o | e_s, r; \Theta) -\sum_{(e_s, r, e_o \in \tau)} log p (e_s | e_o, r; \Theta)}
としている。

確率について、負例全部を使うと計算が辛くなるので既存研究(Chang+'14], [Yang+, '15], [Toutanova+, '15], [Chen+, '15])にならってentityのtypeによって少なくともその関係を持ちうるものに絞っている。ところで確率の分母ってこれで良いんだろうか・・・?(別に総和が1になっている必要は無いからNegのスコアを下げられるならなんでもいい?) 損失関数について、この形だと実質relationが常に双方向のグラフであるとして扱う事になると思うのだがそれは大丈夫なのか?(FreeBaseのrelationって全てそういうラベルなんだっけ?)

Translating Embeddings for Modeling Multi-relational Data [Bordes+, NIPS'13]

前述した論文で評価の際の条件として出て来るraw, filteredの設定について引用がここにあったので確認を兼ねて。 テストの際にはあるtripleに対しsubject, relationを固定した状態で全通りのobjectについてスコアを計算し、その逆(subjectの方を入れ替え)についても計算。その上で実際のtripleが何位に来ているかの MRR (Mean Reciprocal Rank) やHITS@k (k位以内に正解がいる割合) で評価する。その際に、いまテストしているtripleとは異なる正解の(trainやvalidに存在した)tripleに対して高いスコアを付けてしまう事があるが、それをちゃんと抜くか抜かないかがraw/filteredの違いらしい。 ちなみにあまり分かっていないのだがどうしてランキング系の評価はMean Rankより MRRが好まれるのだろう・・・?逆順位って直観的にどの程度良いのか分かりにくくないか?