什么是命名实体识别
命名实体识别(Named Entity Recognition,简称NER)是信息提取、问答系统、句法分析、机器翻译等应用领域的重要基础工具,在自然语言处理技术走向实用化的过程中占有重要地位。一般来说,命名实体识别的任务就是识别出待处理文本中三大类(实体类、时间类和数字类)、七小类(人名、机构名、地名、时间、日期、货币和百分比)命名实体。
“小明早上8点去学校上课。”
人名:小明,时间:早上8点,地点:学校。
命名实体识别只能识别名词短语或者是一些领域的专有名词,不适合识别“目的”“对象”这种。
BERT模型
开源的https://github.com/google-research/bert
Bert是由12层双向Transformer搭建而来,重点在于Transformer网络架构
bert 模型本身其实就是transformer encoder 部分
BERT是一个两阶段模型,包括pre-training(预训练)和Fine-tuning(微调)。BERT提出构建一个底层的基础模型来彻底建模上下文关系,而通过fine-tuning来进一步构造出针对特定NLP问题(如NLI,NER等)的特定模型。
Transformer
机器翻译模型中常见的seq2seq
RNN模型图如下,后一个的输入是前一个输出的中间结果,因此各部分不独立,不能并行计算。

Self-Attention:对于输入的数据,关注点不同,如何让计算机关注到这些有价值的信息。
计算机通过上下文判断,不是人为预加的。在生成单词词向量时考虑上下文语境。
https://blog.csdn.net/weixin_40871455/article/details/86084560

传统word2vec的问题是不同语境中相同的词如何表达,bert的改进是结合上下文预训练
代码框架
坑1:想用官方小例子(MRPC)试一下,但是在通过脚本下载GLUE数据时出现错误
解决:
- 先手动下载dev_ids.tsv映射表保存在glue_data/MRPC文件夹下,浏览器访问这个链接
- 注释掉脚本download_glue_data.py里下载dev_ids.tsv文件的语句
# urllib.request.urlretrieve(TASK2PATH[“MRPC”], os.path.join(mrpc_dir, “dev_ids.tsv”))
去微软官网下载:https://www.microsoft.com/en-ca/download/details.aspx?id=52398
将 msr_paraphrase_test.txt, msr_paraphrase_train.txt放在MRPC文件夹中。在运行download_glue_data.py,就可以成功下载数据了,在glue_data/MRPC文件下出现 dev.tsv,test.tsv,train.tsv这三个文件,说明MRPC语料下载成功。
坑2:tensorflow版本太高,需要1.x,但是python3.8以上只支持2.x
解决:
- 在Anaconda中安装虚拟python环境,python版本低一点,3.6就可以
conda create -n py36 python=3.6
- 激活python3.6版本,使用命令:
activate py36
- 之后pip install tensorflow==1.15.0,就可以成功安装了。
参考资料:
https://www.jianshu.com/p/16e1f6a7aaef