自然语言处理之输入层(一)
前言
NLP中的一些基本步骤和方法简介
一、文本预处理
1.预处理步骤
(1)Tokenization
注意:在做tokenization时,还需要考虑:
- upper case to lower case?但是 有些大写字母有特殊含义比如:Apple和apple,前者表示苹果公司,后者表示苹果;
- remove stop words,去除停留词,比如:a, the, and
- Typo correction: 对单词纠错,比如:“goooood”,“coool” ->“good”,"cool"等等
(2) Build dictionary
- 可以使用哈希表结构,对文本单词进行频率统计
2.按照词频进行排序,从1开始(注意:不建议从0开始,0可以表示数据库中未知数据);
3.如果词袋过大,可以选择只保留高频词汇,去除低频词,因为大部分低频词可能为:一些人名/地名 or 拼写错误单词等;此外,可以防止one hot vectors 维度过大,降低计算量,同时避免模型参数过多导致的over-fitting;
(3)one hot ecoding
将单词表示成one hot 向量,比如:
[“American”,“China”,“Indian”] 可以表示为[“100”,“010”,“001”]
这样,“American”+“China” 可以表示为[“110”]
(3)Align sequences
1.将训练数据进行对齐,使其序列长度相同,有下面几个方法:若只保留K个单词,若序列单词大于K,可以去除头部或者尾部多于单词;若序列单词少于K个,可以用0来补齐
二、词嵌入(Word Embedding)
1.one hot encoding
2.word embedding
通过将词向量乘上一个参数P的转置矩阵,以此得到一个低纬度向量:其中,参数d是由自己来确定的,可以由cross validation 来选择,参数v是单词的总数,也是词向量的长度;