From c435f748d743b1ee407c02c14223679769fa52b2 Mon Sep 17 00:00:00 2001 From: Paul O'Leary McCann Date: Tue, 22 Aug 2017 00:01:28 +0900 Subject: [PATCH] Put Mecab import in utility function --- spacy/ja/__init__.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/spacy/ja/__init__.py b/spacy/ja/__init__.py index 5f49f0b1b..c82591f58 100644 --- a/spacy/ja/__init__.py +++ b/spacy/ja/__init__.py @@ -16,14 +16,21 @@ from collections import namedtuple ShortUnitWord = namedtuple('ShortUnitWord', ['surface', 'base_form', 'part_of_speech']) +def try_mecab_import(): + """Mecab is required for Japanese support, so check for it. + + It it's not available blow up and explain how to fix it.""" + try: + import MeCab + return MeCab + except ImportError: + raise ImportError("Japanese support requires MeCab: " + "https://github.com/SamuraiT/mecab-python3") + class JapaneseTokenizer(object): def __init__(self, cls, nlp=None): self.vocab = nlp.vocab if nlp is not None else cls.create_vocab(nlp) - try: - import MeCab - except ImportError: - raise ImportError("The Japanese tokenizer requires the MeCab library: " - "https://github.com/SamuraiT/mecab-python3") + MeCab = try_mecab_import() self.tokenizer = MeCab.Tagger() def __call__(self, text): @@ -70,12 +77,7 @@ def detailed_tokens(tokenizer, text): class JapaneseTagger(object): def __init__(self, vocab): - try: - import MeCab - except ImportError: - raise ImportError("The Japanese tagger requires the MeCab library: " - "https://github.com/SamuraiT/mecab-python3") - + MeCab = try_mecab_import() self.tagger = Tagger(vocab) self.tokenizer = MeCab.Tagger()