自然语言理解
文本是区别于连续特征与分类特征的第三种类型的特征。
字符串表示的数据类型
字符串数据可以分成四类:
- 分类数据
- 可以在语义上映射为类别的自由字符串
- 结构化字符串数据
- 文本数据
在文本分析的语境中,数据集通常被称为语料库,每个由单个文本表示的数据点被称为文档。
词袋
词袋: 舍弃输入文本的大部分结构,只计算语料库中每个单词在每个文本中的出现频次
步骤
- 分词 将文档划分为单词
- 构建词表 收集词表且进行编号
- 编码 计算单词在文档中的出现频率
注: 原始字符串中的单词顺序与词袋特征表示完全无关
停用词
删除没有信息量的单词的方法就是舍弃那些出现次数太多以致于没有信息量的单词
- 使用特定语言的停用词
- 舍弃那些出现过于频繁的单词
tf-idf缩放数据
按照预计的特征信息量大小来缩放特征,而不是舍弃那些认为不重要的特征。
最常见的方法,使用词频-逆向文档频率。在某个特定文档中经常出现的术语给予很高的权重,但对许多文档中多经常出现的术语给予的权重并不高。
单词w在文档d中的tf-idf分数
t
f
i
d
f
(
w
,
d
)
=
t
f
∗
l
o
g
(
N
+
1
N
w
+
1
)
+
1
tfidf(w,d)=tf*log(\frac{N+1}{N_w+1}) \quad+1
tfidf(w,d)=tf∗log(Nw+1N+1)+1
- N:训练集中的文档数量
- Nw:训练集中出现w的文档数量
- tf(词频):单词w在查询文档d中出现的次数
注:tf-idf缩放的目的是找到能够区分文档的单词,完全是一种无监督技术
tf-idf较小的特征要么是很常用,要么是很少用且仅出现在非常长的文档中
n元分词
使用(一元分词)词袋的主要缺点之一是完全舍弃了单词顺序。
n元分词:不仅考虑单一词例的计数,而且还考虑相邻的两个或三个词例的计数
从原则上说,n元分词的数量是一元分词数量的n次方,从而导致非常大的特征空间
高级分词
词干提取:找出(或合并)所有具有相同词干的单词
词形还原:如果使用的是有已知单词形式组成的字典,且考虑了单词在句子中的作用
词元:单词的标准化形式
标准化:尝试提取一个单词的某种标准形式,例如拼写校正
词形还原可以被看作是一种正则化,因为它合并了某些特征。数据集很小时词形还原对性能的提升最大
主体建模与文档聚类
将每个文档分配给一个或多个主题的任务(通常是无监督的)的概括性术语。
隐含狄利克雷分布(LDA)
试图找出频繁共同出现的单词词组(即主体)。要求每个文档可以被理解为主题子集的“混合”。LDA最终提取的成分可能有语义,也可能没有。
LDA算法是随机的,改变随机种子参数可能会得到完全不同的结果。