这个疫情整的,胖了好几斤~
因为最近业务非常繁忙,系统迭代的非常快,手中需求已经排到2个月后了,所以NLP相关知识产出缓慢,浩姐又不让我占用工作时间,我&%¥#%%……&
上次文章简单总结了一下NLP相关的知识。具体到实际的中文NLP还是有些不同的。写篇文章总结一波。
中文NLP语料预处理的四个步骤
中文分词 – Chinese Word Segmentation
三大难点
- 没有统计的标准
- 歧义如何切分
- 新词如何识别
三种典型的分词方式
常见的分词器都是使用机器学习算法和词典相结合,一方面能够提高分词准确率,另一方面能够改善领域适应性。
- 基于词典匹配
基本思想是基于词典匹配,将待分词的中文文本根据一定规则切分和调整,然后跟词典中的词语进行匹配,匹配成功则按照词典的词分词,匹配失败通过调整或者重新选择,如此反复循环即可。代表方法有基于正向最大匹配和基于逆向最大匹配及双向匹配法。
优点:速度快、成本低
缺点:适应性不强,不同领域效果差异大
- 基于统计
这类目前常用的是算法是HMM、CRF、SVM、深度学习等算法,比如stanford、Hanlp分词工具是基于CRF算法。以CRF为例,基本思路是对汉字进行标注训练,不仅考虑了词语出现的频率,还考虑上下文,具备较好的学习能力,因此其对歧义词和未登录词的识别都具有良好的效果。
优点:适应性较强
缺点:成本较高,速度较慢
- 基于深度学习
例如有人员尝试使用双向LSTM+CRF实现分词器,其本质上是序列标注,所以有通用性,命名实体识别等都可以使用该模型,据报道其分词器字符准确率可高达97.5%。
优点:准确率高、适应性强
缺点:成本高,速度慢
词性标注 – Parts of Speech
四种常见方法
- 基于规则的词性标注方法
- 基于统计模型的词性标注方法
- 基于统计方法与规则方法相结合的词性标注方法
- 基于深度学习的词性标注方法:可以当作序列标注的任务来做,目前深度学习解决序列标注任务常用方法包括LSTM+CRF、BiLSTM+CRF等。
工具推荐
- Jieba:“结巴”中文分词:做最好的 Python 中文分词组件,可以进行词性标注
- SnowNLP:SnowNLP是一个python写的类库,可以方便的处理中文文本内容。
- THULAC:THULAC(THU Lexical Analyzer for Chinese)由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。
- HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。
中文中最好的应该就是结巴了
命名实体识别 – NER
四类常见的实现方式
- 有监督的学习方法
- 半监督的学习方法:
- 无监督的学习方法
- 混合方法
以上都还是知识理论层面的总结和调研。具体实施是使用TensorFlow呢还是其他类库(手撸肯定不现实),还得继续调研和写一些demo看看。 且,因为AI指定语言是python,而我的python水平还停留在hello world的水平,所以,路漫漫兮修远兮啊~
搞不懂为啥要我一个jscoder,来写一个python项目。
文章评论