1. 背景知识介绍¶
以下主要介绍文本情感分析模型以及相关的评测算法的一些背景知识。
1.1. 名词解释¶
余弦距离¶
对于两个相同维数的非零向量 \(\mathbf {A}\) 与 \(\mathbf {B}\) ,他们的余弦相似度定义为
\[{\displaystyle {\operatorname{CosSim}(\mathbf {A}, \mathbf {B})}={\mathbf {A} \cdot \mathbf {B} \over \|\mathbf {A} \|\|\mathbf {B} \|}={\frac {\sum \limits_{i=1}^{n}{A_{i}B_{i}}}{{\sqrt {\sum \limits_{i=1}^{n}{A_{i}^{2}}}}{\sqrt {\sum \limits _{i=1}^{n}{B_{i}^{2}}}}}}}\]
分词¶
分词是中文文本自然语言处理相较于英文文本自然语言处理需要额外进行的预处理工作。因为没有像空格那样的分隔符,当需要进行词级别的操作的时候,需要对中文文本进行分词的操作,例如“我爱北京天安门”应被被分词器分为“我”“爱”“北京”“天安门”。
停用词(stop words)¶
停用词一般指的是语言中出现频率极高的词,这些词包括并无实际意义的功能词,例如“了”,“呢”;或是泛用性很强的词,例如“然后”。文本自然语言处理很多时候需要在预处理的时候把这类词去掉。
词性(part-of-speech)¶
词性,又称词类是一个语言学术语,是一种语言中词的语法分类,是以语法特征(包括句法功能和形态变化)为主要依据、兼顾词汇意义对词进行划分的结果,例如名词,动词,形容词,副词等。这些划分还可以进行进一步细化分类,例如名词可以进一步细分为普通名词,方位名词,处所名词,人名,地名等。以下是比较有代表性的 python
包 jieba
在 paddle
模式下的词性(POS)和专名类别(NER, name entity recognition)标签集合
标签 |
含义 |
标签 |
含义 |
标签 |
含义 |
标签 |
含义 |
---|---|---|---|---|---|---|---|
n |
普通名词 |
f |
方位名词 |
s |
处所名词 |
t |
时间 |
nr |
人名 |
ns |
地名 |
nt |
机构名 |
nw |
作品名 |
nz |
其他专名 |
v |
普通动词 |
vd |
动副词 |
vn |
名动词 |
a |
形容词 |
ad |
副形词 |
an |
名形词 |
d |
副词 |
m |
数量词 |
q |
量词 |
r |
代词 |
p |
介词 |
c |
连词 |
u |
助词 |
xc |
其他虚词 |
w |
标点符号 |
PER |
人名 |
LOC |
地名 |
ORG |
机构名 |
TIME |
时间 |
1.2. 文本攻击粒度¶
字符(字母)级别攻击¶
字符(字母)级别攻击方式包括相邻字符交换,添加、删除、替换字符以及对某些字符进行重复等方式。
单词级别攻击¶
单词级别攻击方式包括同义词替换,添加单词,删除单词等方式。
句子级别攻击¶
句子级别攻击方式包括添加句子,调换句子的位置,或者改写(paraphrasing)等方式。
1.3. 文本攻击限制条件¶
文本由于其特殊性,在对模型进行攻击,生成对抗样本的时候,不仅仅需要满足扰动足够小,即对向量化的原输入文本 \(x\) 与对抗样本 \(x'\) 有
\[\lVert x - x' \rVert \leqslant \epsilon\]
其中 \(\epsilon\) 是扰动大小,还需要满足一些额外的拼写、语法、语义等条件,例如(待细化):
词替换比例(word modification rate)
词嵌入向量距离(word embedding distance)
词性一致性(part-of-speech consistency)
编辑距离(edit (Levenshtein) distance)
语法错误数(一般可以通过语法检查器进行语法错误检查与计数)
语义相似度(一般可以通过句编码模型,例如Universal Sentence Encoder,向量化之后的余弦距离进行度量)
1.4. 文本攻击效果评价方法¶
除了 攻击成功率 (attack success rate),以及 攻击效率 (平均单次攻击尝试次数以及花费时间)之外,文本攻击限制条件中大部分项目也能作为文本攻击效果评价的方法。