nlp中的文本表示
nlp中的文本表示分离散表示和分布表示,离散表示有one-hot、bow、ngram,分布表示有共现矩阵、word2vec、glove等
one-hot
- 对词进行编码
- 在一个语料库中,给每个字/词编码一个索引,根据索引进行one-hot表示。
- 假设预料库如下:
John likes to watch movies. Mary likes too.
John also likes to watch football games.
- 对出现的单子进行索引编码:
{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also":6, "football": 7, "games": 8, "Mary": 9, "too": 10}
- 每个单子都可以用one-hot表示
John: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
likes: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]
...
- 缺点
1. 词向量长度是词典长度,高维稀疏矩阵,浪费计算和存储资源
2. 不同词的向量表示互相正交,无法表达单词与单词之间的相似程度
3. 词向量只能反映某个词是否在句中出现,无法衡量不同词的重要程度
bag of words
- 对文本进行编码
- 一段文本(比如一个句子或是一个文档)可以用一个装着这些词的袋子来表示,这种表示方式不考虑文法以及词的顺序
基础版本
- 在词袋模型中不考虑语序和词法的信息,每个单词都是相互独立的,将词语放入一个“袋子”里,统计每个单词出现的频率
- 一个计数编码的例子
John likes to watch movies. Mary likes too. -->> [1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
John also likes to watch football games. -->> [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]
- 缺点
1. 忽略词的位置信息,词的位置不一样语义会有很大的差别(如 “猫爱吃老鼠” 和 “老鼠爱吃猫” 的编码一样)
2. 但仅仅通过“出现次数”无法区分常用词(如:“我”、“是”、“的”等)和关键词(如:“自然语言处理”、“NLP ”等)在文本中的重要程度
升级版本
- 为了解决基础版本词袋模型无法区分常用词(如:“是”、“的”等)和专有名词(如:“自然语言处理”、“NLP ”等)对文本的重要性的问题,我们尝试用tf-idf算法
- 缺点
1. 不能反映词的位置信息,在对关键词进行提取时,词的位置信息(如:标题、句首、句尾的词应该赋予更高的权重)
2. IDF是一种试图抑制噪声的加权,本身倾向于文本中频率比较小的词,这使得IDF的精度不高
3. TF-IDF严重依赖于语料库(尤其在训练同类语料库时,往往会掩盖一些同类型的关键词;如:在进行TF-IDF训练时,语料库中的娱乐新闻较多,则与娱乐相关的关键词的权重就会偏低),因此需要选取质量高的语料库进行训练
共现矩阵
- 共现矩阵一般会用SVD等手段进行分解降维
- https://zhuanlan.zhihu.com/p/147312345
bi-gram和n-gram(离散表示)
- https://zhuanlan.zhihu.com/p/32829048
- https://www.cnblogs.com/hithink/p/12107622.html
- https://www.cnblogs.com/chason95/articles/10746960.html
- https://blog.csdn.net/jiede1/article/details/80803171
word2vec
- 入门必看:https://zhuanlan.zhihu.com/p/26306795
- 在线工具:https://ronxin.github.io/wevi/
- 图文并茂:http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/
- 图文并茂:https://www.zhihu.com/question/44832436 (通过例子说明word2vec如何得到词向量)
- 图文并茂:https://zhuanlan.zhihu.com/p/35074402
- 图文并茂:http://home.iitj.ac.in/~suman/courses/csl7030/students_blog/jeevan_madugunda/
- 图文并茂:https://aegis4048.github.io/demystifying_neural_network_in_skip_gram_language_modeling
- https://zhuanlan.zhihu.com/p/40096816
- https://zhuanlan.zhihu.com/p/61635013
- https://kexue.fm/usr/uploads/2017/04/146269300.pdf
- https://zh.wikipedia.org/wiki/Word2vec
词向量总结
- https://zhuanlan.zhihu.com/p/42310942
- https://www.cnblogs.com/sandwichnlp/p/11596848.html
- https://www.infoq.cn/article/pfvzxggdm27453bbs24w
- https://www.jiqizhixin.com/articles/2018-11-07-15
- https://cloud.tencent.com/developer/article/1476038
- https://easyai.tech/blog/nlp-领域里的8-种文本表示方式及优缺点/
- https://blog.csdn.net/App_12062011/article/details/88376246