ZMonster's Blog 巧者劳而智者忧,无能者无所求,饱食而遨游,泛若不系之舟

找工作啦

本来还没有去想返工的事情,然后五一前被前领导催简历了,就整理了一下发了过去后面聊了聊。既然都动起来了,索性在五一后也找几个朋友聊了下或者让帮忙做下内推之类的。总体来说现在市场行情并不算好,有 HC 的公司不算多,不过我也没什么太多想法,对于一些更感兴趣的还是会争取一下,网上也还在投投看,不过也就是最近几个星期打算处理一下这个事情,如果月底前没有很满意的,可能就继续躺着或者去我前领导或者同学那里待着了。想了下,把简历脱敏下在博客上也放一份吧,虽然应该概率很小能有看对眼的,如果我的经历里有什么项目和业务觉得感兴趣也欢迎来找我聊聊,反正几个公司都倒闭了,除了客户信息应该没啥不能聊的。工作这么多年,精力都放在公司业务上了,并没有自己去做什么个人项目,好在最近问了下前前司 CTO 得到了同意,准备把陪伴多年的几个文本处理的项目整理一下开源出来,是倾注了我比较多心血的项目,我自认为还是有一些独特价值的。

准备回头把个人经历也整理一下放到 about 页面吧。

个人信息

技能清单

  • 编程语言: Python | Shell | C | C++
  • 机器学习工具: scikit-learn | Pytorch | Tensorflow | Numpy | NLTK
  • NLP 技能: 文本分类 | 序列标注 | 信息检索 | 对话系统 | 知识图谱 | 信息抽取 | 文本挖掘
  • 数据库相关: MySQL | Redis | Neo4j | Dgraph
  • 其他: Linux | Git | Docker | K8S | Django | Elasticsearch

工作经历

北京********有限公司(2021/01~2023/05)

  • 开发基于 LLM 的聊天应用服务(2022/12~2023/05)
    • 使用 Django 实现服务,接入 OpenAI 接口,用于在飞书中集成以及之后上线的 toC 聊天应用
    • 支持了用户自定义 prompt,实现了 RAG 支持用户上传文档数据后基于文档进行问答,并能根据用户设置的 prompt 和上传文档生成机器人名字、欢迎语
    • 在对话接口中集成 Stable Diffusion 的图像生成功能支持用户在对话界面中生成图片
    • 以对话接口的形式实现了一些管理功能并接入到飞书,供运营人员查看分析聊天记录、修改机器人 prompt 和知识库、修改用户可用聊天额度等
  • 开发金融资讯服务(2021/08~2022/05)
    • 使用 Django 实现后端服务进行资讯数据的存储并提供 RESTful API
    • 使用 K8S 进行部署和运维,服务可以方便地进行水平扩展来提高负载能力
    • 使用前文所述文本处理框架对金融资讯进行去重、清洗和结构化分析,所得分析结果作为资讯推荐的特征,实现了金融资讯信息流、相关资讯推荐、要闻推荐等服务
  • 设计和开发文本处理框架(2021/01~2022/11)

    • 对文本处理过程进行抽象,实现了适用大部分文本处理过程、组件化、可扩展性强的框架,开发者可通过自定义组件以及组件与组件的组合实现复杂的自定义文本处理过程
    • 框架实现后逐步将标准的一些文本处理方法和业务中提炼出来的相对通用的文本处理方法作为组件添加到框架中,目前已集成分词、关键词提取、实体识别、实体融合、文本分类、文本摘要、观点挖掘等领域数十个组件

    该框架作为基础工具被用于公司金融资讯结构化分析的各项业务中。

