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]
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)
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
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)