Google BERT应用之《红楼梦》对话人物提取
Google BERT应用之《红楼梦》对话人物提取 | 机器之心 (jiqizhixin.com)
之前看到过一篇文章,通过提取文章中对话的人物,分析人物之间的关系,很好奇如何通过编程的方式知道一句话是谁说的。但是遍搜网络没有发现类似的研究。
前段时间看到一个微信里的读书小程序,将人物对话都提取出来,将一本书的内容通过微信对话的方式表达出来,通过将对话的主角替换成读者的微信号以及用户头像,从而增加读者的代入感。试了之后非常佩服程序作者的巧思。这使得我写一个自然语言处理程序,提取书中对话,以及对话人物的念头更加强烈。
之前并没有多少 NLP 的经验,只零碎试过用 LSTM 训练写唐诗,用 jieba 做分词,用 Google 的 gensim 在 WikiPedia 中文语料上训练词向量。最近 Google 的 BERT 模型很火,运行了 BERT 的 SQuAD 阅读理解与问答系统,分类器以及特征提取例子之后,觉得这个任务可以用 BERT 微调来完成,在这里记录实验的粗略步骤,与君共勉。
我把训练数据和准备数据的脚本开源,放在 GitLab 上,开放下载。
该目录包含以下内容:
- 用于提取对话人物语境的脚本 conversation_extraction.ipynb;
- 辅助打标签的脚本 label_data_by_click_buttons.ipynb;
- 提取出的语境文件:honglou.py;
打过标签的训练数据:label_honglou.txt;
从打过标签的数据合成百万级别新数据的脚本:augment_data.py;
将训练数据转换为 BERT/SQUAD 可读的脚本:prepare_squad_data.py;
预测结果文件:res.txt(使用 36000 组数据训练后的预测结果);
预测结果文件:res_1p2million.txt(使用 120万 组数据训练后的预测结果)。