基于 Mistral-7B 从简历中提取实体构建知识图谱
在自然语言处理(NLP)领域,从非结构化文本中精准提取信息的能力日益关键。简历作为包含大量职业经历、技能和资质的复杂文档,是构建招聘知识图谱的优质数据源。然而,传统解析方法往往难以应对格式多变的简历内容。
考虑到数据隐私和成本问题,使用本地部署的离线模型是一个更优的选择。本文将演示如何利用 Mistral-7B-Instruct-v2 模型,结合 LangChain 框架,从简历文本中高精度地提取实体,并结构化输出为 JSON,最终用于构建知识图谱。
1. 数据预处理:文本提取
首先需要将 PDF 或图片格式的简历转换为纯文本。虽然具体实现代码未在此展开,但常用的方案包括:
- PDF 文件:可使用
PyMuPDF库进行解析。 - 图片文件:可使用
PytesseractOCR 工具识别文字。
以下是一段典型的简历原始文本示例(已清理部分 HTML 标签以便阅读):
Developer - TATA CONSULTANCY SERVICE, Batavia, OH
Relevant course work: Database Systems, Database Administration...
Work Experience:
Developer, TATA CONSULTANCY SERVICE, June 2016 to Present
Skills: Java, JSP, JSF, DB2(SQL), Linux, Splunk...
Education: Master of Science in Information Technology...
2. 模型环境搭建
我们选用 Hugging Face 上的 mistralai/Mistral-7B-Instruct-v0.2 模型。为了在推理时获得更好的控制,我们将使用 transformers 和 langchain 进行封装。
安装依赖
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from langchain import HuggingFacePipeline, PromptTemplate
from langchain.chains import LLMChain
加载模型与配置
在具备 GPU 的环境中(如 AWS 实例或本地高性能机器),可以如下配置:
model_name = "mistralai/Mistral-7B-Instruct-v0.2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
trust_remote_code=True,
torch_dtype=torch.float16,
device_map="auto",
use_cache=True,
)
DEVICE = "cuda:0" if torch.cuda.is_available() else "cpu"
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
text_pipeline = pipeline(
,
model=model,
tokenizer=tokenizer,
max_new_tokens=,
do_sample=,
repetition_penalty=,
streamer=streamer
)
llm = HuggingFacePipeline(pipeline=text_pipeline, model_kwargs={: })


