NLP
两大流派: 1.知识图谱: 将特定领域的知识通过三元组地形式结构化,如果能够造出在子领域内地知识图谱, 那么就将领域内的全部实体概念囊括,从而通过点到点的学习进而实现自主学习的目的。三元组可以最大程度获得自然世界中的联系,从而模拟人类学习的过程。
2.深度学习: 利用机器提取特征表达数据,深度学习网络自动提取信息的能力,提取出来的特征通过非线性映射得到结果。 主要发展方向:如何更加高效地抽取出文本中地特征。 NLP未来的发展方向: 1.pretrain+ finetune pretrain: 大语料、无监督、深模型获得语义表示 微调:在下游任务中添加具体的语义信息实现任务 2.强化学习 通过动作(反馈)训练(重点:获得环境对动作的反馈)
genism:词向量库 如word2vec collections:统计处理数据库 (处理list、 tuple、 set等特殊操作) json: 格式化的操作数据 json有何优势? json在读取添加方面有优势,其与python中的dict数据类型一致(python中的dict查找,插入都是O(1)比list快很多)
获得数据--->数据预处理---> 语义表示---->特征抽样与非线性映射 词向量 CNN onehot RNN tf-idf CRNN 预训练模型微调 GNN
python字符串有两种类型: str、bytes 中文编码 str 中文最好的编码方式Unicode(python3默认) python2默认为gbk、gb1203,可以指定 若python2不知用的什么格式,那就先解码为unicode再编码为需要的格式,如utf-8,gbk(比较麻烦) bytes linux默认utf-8 windows默认gbk 若编码不是utf-8,gbk,不能写入中文,也不能读取中文。python2有时无法读取,无法用gbk读取其他编码
爬虫: urllib: 通过请求获取html文件 re及bs4: 用来处理html selenium:自动化测试(虚拟浏览器)
描述头文件,用代理池等反爬
重定位: 从html,css文件中找到 分词: jieba: 优秀的中文分词第三方词库 ---中文文本需要通过分词获得单个词语 ---需要额外安装
原理: 通过词图扫描,生成所有词情况所构成的有向无环图,维特比解码,得到概率最大的分词方法 FMM:中文名:最大正则匹配,实际项目中,某些领域分词工具的效果不是很好,那就基于规则实现 作业:根据伪代码实现, (腾讯面试题,如何改进/*/)
特点:速度较慢
辅助手段: 人工校订:专业领域名词,力求精准,如每年网络新词 每一环节精准一点点,可以提升巨大 1.01的365次方 面试题:为何需要人工校订 (/*/)
什么叫作OOV数据? 未登录词(Out-of-vocabulary)就是训练时未出现,测试时出现了的单词。在自然语言处理或者文本处理的时候,我们通常会有一个字词库(vocabulary)。这个vocabulary要么是提前加载的,或者是自己定义的,或者是从当前数据集提取的。假设之后你有了另一个的数据集,这个数据集中有一些词并不在你现有的vocabulary里,我们就说这些词汇是Out-of-vocabulary,简称OOV。