Skip to content

Commit

Permalink
Fix extract best (#1023)
Browse files Browse the repository at this point in the history
  • Loading branch information
eu9ene authored Feb 4, 2025
1 parent efb6545 commit 89c1267
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 2 deletions.
18 changes: 17 additions & 1 deletion pipeline/translate/extract_best.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,28 @@ def marian_best_bleu(args, score_function):
texts = []
while True:
if prev_line:
fields = prev_line.rstrip().split(" ||| ")
# CTranslate2 can output empty text, for example:
# 10181 ||| .GDFMAKERPROJECTファイルを開くには?
# 10181 ||| .GDMAKERPROJECTファイルを開くには?
# 10181 ||| .GDFMAKERPROJECTファイルを開くには?
# 10181 ||| .GDFMakerPROJECTファイルを開くには?
# 10181 ||| .GDFAKERPROJECTファイルを開くには?
# 10181 ||| .GDMakerPROJECTファイルを開くには?
# 10181 ||| .GDFMAKERPROJECTファイルを開くには。
# 10181 |||
# Marian also outputs scores, for example:
# 0 ||| Реформа, направленная на выдвижение условий, идет слишком медленно. ||| F0= -9.21191 F1= -11.53 ||| -1.22059
fields = prev_line.rstrip("\n").split(" ||| ")
if len(fields) == 1:
# handle "10181 |||"
fields = fields[0].split()[0], ""

idx = int(fields[0])
if idx == i:
texts.append(fields[1])
else:
break

prev_line = next(args.nbest, None)
if not prev_line:
break
Expand Down
42 changes: 41 additions & 1 deletion tests/test_extract_best.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
Помощь по-прежнему оказывается фрагментарно, а действия доноров не координируются."""


def test_extract_best_chr():
def test_extract_best_chrf():
data_dir = DataDir("test_extract_best")
data_dir.create_file("file.1.nbest", nbest)
data_dir.create_file("file.1.ref", refs)
Expand All @@ -44,3 +44,43 @@ def test_extract_best_chr():
output == "Реформа, направленная на выдвижение условий, проходит слишком медленно.\n"
"Помощь по-прежнему носит фрагментарный характер, а доноры не координируют свои действия.\n"
)


nbest_empty = """0 ||| .GDFMAKERPROJECTファイルを開くには?
0 ||| .GDMAKERPROJECTファイルを開くには?
0 ||| .GDFMAKERPROJECTファイルを開くには?
0 ||| .GDFMakerPROJECTファイルを開くには?
0 ||| .GDFAKERPROJECTファイルを開くには?
0 ||| .GDMakerPROJECTファイルを開くには?
0 ||| .GDFMAKERPROJECTファイルを開くには。
0 |||
1 ||| このタイプの生産ラインはhydrapulperシステム、自動形成機械およびcorollary装置によって構成されます。
1 ||| このタイプの生産ラインはhydrapulperシステム、自動形成機械およびcolrollary装置によって構成されます。
1 ||| このタイプの生産ラインはhydrapulperシステム、自動形成機械およびcorollary装置によって構成されます。
1 ||| このタイプの生産ラインはhydrapulperシステム、自動形成機械およびcorollary装置によって構成されます。
1 ||| このタイプの生産ラインはhydrapulperシステム、自動形成機械およびcorollary装置によって構成されます。
1 ||| このタイプの生産ラインはhydrapulperシステム、自動形成機械およびcorollary装置によって構成されます。
1 ||| このタイプの生産ラインはhydrapulperシステム、自動形成機械およびcorollary装置によって構成されます。
1 ||| """
refs_empty = """.GDFAKERPROJECTファイルを開くには?
このタイプの生産ラインはhydrapulperシステム、自動形成機械およびcolrollary装置によって構成されます。"""


def test_extract_best_empty():
data_dir = DataDir("test_extract_best")
data_dir.create_file("file.1.nbest", nbest_empty)
data_dir.create_file("file.1.ref", refs_empty)
data_dir.mkdir("artifacts")
env = {
"TEST_ARTIFACTS": data_dir.path,
"SRC": "en",
"TRG": "ru",
}

data_dir.run_task("extract-best-en-ru-1/10", env=env)

output_file = os.path.join(data_dir.path, "artifacts", "file.1.nbest.out")
assert os.path.isfile(output_file)
with open(output_file, "r") as f:
output = f.read()
assert output.strip() == refs_empty

0 comments on commit 89c1267

Please sign in to comment.