Skip to content

Latest commit

 

History

History
62 lines (35 loc) · 3.25 KB

File metadata and controls

62 lines (35 loc) · 3.25 KB

4. ユーザインタフェースと定性評価

0. 準備

以下のエンドポイントを持つWebサーバを実装せよ。

  • /select : query をHTTP GETすると、それを単語と解釈して保持している転置インデックスを引き、product_id の辞書順に10件までの製品情報を返す。

ただし、転置インデックスは product_title に張り、少なくとも query との関連性が判定できる程度の製品情報を返すこと。

また、英語製品データを保持させた状態で、簡単に動作確認をせよ。

1. ブーリアンANDクエリ

query にスペース区切りで複数の単語を与えると、product_title 中に全ての単語を含む製品を返すようにせよ。

2. 検索条件

/select の際に query に加えて sort=tf をHTTP GETすると、「query 中の単語が product_description 中に出現する回数」の降順に10件までの製品情報を返すようにせよ。

3. 定性比較

いくつかの適当な query について、sort=tf の有無どちらが優れた製品情報を返すか判定せよ。

4. 評価システム

新たに以下のエンドポイントを実装せよ。

  • /annotate : query_id をHTTP GETすると、英語結合データ上で紐づいた製品情報を返す。

5. アノテーション

前問で実装したエンドポイントを用いて、いくつかの適当な query_id について、紐づいた全ての製品に手動でESCIラベル(Exact, Substitute, Complement, Irrelevantのいずれか)を付与せよ。

6. Inter-rater Reliability

英語結合データには元々 esci_label が含まれる。 これと前問の結果についてCohen's kappaを計算せよ。

7. ブーリアンORクエリ

query で特別な単語 OR に対応せよ。 この特別な単語が与えられた場合、この単語の左右それぞれが示す条件について、いずれかを満たす製品を返すようにせよ。 言い換えると、演算子の優先順位はスペースが先、OR が後である。

ヒント:query を満たす product_id の配列を構築するよりも、ポスティングリストを内包するイテレータや、他の複数のイテレータを内包するイテレータを書いたほうが効率的である。

8. ポジションリスト

転置インデックスを拡張する。 単語ごと製品ごとに、product_title 中の出現位置(先頭から何番目の単語として出現するか)の配列も保存するようにせよ。 ただし一般に、同じ単語が複数回出現する可能性があることに注意せよ。

9. フレーズ検索

単語ではなく単語の並び(フレーズ)を指定するための特別な単語 " に対応せよ。 この単語でスペース区切りの複数の単語を挟むと、product_title 中にその単語の並びが出現する製品が返るようにせよ。

10. 演算子の優先順位

演算子の優先順位を任意に指定するための特別な単語 () に対応せよ。 例えば、Amazon HDMI OR CableAmazon ( HDMI OR Cable ) で異なる製品情報が返るようにするということである。