コード例 #1
0
def predict_single_sentence(text):
    # 测试句子
    word_labels, seq_types = PreProcessInputData([text])
    # 模型预测
    predicted = model.predict([word_labels, seq_types])
    y = np.argmax(predicted[0], axis=1)
    predict_tag = [id_label_dict[_] for _ in y]
    return predict_tag[1:-1]
コード例 #2
0
def get_geo():
    return_result = {"code": 200, "message": "success", "data": []}
    try:
        text = request.get_json()["text"].replace(" ", "")
        word_labels, seq_types = PreProcessInputData([text])

        # 模型预测
        predicted = ner_model.predict([word_labels, seq_types])
        y = np.argmax(predicted[0], axis=1)
        tag = [id_label_dict[_] for _ in y]

        # 输出预测结果
        result = bio_to_json(text, tag[1:-1])
        return_result["data"] = result

    except Exception:
        return_result["code"] = 400
        return_result["message"] = traceback.format_exc()

    return json.dumps(return_result, ensure_ascii=False, indent=2)
コード例 #3
0
def get_text_predict(text):
    new_text = []
    for word in text.split():
        new_text.extend(bert_encode(word))
    word_labels, seq_types = PreProcessInputData([new_text])

    # 模型预测
    predicted = model.predict([word_labels, seq_types])
    y = np.argmax(predicted[0], axis=1)
    tags = [id_label_dict[_] for _ in y]

    # 输出预测结果
    real_tag = []
    i = 1
    for word in text.split():
        new_word = bert_encode(word)
        if i < len(tags):
            real_tag.append(tags[i])
            i += len(new_word)

    return real_tag
コード例 #4
0
            if tag[2:] != tags[c_idx-1][2:] or tags[c_idx-1][2:] == 'O':
                tags[c_idx] = 'O'
                pass
            else:
                entity_name = entity_name + c
                if tag_next[2:] != entity_tag:
                    item["entities"].append({"word": entity_name, "start": entity_start, "end": iCount + 1, "type": entity_tag})
                    entity_name = ''
        iCount += 1
    return item


# 加载训练好的模型
custom_objects = get_custom_objects()
for key, value in {'CRF': CRF, 'crf_loss': crf_loss, 'crf_accuracy': crf_accuracy}.items():
    custom_objects[key] = value
model = load_model("%s_ner.h5" % event_type, custom_objects=custom_objects)

# 测试句子
text = "经过工作人员两天的反复验证、严密测算,记者昨天从上海中心大厦得到确认:被誉为上海中心大厦“定楼神器”的阻尼器,在8月10日出现自2016年正式启用以来的最大摆幅。"
word_labels, seq_types = PreProcessInputData([text])

# 模型预测
predicted = model.predict([word_labels, seq_types])
y = np.argmax(predicted[0], axis=1)
tag = [id_label_dict[_] for _ in y]

# 输出预测结果
result = bio_to_json(text, tag[1:-1])
pprint(result)