1、文本预处理技术
分词:前向/后向最大匹配(max_len=5~10)有一个词典,基于匹配规则的方法,尽量匹配更多的字符。缺点:局部最优,歧义。考虑语义HMM,CRF......
拼写纠错:编辑距离(一次insertdelete eplace),先生成编辑距离为1、2的字符串再过滤,返回最可能的结果。
停用词过滤:去掉the,a等词,和某些低频词
词干提取:go,going,went变成go,去掉s,es,ed......依赖于语言学知识编写规则
2、词表示
one-hot representation 类似于(1,0,0,0,0.....)维度大小是词典内词的数量,基于这种“独热”的句子的表示分为boolean/count-based representation后者还考虑了词频,而这样是不能很好的表示语义的,具有稀疏性,编码效率不高。
tf-idf文本表示,tf是文档中某词的词频,idf是log(文档总数/某词出现在多少个文档中),相乘来衡量单词的重要性。
分布式表示每一维都是有值的,词向量能够表达语义(skip-gram算法,离越近的词相似度越高的原则)
3、语义相似度的计算
欧式距离d=|s1-s2|
余弦相似度(既考虑大小,又考虑方向)
4、noisy channel model
p( text ∣ source )∝p( source ∣ text ) p (text) 理解就是比如机器翻译,一部分依赖词典转化,另一部分依赖语言模型判断语法是否通顺。
5、语言模型
由链式法则,联合概率由一串条件概率相乘表示,当条件很长时要计算条件概率,考虑马尔可夫假设,只考虑前多少个词,于是有N-gram模型。
考虑只要有一个没出现的单词就会使整个概率变成0,所以引入平滑方法:
Add-one smoothing,Add-k smoothing,Interpolation,Good-turning smoothing
评估语言模型用到的指标是perplexity困惑度(越小越好)
6、文本领域特征工程
词袋特征:当前词、前后词、前前后后词...
词性:包括当前词词性,前后词词性...
前后缀
词长、是否大写开头,是否含数字
词干
一般来说常见的特征有分类型(如男女)、连续型(如身高)、排序型(如ABCD每类有不同rank),一般有归一化、离散化处理。
7、信息抽取
命名实体识别、关系抽取(bootstrapsnowball算法)、实体消歧、实体统一、指代消解、句法分析(句法树CKY算法)
有一种学习方式叫做写作式学习,理清逻辑比较重要。
题外话谈谈知识付费
年初在bilibili上白嫖到一门“贪心学院NLP训练营”的课程,没错就是那据说要一两万的课。由于怕视频失效,所以会强迫自己抓紧时间看,告诉自己多看一集就多赚50了,405P,一周时间,囫囵吞枣过了一遍,收获了了,当时想的是真好啊自己没报这个课也算省钱了,后面看的东西多了一点点再回头看这个课又有些收获,原是我啥也不懂所以那时get不到老师的知识点,子曰:温故而知新,诚不欺我。前几天看到一篇推送说知识付费是智商税,先拉低部分人的智商,让另一部分人先富起来。我觉得很有道理,也不是说知识付费的课都是不值得的,但免费课程它不香吗,不见得免费的课程就是廉价知识啊,当然知识付费也是人家的一种盈利模式吧,是该有好心人为创造者买一下单,顺便造福一下我们穷学党。另一个方面,书非借不能读也,要不是怕过期我也不会这么自觉看下去,毕竟一入收藏夹就不知道要吃灰多久了。