Spaces:
Runtime error
Runtime error
# | |
# Pyserini: Reproducible IR research with sparse and dense representations | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
# | |
import os | |
import unittest | |
from shutil import rmtree | |
from random import randint | |
from integrations.utils import run_command, parse_score | |
class TestMsmarcoPassageIrst(unittest.TestCase): | |
def setUp(self): | |
curdir = os.getcwd() | |
if curdir.endswith('sparse'): | |
self.pyserini_root = '../..' | |
else: | |
self.pyserini_root = '.' | |
self.tmp = f'tmp{randint(0, 10000)}' | |
if os.path.isdir(self.tmp): | |
rmtree(self.tmp) | |
os.mkdir(self.tmp) | |
self.dl19_pass = 'dl19-passage' | |
self.dl20 = 'dl20' | |
def test_sum_aggregation_dl19_passage(self): | |
# dl19 passage sum | |
topic = 'dl19-passage' | |
os.system(f'python -m pyserini.search.lucene.irst \ | |
--topics {self.dl19_pass} \ | |
--index msmarco-v1-passage \ | |
--output {self.tmp}/regression_test_sum.{topic}.txt \ | |
--alpha 0.1 ') | |
score_cmd = f'python -m pyserini.eval.trec_eval \ | |
-c -m map -m ndcg_cut.10 -l 2 {topic} {self.tmp}/regression_test_sum.{topic}.txt' | |
status = os.system(score_cmd) | |
stdout, stderr = run_command(score_cmd) | |
map_score = parse_score(stdout, "map") | |
ndcg_score = parse_score(stdout, "ndcg") | |
self.assertEqual(status, 0) | |
self.assertEqual(stderr, '') | |
self.assertEqual(map_score, 0.3281) | |
self.assertEqual(ndcg_score, 0.5260) | |
def test_sum_aggregation_dl20_passage(self): | |
# dl20 passage sum | |
topic = 'dl20-passage' | |
os.system(f'python -m pyserini.search.lucene.irst \ | |
--topics {self.dl20} \ | |
--index msmarco-v1-passage \ | |
--output {self.tmp}/regression_test_sum.{topic}.txt \ | |
--alpha 0.1 ') | |
score_cmd = f'python -m pyserini.eval.trec_eval \ | |
-c -m map -m ndcg_cut.10 -l 2 {topic} {self.tmp}/regression_test_sum.{topic}.txt' | |
status = os.system(score_cmd) | |
stdout, stderr = run_command(score_cmd) | |
map_score = parse_score(stdout, "map") | |
ndcg_score = parse_score(stdout, "ndcg") | |
self.assertEqual(status, 0) | |
self.assertEqual(stderr, '') | |
self.assertEqual(map_score, 0.3520) | |
self.assertEqual(ndcg_score, 0.5578) | |
def test_max_aggregation_dl19(self): | |
# dl19 passage max | |
topic = 'dl19-passage' | |
os.system(f'python -m pyserini.search.lucene.irst \ | |
--topics {self.dl19_pass} \ | |
--index msmarco-v1-passage \ | |
--output {self.tmp}/regression_test_max.{topic}.txt \ | |
--alpha 0.3 \ | |
--max-sim ') | |
score_cmd = f'python -m pyserini.eval.trec_eval \ | |
-c -m map -m ndcg_cut.10 -l 2 {topic} {self.tmp}/regression_test_max.{topic}.txt' | |
status = os.system(score_cmd) | |
stdout, stderr = run_command(score_cmd) | |
map_score = parse_score(stdout, "map") | |
ndcg_score = parse_score(stdout, "ndcg") | |
self.assertEqual(status, 0) | |
self.assertEqual(stderr, '') | |
self.assertEqual(map_score, 0.3286) | |
self.assertEqual(ndcg_score, 0.5371) | |
def test_max_aggregation_dl20_passage(self): | |
# dl20 passage max | |
topic = 'dl20-passage' | |
os.system(f'python -m pyserini.search.lucene.irst \ | |
--topics {self.dl20} \ | |
--index msmarco-v1-passage \ | |
--output {self.tmp}/regression_test_max.{topic}.txt \ | |
--alpha 0.3 \ | |
--max-sim') | |
score_cmd = f'python -m pyserini.eval.trec_eval \ | |
-c -m map -m ndcg_cut.10 -l 2 {topic} {self.tmp}/regression_test_max.{topic}.txt' | |
status = os.system(score_cmd) | |
stdout, stderr = run_command(score_cmd) | |
map_score = parse_score(stdout, "map") | |
ndcg_score = parse_score(stdout, "ndcg") | |
self.assertEqual(status, 0) | |
self.assertEqual(stderr, '') | |
self.assertEqual(map_score, 0.3357) | |
self.assertEqual(ndcg_score, 0.5469) | |
def tearDown(self): | |
rmtree(self.tmp) | |
class TestMsmarcoDocumentIrst(unittest.TestCase): | |
def setUp(self): | |
curdir = os.getcwd() | |
if curdir.endswith('sparse'): | |
self.pyserini_root = '../..' | |
else: | |
self.pyserini_root = '.' | |
self.tmp = f'tmp{randint(0, 10000)}' | |
if os.path.isdir(self.tmp): | |
rmtree(self.tmp) | |
os.mkdir(self.tmp) | |
self.dl19_doc = 'dl19-doc' | |
self.dl20 = 'dl20' | |
def test_sum_aggregation_dl19_doc(self): | |
# dl19-doc-sum | |
topic = 'dl19-doc' | |
os.system(f'python -m pyserini.search.lucene.irst \ | |
--topics {self.dl19_doc} \ | |
--index msmarco-v1-doc \ | |
--output {self.tmp}/regression_test_sum.{topic}.txt \ | |
--alpha 0.3') | |
score_cmd = f'python -m pyserini.eval.trec_eval \ | |
-c -m map -m ndcg_cut.10 -M 100 {topic} {self.tmp}/regression_test_sum.{topic}.txt' | |
status = os.system(score_cmd) | |
stdout, stderr = run_command(score_cmd) | |
map_score = parse_score(stdout, "map") | |
ndcg_score = parse_score(stdout, "ndcg") | |
self.assertEqual(status, 0) | |
self.assertEqual(stderr, '') | |
self.assertEqual(map_score, 0.2524) | |
self.assertEqual(ndcg_score, 0.5494) | |
def test_sum_aggregation_dl20_doc(self): | |
# dl20-doc-sum | |
topic = 'dl20-doc' | |
os.system(f'python -m pyserini.search.lucene.irst \ | |
--topics {self.dl20} \ | |
--index msmarco-v1-doc \ | |
--output {self.tmp}/regression_test_sum.{topic}.txt \ | |
--alpha 0.3 ') | |
score_cmd = f'python -m pyserini.eval.trec_eval \ | |
-c -m map -m ndcg_cut.10 -M 100 {topic} {self.tmp}/regression_test_sum.{topic}.txt' | |
status = os.system(score_cmd) | |
stdout, stderr = run_command(score_cmd) | |
map_score = parse_score(stdout, "map") | |
ndcg_score = parse_score(stdout, "ndcg") | |
self.assertEqual(status, 0) | |
self.assertEqual(stderr, '') | |
self.assertEqual(map_score, 0.3825) | |
self.assertEqual(ndcg_score, 0.5559) | |
def test_max_aggregation_dl19_doc(self): | |
# dl19-doc-max | |
topic = 'dl19-doc' | |
os.system(f'python -m pyserini.search.lucene.irst \ | |
--topics {self.dl19_doc} \ | |
--index msmarco-v1-doc \ | |
--output {self.tmp}/regression_test_max.{topic}.txt \ | |
--alpha 0.3 \ | |
--max-sim') | |
score_cmd = f'python -m pyserini.eval.trec_eval \ | |
-c -m map -m ndcg_cut.10 -M 100 {topic} {self.tmp}/regression_test_max.{topic}.txt' | |
status = os.system(score_cmd) | |
stdout, stderr = run_command(score_cmd) | |
map_score = parse_score(stdout, "map") | |
ndcg_score = parse_score(stdout, "ndcg") | |
self.assertEqual(status, 0) | |
self.assertEqual(stderr, '') | |
self.assertEqual(map_score, 0.2205) | |
self.assertEqual(ndcg_score, 0.4917) | |
def test_max_aggregation_dl20_doc(self): | |
# dl20-doc-max | |
topic = 'dl20-doc' | |
os.system(f'python -m pyserini.search.lucene.irst \ | |
--topics {self.dl20} \ | |
--index msmarco-v1-doc \ | |
--output {self.tmp}/regression_test_max.{topic}.txt \ | |
--alpha 0.3 \ | |
--max-sim') | |
score_cmd = f'python -m pyserini.eval.trec_eval \ | |
-c -m map -m ndcg_cut.10 -M 100 {topic} {self.tmp}/regression_test_max.{topic}.txt' | |
status = os.system(score_cmd) | |
stdout, stderr = run_command(score_cmd) | |
map_score = parse_score(stdout, "map") | |
ndcg_score = parse_score(stdout, "ndcg") | |
self.assertEqual(status, 0) | |
self.assertEqual(stderr, '') | |
self.assertEqual(map_score, 0.3373) | |
self.assertEqual(ndcg_score, 0.5015) | |
def tearDown(self): | |
rmtree(self.tmp) | |
class TestMsmarcoDocumentSegIrst(unittest.TestCase): | |
def setUp(self): | |
curdir = os.getcwd() | |
if curdir.endswith('sparse'): | |
self.pyserini_root = '../..' | |
else: | |
self.pyserini_root = '.' | |
self.tmp = f'tmp{randint(0, 10000)}' | |
if os.path.isdir(self.tmp): | |
rmtree(self.tmp) | |
os.mkdir(self.tmp) | |
self.dl19_doc = 'dl19-doc' | |
self.dl20 = 'dl20' | |
def test_sum_aggregation_dl19_doc_seg(self): | |
# dl19-doc-seg-sum | |
topic = 'dl19-doc' | |
os.system(f'python -m pyserini.search.lucene.irst \ | |
--topics {self.dl19_doc} \ | |
--index msmarco-v1-doc-segmented \ | |
--output {self.tmp}/regression_test_sum.{topic}.txt \ | |
--hits 10000 --segments \ | |
--alpha 0.3') | |
score_cmd = f'python -m pyserini.eval.trec_eval \ | |
-c -m map -m ndcg_cut.10 -M 100 {topic} {self.tmp}/regression_test_sum.{topic}.txt' | |
status = os.system(score_cmd) | |
stdout, stderr = run_command(score_cmd) | |
map_score = parse_score(stdout, "map") | |
ndcg_score = parse_score(stdout, "ndcg") | |
self.assertEqual(status, 0) | |
self.assertEqual(stderr, '') | |
self.assertEqual(map_score, 0.2711) | |
self.assertEqual(ndcg_score, 0.5596) | |
def test_sum_aggregation_dl20_doc_seg(self): | |
# dl20-doc-seg-sum | |
topic = 'dl20-doc' | |
os.system(f'python -m pyserini.search.lucene.irst \ | |
--topics {self.dl20} \ | |
--index msmarco-v1-doc-segmented \ | |
--output {self.tmp}/regression_test_sum.{topic}.txt \ | |
--hits 10000 --segments \ | |
--alpha 0.3 ') | |
score_cmd = f'python -m pyserini.eval.trec_eval \ | |
-c -m map -m ndcg_cut.10 -M 100 {topic} {self.tmp}/regression_test_sum.{topic}.txt' | |
status = os.system(score_cmd) | |
stdout, stderr = run_command(score_cmd) | |
map_score = parse_score(stdout, "map") | |
ndcg_score = parse_score(stdout, "ndcg") | |
self.assertEqual(status, 0) | |
self.assertEqual(stderr, '') | |
self.assertEqual(map_score, 0.3759) | |
self.assertEqual(ndcg_score, 0.5343) | |
def test_max_aggregation_dl19_doc_seg(self): | |
# dl19-doc-seg-max | |
topic = 'dl19-doc' | |
os.system(f'python -m pyserini.search.lucene.irst \ | |
--topics {self.dl19_doc} \ | |
--index msmarco-v1-doc-segmented \ | |
--output {self.tmp}/regression_test_max.{topic}.txt \ | |
--alpha 0.3 \ | |
--hits 10000 --segments \ | |
--max-sim') | |
score_cmd = f'python -m pyserini.eval.trec_eval \ | |
-c -m map -m ndcg_cut.10 -M 100 {topic} {self.tmp}/regression_test_max.{topic}.txt' | |
status = os.system(score_cmd) | |
stdout, stderr = run_command(score_cmd) | |
map_score = parse_score(stdout, "map") | |
ndcg_score = parse_score(stdout, "ndcg") | |
self.assertEqual(status, 0) | |
self.assertEqual(stderr, '') | |
self.assertEqual(map_score, 0.2425) | |
self.assertEqual(ndcg_score, 0.5193) | |
def test_max_aggregation_dl20_doc_seg(self): | |
# dl20-doc-seg-max | |
topic = 'dl20-doc' | |
os.system(f'python -m pyserini.search.lucene.irst \ | |
--topics {self.dl20} \ | |
--index msmarco-v1-doc-segmented \ | |
--output {self.tmp}/regression_test_max.{topic}.txt \ | |
--alpha 0.3 \ | |
--hits 10000 --segments \ | |
--max-sim') | |
score_cmd = f'python -m pyserini.eval.trec_eval \ | |
-c -m map -m ndcg_cut.10 -M 100 {topic} {self.tmp}/regression_test_max.{topic}.txt' | |
status = os.system(score_cmd) | |
stdout, stderr = run_command(score_cmd) | |
map_score = parse_score(stdout, "map") | |
ndcg_score = parse_score(stdout, "ndcg") | |
self.assertEqual(status, 0) | |
self.assertEqual(stderr, '') | |
self.assertEqual(map_score, 0.3496) | |
self.assertEqual(ndcg_score, 0.5089) | |
def tearDown(self): | |
rmtree(self.tmp) | |
if __name__ == '__main__': | |
unittest.main() | |