分两部分做. 第一部分是无损文本压缩, 第二部分是sentence level text summarization, 唤作有损文本压缩. 这部分就放弃了, 估计做不出来, 没必要庸人自扰.
不要对第二部分寄太高期望, 因为大概率完不成, 毕竟我对这一领域之前毫无接触. 果然, 你个小辣鸡.
实验, 压缩html, 利用rnn的对结构性语义的学习能力.
无损文本压缩
整体引入. 互联网产生文本太多(?是否是伪命题?)存储和传播如果不进行压缩很不经济. 在安装NLTK语料库的时候, 将近300M的文本也下载了很久. (更多例子, 网文等, 说明文本压缩的意义)
信息论. 要有数学的成分, 主要说明, 编码与信息熵. 介绍哈弗曼编码, 理论计算用哈弗曼编码对brown语料库逐字符和逐词压缩的压缩率. 介绍算数编码. 说明算数编码的优越性.
模块化算数编码部分, 完全分离编码和模型. 即编码只负责按频率区间划分以及落在的区间进行编码, 解码就反过来, 按区间划分与所落在的区间解码. 做成API来调用. (是否用C++来完成会更好?即python 内嵌C++ ref2 ref3)
简要综述数据压缩. 说明数据压缩=编码+模型. 然后说明, 编码是已经解决的问题, 而模型更多是一个ai problem. 参考老爷子的书
PPM. 用python复现一个PPM来压缩brown语料库(or 整个语料库, 这样能和300M做对比233). 注意使用nltk中的自带的函数, 用n-gram代替上文的说法, 用FreqDist来做统计. (感觉复杂度要爆炸)
引入文本预测, LSTM. 参考多方资料, 现有Stanford一篇, 再看看CMIX和PAQ8的做法, 这方面研究应该前人做透了. 做benchmark, 如压一下enwiki8. 能做到state of art就美滋滋了.
似乎LSTM是做Context Mixing的? 预测字符仿佛用的是rnn? 这里是karpathy对rnn的说明, 以及他基于rnn的逐字符文本生成实现.
LSTM的几个实现
https://github.com/kedartatwawadi/NN_compression 这个仿佛就是Stanford那个家伙...
https://github.com/byronknoll/lstm-compress CMIX的实现, 竟然是手写反向传播...orz
有损文本压缩
关注sentence level text summarization.
两方面, 一方面是传统做法, 试图对句子结构做分析, 采用已有标注的语料, 化简句子结构.
另一方面是注意力模型的神经网络. 参考: 文本摘要-Text Summarization 当深度学习遇见自动文本摘要