在之前学校的时候用人工标注数据,CRF++实现了一个关于招聘信息的命名实体识别。(前面的文章有写,自自行寻找。)
参加工作以后发现之前虽然实现了命名实体识别,但是实体并没有识别到详细的类别上。
因为自己目前在医疗行业,实际需求是不但要识别出哪些实体,还要识别出实体是属于哪个类别的实体。比如,心脏病是一个实体,还要识别出他是一个病DIS,那么标记就变成了:
心 B-DIS
脏 I-DIS
病 E-DIS
而不是之前的:
心 B
脏 I
病 E
这样在数据集准备的手段和方法就会有所差别,之前手工标注(职位要求:1,懂【大数据】,会【Python】,有经验。。)这样的手段就比较困难了。需要另一种手段来:
1,通过爬虫各种收集手段,先尽可能的构建出领域的词典,并标明实体类别,例如:心脏病 DIS,头晕 DYM,
2,运用现有的工具jieba转为词性是别的方式来,将上面的词典和实体类别加进去。再写程序转变成我们需要的样子,但是可能会有错,因此需要人工再审核一遍,才能真的作为我们的训练数据。
当然,完全可以通过以前的CRF++的方法,加人工,快数扩大我们的词典(心脏病 DIS,头晕 DYM。。。),缩短数据集准备的时间。
有了数据集就可以挑机器学习算法了,CRF++,或者膨胀卷积神经网络,因为CRF++一般只能看见前后两个词,而医学上的识别可能长达十几个词,因此选着膨胀卷积神经网络比较适合。训练处的模型时有预测能力的,未登录词也能识别,这就是深度学习根据上下文预测的好处。