bool NE::open(const Param ¶m) { close(); if (action_mode() == PARSING_MODE) { const std::string filename = param.get<std::string>("ne-model"); std::vector<const char*> argv; argv.push_back(param.program_name()); argv.push_back("-m"); argv.push_back(filename.c_str()); model_ = crfpp_model_new(argv.size(), const_cast<char **>(&argv[0])); // CHECK_FALSE(tagger_) << crfpp_strerror(tagger_); // CHECK_FALSE(crfpp_ysize(tagger_) >= 2); // CHECK_FALSE(crfpp_xsize(tagger_) == 3); // for (size_t i = 0; i < crfpp_ysize(tagger_); ++i) { // const char *p = crfpp_yname(tagger_, i); // CHECK_FALSE(p && (p[0] == 'B' || p[0] == 'I' || p[0] == 'O')); // } } // "名詞,数," ne_composite_ipa_ ="\xE5\x90\x8D\xE8\xA9\x9E,\xE6\x95\xB0,"; // "名詞,数詞" ne_composite_juman_ = "\xE5\x90\x8D\xE8\xA9\x9E,\xE6\x95\xB0\xE8\xA9\x9E,"; // "名詞,数詞" ne_composite_unidic_ = "\xE5\x90\x8D\xE8\xA9\x9E,\xE6\x95\xB0\xE8\xA9\x9E,"; Iconv iconv; iconv.open(UTF8, charset()); CHECK_DIE(iconv.convert(&ne_composite_ipa_)); CHECK_DIE(iconv.convert(&ne_composite_juman_)); CHECK_DIE(iconv.convert(&ne_composite_unidic_)); CHECK_FALSE(!ne_composite_ipa_.empty()); CHECK_FALSE(!ne_composite_juman_.empty()); CHECK_FALSE(!ne_composite_unidic_.empty()); return true; }