def main(model_dir=None): nlp = spacy.get_lang_class('pt')(path=None) # v1.1.2 onwards if nlp.tagger is None: print('Setting tagger') nlp.tagger = Tagger(nlp.vocab, features=Tagger.feature_templates) if (len(sys.argv) > 4): filetrain = sys.argv[1] model_dir = sys.argv[2] level = sys.argv[3] n_iter = sys.argv[4] else: print("Usage: python " + sys.argv[0] + " <input filename train> <model_dir> <level> <n_iterations>\n") sys.exit() train_data = get_training_data(filetrain) nlp = create_vocab(nlp, train_data) categories = [ 'Pessoa', 'Organizacao', 'Localizacao', 'Curso', 'Data', 'Hora', 'Evento', 'UnidadeOrganica' ] ner = train_ner(nlp, train_data, categories, int(n_iter)) if model_dir is not None: save_model(ner, model_dir + '/' + level)
def en_vocab(): vocab = spacy.get_lang_class('en').Defaults.create_vocab() vocab.resize_vectors(2) apple_ = vocab[u'apple'] orange_ = vocab[u'orange'] apple_.vector = get_vector('ap') orange_.vector = get_vector('or') return vocab
for raw_text, entity_offsets in testing_data: doc = nlp.tokenizer(raw_text) gold = biluo_tags_from_offsets(doc, entity_offsets) out.append((doc, gold)) return out if (len(sys.argv) > 2): filein = sys.argv[1] model = sys.argv[2] else: print("Usage: python " + sys.argv[0] + " <input training> <model>\n") sys.exit() MODEL_DIR = Path("./models") nlp = spacy.get_lang_class('pt')(path=None) # Load custom ner model nlp = load_model(model) testing_data, text = get_testing_data(filein) to_file = "" for line in text: doc = nlp.tokenizer(line) # Perform NER using custom ner model nlp.entity(doc) for i, token in enumerate(doc): if not re.match(r'\s+', token.text) and not re.match( r'--DOCSTART--', token.text):
def en_vocab(): return spacy.get_lang_class('en').Defaults.create_vocab()
def main(model_dir=None): nlp = spacy.get_lang_class('pt')(path=None) # v1.1.2 onwards if nlp.tagger is None: print('Setting tagger') nlp.tagger = Tagger(nlp.vocab, features=Tagger.feature_templates) if (len(sys.argv) > 3): filetrain = sys.argv[1] model_dir = sys.argv[2] level = sys.argv[3] else: print("Usage: python " + sys.argv[0] + " <input filename train> <model_dir> <level>\n") sys.exit() train_data = get_training_data(filetrain) nlp = create_vocab(nlp, train_data) cat = [ 'ABSTRACCAO', 'OUTRO', 'LOCAL', 'ACONTECIMENTO', 'TEMPO', 'PESSOA', 'OBRA', 'ORGANIZACAO', 'VALOR', 'COISA' ] types = [ 'ABSTRACCAO_IDEIA', 'LOCAL_HUMANO', 'ACONTECIMENTO_EVENTO', 'ACONTECIMENTO_EFEMERIDE', 'TEMPO_TEMPO_CALEND', 'PESSOA_POVO', 'PESSOA_INDIVIDUAL', 'OBRA_REPRODUZIDA', 'ABSTRACCAO_DISCIPLINA', 'PESSOA_GRUPOMEMBRO', 'ORGANIZACAO_INSTITUICAO', 'PESSOA_CARGO', 'OBRA_PLANO', 'ORGANIZACAO_ADMINISTRACAO', 'TEMPO_GENERICO', 'ABSTRACCAO_NOME', 'TEMPO_FREQUENCIA', 'LOCAL_FISICO', 'VALOR_QUANTIDADE', 'COISA_SUBSTANCIA', 'LOCAL_VIRTUAL', 'COISA_OBJECTO', 'PESSOA_GRUPOIND', 'ORGANIZACAO_EMPRESA', 'PESSOA_MEMBRO', 'COISA_CLASSE', 'ACONTECIMENTO_ORGANIZADO', 'TEMPO_DURACAO', 'VALOR_MOEDA', 'VALOR_CLASSIFICACAO', 'OBRA_ARTE', 'PESSOA_GRUPOCARGO', 'COISA_MEMBROCLASSE', 'ABSTRACCAO_ESTADO', 'ABSTRACCAO_', 'ORGANIZACAO_', 'OUTRO_', 'ACONTECIMENTO_', 'LOCAL_OUTRO', 'COISA_OUTRO' ] subtypes = [ 'LOCAL_HUMANO_DIVISAO', 'TEMPO_TEMPO_CALEND_DATA', 'LOCAL_HUMANO_PAIS', 'OBRA_REPRODUZIDA_LIVRO', 'PESSOA_POVO_', 'LOCAL_HUMANO_REGIAO', 'TEMPO_TEMPO_CALEND_INTERVALO', 'LOCAL_FISICO_AGUACURSO', 'LOCAL_FISICO_AGUAMASSA', 'TEMPO_TEMPO_CALEND_HORA', 'LOCAL_FISICO_PLANETA', 'LOCAL_HUMANO_RUA', 'LOCAL_HUMANO_CONSTRUCAO', 'LOCAL_FISICO_OUTRO', 'LOCAL_VIRTUAL_SITIO', 'OBRA_REPRODUZIDA_PROGRAMA', 'ORGANIZACAO_INSTITUICAO_', 'LOCAL_HUMANO_OUTRO', 'OBRA_REPRODUZIDA_MUSICA', 'OBRA_REPRODUZIDA_OUTRO', 'ORGANIZACAO_INSTITUICAO_SUB', 'ORGANIZACAO_ADMINISTRACAO_', 'LOCAL_FISICO_REGIAO', 'ABSTRACCAO_IDEIA_', 'OBRA_ARTE_CONSTRUCAO', 'OBRA_ARTE_OUTRO', 'LOCAL_FISICO_RELEVO', 'ORGANIZACAO_ADMINISTRACAO_SUB', 'LOCAL_VIRTUAL_COMSOCIAL', 'ACONTECIMENTO_EFEMERIDE_', 'ACONTECIMENTO_EVENTO_', 'COISA_OBJECTO_', 'LOCAL_FISICO_ILHA', 'OBRA_PLANO_', 'OBRA_REPRODUZIDA_FILME', 'ORGANIZACAO_EMPRESA_', 'LOCAL_VIRTUAL_OBRA', 'ORGANIZACAO_EMPRESA_SUB', 'ACONTECIMENTO_ORGANIZADO_', 'OBRA_REPRODUZIDA_', 'LOCAL_VIRTUAL_OUTRO', 'OBRA_ARTE_', 'ABSTRACCAO_NOME_', 'TEMPO_DURACAO_', 'OBRA_REPRODUZIDA_TEATRO', 'OBRA_ARTE_PINTURA', 'OBRA_ARTE_EDIFICIO' ] filtered = [ 'LOCAL', 'ACONTECIMENTO', 'TEMPO', 'PESSOA', 'ORGANIZACAO', 'VALOR' ] if level == 'cat': categories = cat elif level == 'types': categories = types elif level == 'subtypes': categories = subtypes else: categories = filtered ner = train_ner(nlp, train_data, categories) if model_dir is not None: save_model(ner, model_dir + '/' + level)