Processing Text data:
假设给定一个文本,S=”I love you,you love him”,下面讲述第一阶段的文本处理过程。
step1. Tokenization(text to words)
将该文本拆分成一个词“token”列表,得到L=[“I”, “love”, “you”, “,” ,”you”, “love”, “him”]
step2. Count word Frequencies
假如上面的句子已经加入词典,则词典列表如下:
Key(word) | Value(frequency) |
I | 1 |
love | 2 |
you | 2 |
, | 1 |
him | 1 |
若再出现一个句子,S2=”He love another”
则词表就变成
Key(word) | Value(frequency) |
I | 1 |
love | 3 |
you | 2 |
, | 1 |
him | 1 |
another | 1 |
He | 1 |
我们将词表按照词频降序排序则得到
Key(word) | Value(frequency) |
love | 3 |
you | 2 |
, | 1 |
him | 1 |
another | 1 |
He | 1 |
I | 1 |
再将词频换成顺序索引“index“则得到
Key(word) | Value(index) |
love | 1 |
you | 2 |
, | 3 |
him | 4 |
another | 5 |
He | 6 |
I | 7 |
这样我们就得到了词典““vocabulary“,如果分词后词典数量足够大,如超过10k个,则我们可以简单地根据词频将vocabulary的个数压缩到10k个以内。删掉低频词就可以大幅减少词汇量,也就大大降低one-hot向量维度。
step3. one-hot encoding
接着我们就可以根据vocabulary的index来将单词进行编码,
例如,[“I”, “love”, “you”, “,” ,”you”, “love”, “him”] ——> [7,1,2,3,2,1,4]
总结上述过程如下:
step4. align sequences
在文本处理时,难免会碰到句子长度不一的问题,所以就需要将文本长度保持一致,一般的做法是固定一个长度值,过长的文本截断,过短的文本补空,如下图:
这样就能够使得所有文本长度一致:
参考网址:
如果能看YouTube的话可以看视频学习,王老师的课非常容易理解(可以说一句废话都没有):
https://www.youtube.com/watch?v=6_2_2CPB97s&list=PLvOO0btloRnuTUGN4XqO85eKPeFSZsEqK&index=2