****科技发展(北京)有限公司(2016/08~2020/12)

  • 参与问答系统框架的开发和优化(2019/10~2020/12)
    • 重构项目,在不削减功能的前提下将代码量削减 30%,将单元测试覆盖率从 47% 提升至 98%
    • 制定评估标准,实现评估工具,分析模型的泛化、拒识、抗混淆、多轮对话等各维度能力,以此为依据帮助在不同要求的项目中选择不同算法和参数,减少模型优化所需的人工工作量
  • 设计和开发基于知识图谱的推理问答框架(2018/01~2020-02)
    • 实现了数据库无关的 library 来读写图数据库,支持 Neo4j/Dgraph
    • 以 pipeline 架构实现图谱问答框架,各组件可方便的扩展、定制
      • 对用户问题先进行实体识别和关系识别
      • 在实体识别、关系识别的结果上,根据本体结构进行推导得到问题的形式化表达
      • 将问题的形式化表达转换为图谱查询、计算操作,得到结果
      • 用预先设计好的答案模板来渲染图谱查询结果,输出回答
  • 设计和开发通用的信息抽取框架(2017/06~2020/12)

    • 对不同的抽取技术(正则、匹配、序列标注)提供统一的抽取、归一化、校验接口
    • 提供对已有抽取结果的组合、扩展抽取以进行更复杂的任务
    • 设计为配置化的使用方式,按照规范写好配置文件即可构造各种抽取器

    该框架作为基础工具被用于实现实体识别、文档抽取功能及其他信息抽取类业务中。

  • 设计和开发 PDF 文档解析工具(2018/01~2020/07)
    • 使用 PDFMiner 获得基础的 PDF 解析结果,再基于规则和分类器进行内容元素分析
    • 实现了 PDF 文件中目录、章节标题、列表、页眉页脚、表格、脚注等不同元素的解析
  • 构建保险行业知识图谱(2017/12~2020/02)

    • 借助前文提到的 PDF 解析工具和信息抽取框架,从保险文档中抽取获得初步的保险知识
      • 借助文档解析得到的结构化信息(章节、注释等)及规则实现了大部分简单知识的抽取
      • 使用 BiLSTM+CRF 模型抽取部分非显式知识,并在数万篇文档上用 ELMO 预训练来提高效果
    • 与产品团队共同梳理清楚保险领域知识图谱的本体结构
    • 以本体结构为指导信息,对文档抽取的结果进行组合、二次抽取得到实体关系,最终形成了十万量级实体、百万量级关系(含属性)的保险领域知识图谱
      • 一部分实体及属性直接采用文档抽取结果,其余主要基于规则对抽取结果进行二次抽取
      • 针对文档抽取结果,实现了一个简单的图谱构建框架,将图谱构建分为实体获取、属性获取、关系获取、融合和链接等步骤,且允许通过配置文件对这几个步骤进行设置和扩展
    • 结合基于知识图谱的推理问答框架,实现了一个保险领域的推理问答机器人

    凭借这份知识图谱及保险问答机器人,公司成功与国内若干家保险公司、保险经纪公司、保险代理公司达成合作。

  • 设计和开发通用文本分类工具(2017/08~2019/03)
    • 预处理、分词、特征提取等过程均支持配置化,大大提高了在中小数据上进行文本分类的效率
    • 预处理器、分词器、特征提取、分类器等各个模块都可以方便地定制、扩展
    • 被广泛应用于公司各个项目的意图识别、情感分析、垃圾过滤等文本分类相关的业务中
  • 建立通用实体抽取工具(2016/11~2020/12)

    • 使用前文提到的信息抽取框架,实现了常用的细分为二十多类实体的抽取
    • 数字、日期时间等实体的抽取使用正则实现
    • 人名、地名、组织名的抽取基于已有 NLP 工具的 POS 和 NER 结果,并用自己训练的 BiLSTM+CRF 模型作为补充
    • 部分特定领域实体的抽取使用词表和 AC 自动机实现

    该工具作为基础库在公司几乎所有问答项目中被使用,显著提高了各项目实现相关需求时的效率。

  • 设计和开发相似句/同义词挖掘工具(2017/10~2018/03)

    • 使用 LCS、TFIDF+余弦相似、词向量+余弦相似等方法从语料中挖掘相似句子
    • 使用翻译接口直接生成相似句子
    • 对相似句子进行文本对齐,从中挖掘同义词数据,中小数据上效果好于直接按词向量挖掘

    该工具先后用于电商、物业、保险等多个领域的问答项目的初期数据构建,挖掘结果可用率约 30%,在挖掘结果上做 0/1 标注的效率和效果都高于人工直接撰写相似句子、同义词。

  • 开发订餐对话机器人(2016/11~2017/05)

    • 任务式的问答机器人,涉及订餐、查询订单、修改订单、取消订单四个意图及数十个槽位,确定意图后询问用户填充该意图所需槽位
    • 不直接回答而是产生三个候选答案供客服进行选择,上线后 TOP3 采用率稳定在 30% 左右

    该项目是公司第一个正式的商业合作项目,且间接或直接催生了通用实体抽取工具、通用文本分类工具、任务式问答框架等多个基础项目。

北京****网络科技有限公司(2015/03~2016/06)

  • 开发和优化题库搜索系统(2015/04~2016/03)
    • 基于倒排索引实现了一个搜索系统,用于 2000 多万题目的搜索
    • Python+Redis 实现,单次搜索耗时 1-2 ms,首位命中率 > 95%
  • 开发和优化扫题用的 OCR 系统(2015/06~2015/11)
    • 使用 OpenCV 进行二值化、去阴影、倾斜矫正、字符检测和切割等图像处理,使用 Caffe 进行字符识别
    • 单字识别率达 96%,OCR+题库搜索正确率约 70%
  • 开发翻译结果自动评分模块(2016/01~2016/03)
    • 对学生提交的翻译结果,和标准答案对比,给出评分
    • 使用 METEOR 算法,与人工评价之间的 RMSE 约为 1.5(15 分制)

****技术(北京)有限公司(2014/03~2015/02)

  • 研究和实现说话人分割技术(2014/06~2015/01)
    • 在大规模语音数据训练出来的人声 GMM 上做最大后验估计得到内容无关的音频特征
    • 将音频切成小段并去除非人声后,对邻近段落使用层次聚类来区分出不同的说话人
    • 在两人对话场景下正确率 > 90%,处理时长与音频时长比 < 0.03
  • 研究并实现语音与文本融合的多模态情感分析(2014/09~2015/01)
    • 混合语音特征和文本特征,使用 SVM 进行分类,正确率 > 90%