1. 停用词过滤
对于 NLP的应用,我们通常先把停用词、出现频率很低的词汇过滤掉。类似于特征筛选的过程。
少于10次或20次的可以作为低频词去掉。
2. 词的标准化操作(主要是英文)
stemming:将类似词转换成统一格式,但词不一定是实际词。如 fli, deni。。。PORTSTEMMER
lemmazation:与stemming区别是转换成统一格式的词,该词是真实存在的。
stemm 的规则 :需要语言学家把一些常见的变换转化成代码 。
3. 词/句子/文章 转换成向量的方法
3.1 onehot编码
词典词的个数是编码的维度
3.2 句子的boolean表示(跟onehot类似)
3.3 句子的表示(count): 标记词的出现次数
缺点:出现的频次高,并不一定重要,频次低的词可能很重要。但这种方法并不能展示出来。
3.4 TF-IDF 表示方法
TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术,常用于挖掘文章中的关键词,而且算法简单高效,常被工业用于最开始的文本数据清洗。
TF-IDF有两层意思,一层是"词频"(Term Frequency,缩写为TF),另一层是"逆文档频率"(Inverse Document Frequency,缩写为IDF)。
优缺点:
TF-IDF的优点是简单快速,而且容易理解。
缺点是有时候用词频来衡量文章中的一个词的重要性不够全面,有时候重要的词出现的可能不够多,而且这种计算无法体现位置信息,无法体现词在上下文的重要性。如果要体现词的上下文结构,那么你可能需要使用word2vec算法来支持。
4. 词/句子的相似度的表示
4.1 欧式距离表示法
缺点:向量是有方向的,欧式距离并没有反应出两个向量的方向性。
4.2 夹角余弦相似度(用的最多)
等于两个向量的内积除以向量的摸长。即夹角的余弦cos 阿尔法。越大说明相似度越高。
onehot编码的缺点: 1.不能表示词与词之间的相似度 2. 稀疏性(sparsity)
词库单词很多(比如10^5) 而一句话可能只有七八个词组成。onehot 的10^5-8个位置都是0,太稀疏。
解决方法:分布式表达方法。distributed representation
词嵌入模型:如word2vec, RNN/LSTM等都可将词用分布式词向量表示出来。
word2vec 词向量某种程度上理解成词的意思。
那如何计算两个句子或两篇文章的相似度呢,如下图,可以将句子每个词用1,平均法则 或 2,RNN/LSTM 方法转换成向量表示再求夹角余弦或欧氏距离。