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)
Example #2
0
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
Example #3
0
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
Example #4
0
    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):
Example #5
0
def en_vocab():
    return spacy.get_lang_class('en').Defaults.create_vocab()
Example #6
0
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)