Spaces:
Running
Running
import hanlp | |
import mlflow.pyfunc | |
import pandas | |
from parser import convert_to_knowledge_graph_spec | |
class HanLPner(mlflow.pyfunc.PythonModel): | |
def __init__(self): | |
self.HanLP = None | |
def load_context(self, context): | |
HanLP = hanlp.load(hanlp.pretrained.mtl.CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ELECTRA_SMALL_ZH) | |
self.HanLP = HanLP | |
def predict(self, context, model_input): | |
texts = [] | |
for _, row in model_input.iterrows(): | |
texts.append(row["text"]) | |
return pandas.Series(convert_to_knowledge_graph_spec(self.HanLP(texts)["srl"])) | |
if __name__ == '__main__': | |
conda_env = { | |
'channels': ['defaults'], | |
'dependencies': [ | |
'python=3.10.7', | |
'pip', | |
{ | |
'pip': [ | |
'mlflow', | |
'mlflow-skinny', | |
'mlflow[extras]', | |
'pandas=={}'.format(pandas.__version__), | |
'hanlp[amr, fasttext, full, tf]' | |
], | |
}, | |
], | |
'name': 'HanLPner' | |
} | |
# Save the MLflow Model | |
mlflow_pyfunc_model_path = "models/HanLPner" | |
mlflow.pyfunc.save_model(path=mlflow_pyfunc_model_path, python_model=HanLPner(), conda_env=conda_env) | |
loaded_model = mlflow.pyfunc.load_model(mlflow_pyfunc_model_path) | |
test_data = pandas.DataFrame( | |
{ | |
"text": [ | |
"我爱中国" | |
] | |
} | |
) | |
test_predictions = loaded_model.predict(test_data) | |
print(test_predictions.to_markdown()) |