From 62a4d8483791abeb009be464912e58005c237e8a Mon Sep 17 00:00:00 2001 From: Isaac Schifferer Date: Tue, 2 Jul 2024 23:52:05 +0000 Subject: [PATCH] Move eflomal checks inside of eflomal.py --- silnlp/alignment/config.py | 10 ++-------- silnlp/alignment/eflomal.py | 8 +++++++- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/silnlp/alignment/config.py b/silnlp/alignment/config.py index 7855acd6..4b3c8068 100644 --- a/silnlp/alignment/config.py +++ b/silnlp/alignment/config.py @@ -8,7 +8,6 @@ from ..common.environment import SIL_NLP_ENV from ..common.flatcat_stemmer import FlatCatStemmer from ..common.null_stemmer import NullStemmer -from ..common.packages_utils import is_eflomal_available from ..common.snowball_stemmer import SnowballStemmer from ..common.stemmer import Stemmer from ..common.utils import merge_dict @@ -24,10 +23,7 @@ Ibm4DotnetMachineAligner, ParatextDotnetMachineAligner, ) - -if is_eflomal_available(): - from .eflomal import EflomalAligner - +from .eflomal import EflomalAligner from .fast_align import FastAlign from .giza_aligner import HmmGizaAligner, Ibm1GizaAligner, Ibm2GizaAligner, Ibm3GizaAligner, Ibm4GizaAligner from .machine_aligner import ( @@ -67,11 +63,9 @@ "clear3_fa": (ClearAligner, "Clear-3-FA"), "clear3_hmm": (ClearAligner, "Clear-3-HMM"), "clab_fast_align": (FastAlign, "clab-FastAlign"), + "eflomal": (EflomalAligner, "Eflomal"), } -if is_eflomal_available(): - ALIGNERS["eflomal"] = (EflomalAligner, "Eflomal") - STEMMERS: Dict[str, Type[Stemmer]] = { "snowball": SnowballStemmer, "wordnet": WordNetStemmer, diff --git a/silnlp/alignment/eflomal.py b/silnlp/alignment/eflomal.py index ab44b4bf..5b808cb0 100644 --- a/silnlp/alignment/eflomal.py +++ b/silnlp/alignment/eflomal.py @@ -6,20 +6,26 @@ from tempfile import TemporaryDirectory from typing import IO, Iterable -from eflomal import read_text, write_text from machine.corpora import AlignedWordPair from machine.translation import SymmetrizationHeuristic, WordAlignmentMatrix from ..common.corpus import load_corpus +from ..common.packages_utils import is_eflomal_available from .aligner import Aligner from .lexicon import Lexicon from .tools import execute_atools, execute_eflomal, is_atools_available +if is_eflomal_available(): + from eflomal import read_text, write_text + LOGGER = logging.getLogger(__name__) class EflomalAligner(Aligner): def __init__(self, model_dir: Path) -> None: + if not is_eflomal_available(): + raise RuntimeError("eflomal is not installed.") + super().__init__("eflomal", model_dir) def train(self, src_file_path: Path, trg_file_path: Path) -> None: