在线时间 1630 小时 最后登录 2024-1-29 注册时间 2017-5-16 听众数 82 收听数 1 能力 120 分 体力 570806 点 威望 12 点 阅读权限 255 积分 176465 相册 1 日志 0 记录 0 帖子 5313 主题 5273 精华 3 分享 0 好友 163
TA的每日心情 开心 2021-8-11 17:59
签到天数: 17 天
[LV.4]偶尔看看III
网络挑战赛参赛者
网络挑战赛参赛者
自我介绍 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
群组 : 2018美赛大象算法课程
群组 : 2018美赛护航培训课程
群组 : 2019年 数学中国站长建
群组 : 2019年数据分析师课程
群组 : 2018年大象老师国赛优
【文本匹配】交互型模型
% I( ~ e% j1 F% {7 u0 C ]+ P9 B7 H3 W5 b* ?! H: X
表示型的文本匹配模型存在两大问题:(1)对各文本抽取的仅仅是最后的语义向量,其中的信息损失难以衡量;(2)缺乏对文本pair间词法、句法信息的比较
& J, Y) u" w5 `6 l7 ?- C
, L! f6 r2 j1 f% {4 k+ N# Y$ r 而交互型的文本匹配模型通过尽早在文本pair间进行信息交互,能够改善上述问题。
/ {, D1 m" X; a ( t' b4 p+ t0 ~0 H$ r$ C4 p% l c! c
基于交互的匹配模型的基本结构包括:1 N' i0 Q6 a; ~
1 s+ G- z) g) q6 F" A (1)嵌入层,即文本细粒度的嵌入表示;
, u& S# @7 ?5 J$ B* o
# y3 M: o( B( L, M j (2)编码层,在嵌入表示的基础上进一步编码;
' e1 \4 X" C9 H- i
' w2 }3 c# u( p8 ^) Q* J- V4 s/ U (3)匹配层:将文本对的编码层输出进行交互、对比,得到各文本强化后的向量表征,或者直接得到统一的向量表征;
( |# N# Z- u7 Q J: {3 o
: h! h: M, f% K- s2 V (4)融合层:对匹配层输出向量进一步压缩、融合;
. C; T1 z5 ^0 c 7 e* p5 }2 I. T9 y: ~, C
(5)预测层:基于文本对融合后的向量进行文本关系的预测。
# W; V/ u: x/ M& X * D- q# Q$ X' L5 J9 ]4 Z+ I" t6 W
1 ?! M- q& T1 L: F) ^ @) y% y
# q8 }: a2 j; |: D 1. ARC-II$ M5 e. n+ E1 K! H9 h+ v: F
ARC-II模型是和表示型模型ARC-I模型在同一篇论文中提出的姊妹模型,采用pair-wise ranking loss的目标函数。
6 J+ Q# ~8 M$ ?' x6 o
o- o( T# h3 |; d/ A 其核心结构为匹配层的设计:
% J5 N0 F% p Y" _ j& ~3 n2 {( K/ G8 R
(1)对文本pair的n-gram Embedding结果进行拼接,然后利用1-D CNN得到文本S_X中任一token i和文本S_Y中任一token j的交互张量元素M_{ij}。该操作既然考虑了n-gram滑动窗口对于local信息的捕捉,也通过拼接实现了文本pair间低层级的交互。
" @# O3 L- k) C( Z4 p% J+ h( H* z; ~1 P
9 g* x2 {$ ~6 K) Y) O! G7 _ (2)对交互张量进行堆叠的global max-pooling和2D-CNN操作,从而扩大感受野。+ F+ V$ Q& L9 r) { F' A! Z
" @: G* p7 Q8 [7 H. y( L2 ]
2. PairCNN6 E1 c# `# p/ T3 B0 X$ B
PairCNN并没有选择在Embedding后直接进行query-doc间的交互,而是首先通过TextCNN的方式分别得到query和doc的向量表征,然后通过一个中间Matrix对query和doc向量进行交互得到pair的相似度向量,然后将query的向量表征、doc的向量表征、相似度向量以及其它的特征向量进行拼接,最后经过两层的MPL得到最后的二分类向量。1 G6 Y7 M- ?* ]* v& {
4 g* w5 S+ m8 w7 T1 i% l; l PairCNN的模型架构中的亮点在于各View向量的拼接,既能利用原始的语义向量,还能够很便捷的融入外部特征。
2 I0 L" Z7 J' ^0 A3 U! w* d
& r; g- V4 }8 j1 E 3. MatchPyramid
/ R7 _( s% Y9 U7 _& a 无论是ARC-II中的n-gram拼接+1D conv还是Pair-CNN中的中间Matrix虽然均通过运算最终达到了信息交互的作用,但其定义还不够显式和明确,MatchPyramid借鉴图像卷积网络的思想,更加显式的定义了细粒度交互的过程。
2 a8 o9 S% \. }* l! F MatchPyramid通过两文本各token embedding间的直接交互构造出匹配矩阵,然后将其视为图片进行2D卷积和2D池化,最后Flatten接MLP计算得匹配分数。本文共提出了三种匹配矩阵的构造方式:
' k, i5 L) `9 ]# k6 z8 | / r1 y6 Z# o' j% r7 d. Y% O
(1)Indicator:0-1型,即一样的token取1,否则取0;这种做法无法涵盖同义多词的情况;
* t8 ]: c- ]' W( C& d
( u& K! ~2 t/ O# v; S9 ~ (2)Cosine:即词向量的夹角余弦;
2 q* d2 T3 v% a- D F
6 Q* P( { b9 |4 B3 O (3)Dot Product:即词向量的内积
* R, p; D6 @; B. @5 ]
" [0 x5 ~ A# a 此外值得注意的是因为各个文本pair中句子长度的不一致,本文并没有采用padding到max-lenght的惯用做法,而是采用了更灵活的动态池化层,以保证MPL层参数个数的固定。
3 `) z% g8 f3 T. I
$ ^. J" L% P! r5 j+ G 4. DecAtt
" z* h1 Z7 m6 ?1 P. Z0 c/ n DecAtt将注意力机制引入到交互型文本匹配模型中,从而得到各token信息交互后增强后的向量表征。* i. f; |) H# f
- v' Y) I) ~& u0 S U$ r6 ] 模型被概括为如下层级模块:
b: D0 `; z, f1 k# P; n
) H1 H( o# H6 e( N. j7 |6 } (1)Attend层:文章提供了两种注意力方案,分别为文本间的cross-attention,以及各文本内的intra-attention。具体而言,分别采用前向网络F和F_{intra}对文本token embedding进行编码,然后通过F(x)F(y)计算cross-attention的score,以及F_{intra}(x)F_{intra}(y)计算self-attention的score。然后利用softmax将attention score进行归一化,再对各token embedding进行加权平均,得到当前query token处的增强表征,最后与原始token embedding进行拼接计为attend后的最终embedding。+ z( ~0 `$ B; s* q* @$ v8 C+ Y' v
( b, N, K' U+ h5 J9 x (2)Compare层:将前序Attend层计算得到的最终embedding,喂入一个全连接层进行向量维度的压缩。
( o& h+ v' I+ M$ ^1 s9 g+ o
& z7 G* e' m/ D! z, O (3)Aggregate层:将每个文本各token处压缩后的向量进行简单的求和,再拼接起来通过MPL得到最后的匹配得分。
, s0 b2 s! T Y- g* t. q' ]
' G4 S7 `2 E- f7 ^: t# D% k; h" P 5. CompAgg
6 h; q% Y+ g% m6 Q* n CompAgg详细对比了在文本间cross-attention得到的各token向量表征与原始token向量进行compare的各种方案。) c/ [( U+ N; l4 H+ E% A. x, } O) B
5 t3 ]) i+ R. e% O
该模型的主要结构包括:6 F7 o# V) L! H! D+ X
9 n6 k; S, v" b& t9 ?$ o
(1)reprocessing层:采用类似于LSTM/GRU的神经网络得到token的深层表示(图中的\bar a_i);
9 f) t$ W, s) p1 W
9 ?% m* j; O2 z6 F4 i2 f (2)Attention层:利用软注意力机制计算文本间的cross-attention(与DecAtt相同),从而得到各token处交互后的向量表示(图中的h_i);
( J0 Q7 g% y7 t# { - N1 E" l6 x8 L. w! W
(3)Comparison层:通过各种网络结构或计算将\bar a_i和h_i计算求得各token的最终表征。; A/ z* N2 C* \3 i( h
: v5 ^; C3 a: W# a
(4)Aggregation层:利用CNN网络对Comparison层的输出进行计算,得到最后的匹配得分。
9 S( F" n# m" n& m$ p 5 s- H o L, W5 g; I7 u
其中Comparison层的构造方式包括:* h5 J! S8 P: M4 j
( b I( \' o3 e( U4 m0 k; X (1)矩阵乘法,类似于Pair-CNN中的中间Matrix. @/ l2 k& R- A
- y( e" E% S/ x& W2 n
(2)前向神经网络,即将\bar a_i和h_i进行拼接,然后利用输入FFN;6 D7 x- J) L x( v
9 O9 a& J# V' Y5 I( g (3)分别计算cosine和欧式距离,然后拼接;
+ ]) k0 l. }! f! d$ [
% K5 B3 ]( ^7 F3 K; J% y4 f) m (4)各维度进行减法;
; I8 q8 {1 O( g \: P2 ` : a) ^3 l4 n$ |4 G
(5)各维度进行乘法;
6 q9 E- C6 L/ L0 _9 l- t8 e9 G& V/ ` ) L' W2 z* r* T" ^! Z( d
(6)各维度进行减法和乘法,然后再接一个前向网络。
# \+ G# _" ^, j# d 6 m4 I8 d5 u$ h: v4 Q) h
6. ABCNN" W$ ^) M5 I9 X* I( |( g6 A2 v
ABCNN是将Attention机制作用于BCNN架构的文本匹配模型。
; F2 Z: S- [2 I7 k9 K& B- ]1 l. N' M - Y' P3 q" {$ o1 S
6.1 BCNN
, @/ g1 H1 A2 a, E& K1 s6 D 首先简单介绍下BCNN架构:. \) M0 H/ W( T7 B& n) f
* \( U1 S2 f% z6 K+ a+ G
BCNN的整体结构比较简单:(1)输入层;(2)卷积层,因为采用了反卷积的形式,所以在size上会增加;6 Y! ^* Q1 B! A+ }
% y" v6 Q/ x) q _* |* Z
(3)池化层,采用了两种池化模式,在模型开始阶段采用的是local平均池化,在最后句子向量的抽取时采用了global平均池化;(4)预测层,句子向量拼接后采用LR得到最后的匹配得分。$ `1 {( S1 B' E& `9 I7 y
' O7 L: f" D' g: G# o2 C( K5 D; R ABCNN共包括三种变形,下面依次介绍。% K% S, h0 @0 V% @- a- [
7 d8 f, c6 ^2 i. e( J7 I 6.2 ABCNN
- Y+ f6 C! H G
1 E b" _ ^, c6 D ABCNN-1直接将Attention机制作用于word embedding层,得到phrase 级的词向量表示。区别于CompAgg中的软注意力机制,ABCNN-1直接基于下式得到注意力矩阵: A i j = 1 1 + ∣ x i − y j ∣ A_{ij}=\frac{1}{1+|x_i-y_j|} A , v7 B3 L! t- g4 m3 W$ a
ij5 o9 d! E/ d$ C2 l5 k- p
, m. Q, I5 P& h3 [3 W. a) O: W
=
; A" }7 j7 b5 d1 | J( C 1+∣x
% [1 t3 u' r5 h* d3 n$ d) ? t$ V2 t i
$ K+ A8 n M/ S ) o4 h: e: V- Q# G8 a
−y
. B. [. X. U# d: W j6 k/ p8 U, ~: s }! t( ?
" u& J2 E; `: a2 l5 _/ H! D4 L7 x
∣0 o. h( `+ }4 v
1
1 `6 e+ X8 e+ m ! Z2 X9 S! ]3 P
,然后分别乘以可学习的权重矩阵 W 0 W_0 W
1 c0 z, r! ]& i7 H9 E5 A9 u2 p 0
' l$ E* W- s& ^7 H: S4 I / i. f7 o. {) W7 D/ E. f
和 W 1 W_1 W
8 O9 R. f" n8 U- J% g8 v 1( ?$ w) X2 I! W! E1 X9 d9 M: a0 j
/ x) E `3 v4 c& `( g
得到attetion feature map。& ^! {( C( p8 R% [: `, X6 x
# L4 E! F0 e& X1 Y- `7 ?" a1 e 6.3 ABCNN-2" B( e9 W. c2 [
2 `! i, }3 W' C6 ? ABCNN-2将Attention机制作用于word embedding层后的反卷积层的输出结果,其中注意力矩阵的计算原理与ABCNN-1一致。然后将注意力矩阵沿着row和col的方向分别求和,分别代表着各文本token的attention socre;接着将反卷积层的输出结果与attention socre进行加权平均池化,得到与输入层相同shape的特征图。# X) D+ t& Z: X* } n
1 y8 g$ K& h- q* T, G0 k* q) A
6.4 ABCNN-3
' s- C# u% E; J1 s1 l4 t' n, m) c
2 i( d3 Y ~# E: M( v( T+ v ABCNN-3的基本模块可视为ABCNN-1和ABCNN-2的堆叠,即在嵌入层和卷积层上面都引入了attention的机制用来增强对token向量的表示。
0 E/ M M' i+ Z1 j$ n
; u2 s5 n0 r7 E9 R 7. ESIM1 O2 h% J( J" S: R8 M" y' ~1 K
ESIM模型基于NLI任务给出了一种强有力的交互型匹配方法。其采用了BiLSTM和Tree-LSTM分别对文本序列和文本解析树进行编码,其亮点在于:) e; r9 }' W2 M$ p
9 T/ y9 r, U$ E1 b3 S2 G3 n (1)匹配层定义了cross-attention得到各token的向量表示与原token向量间的详细交互关系,即采用 [ a ˉ , a ^ , a ˉ − a ^ , a ˉ ∗ a ^ ] [\bar a, \hat a,\bar a-\hat a,\bar a* \hat a] [ 3 l& J% Q' X* u
a) P/ j. s) ]+ l% y
ˉ$ H& O: G4 M6 W# F* c
,
% P* I4 i, \$ m% w/ s a1 U- g! N! \! O- l2 H9 ?
^/ ]+ a9 u- ^( ^0 ?% e1 E/ ?6 q, ?6 q
, ) s7 N$ Q, z* o. A
a
+ o3 D3 i& G& ]1 k; ]. B' D; u4 a ˉ3 y6 ~ s1 c9 J6 m# J2 p4 ^% E
−
* ]1 i2 L# z3 ~! i a
8 G" ]& v* h& t9 c0 n5 S& [7 ?/ t ^
" |# H+ y8 r: f3 y8 B, s' B ,
5 a+ ?4 R6 z# H/ i1 j! n4 o a& [. {5 R; P5 \% { t4 P% Q
ˉ2 H& b, Y2 C; W1 f: ^5 v7 k0 k+ `
∗ * g# @& o' N# [/ K1 X' r- @
a
/ M8 ?' }' A, E) p9 V7 j ^
! ^3 l1 e/ e/ m4 ~; N ]作为最终文本token的向量表示,这也成为后续文本匹配模型的惯用做法。
. _% _" _9 R2 C8 a# l 7 n# A( b; t! s4 f) m. r
(2)聚合层通过BiLSTM得到各文本token的编码,从而进一步增强了文本序列的信息传递;
$ K: G; a* [# L: R/ t
& }. P1 L3 s. f2 {; M1 g (3)预测层通过拼接各文本token编码的max-pooling和mean-pooling结果,再经过MPL进行匹配预测。& Z4 o( ^7 z [* T# u4 A
* a0 w" |: w' `' h+ _$ Z5 G
7 ?& G$ G* z. W1 {/ n& d 6 s$ Q/ k9 _/ Y: a( }( [1 l
8. Bimpm
' o7 ^ P ]7 g' d& p Bimpm可视为对之前各类交互型文本匹配模型的一次总结。8 E; N. j% t+ C" O4 S) C4 l# p+ M
6 o1 p/ K0 s6 K
该模型在各层的具体做法总结如下:
8 F2 T5 G$ L3 i1 i' H2 B % ^/ T+ |2 j: ^5 P: u& u) k1 v
(1)编码层采用BiLSTM得到每个token隐层的向量表示;
7 M5 Y/ u! k# `$ I( K " t% }$ C2 }( z( N4 N8 p) z
(2)匹配层遵循 m k = c o s i n e ( W k ∗ v 1 , W k ∗ v 2 ) m_k=cosine(W_k*v_1,W_k*v_2) m
, E: d4 |8 n }4 j' j8 a2 j: P k$ V5 f$ r a" d0 R2 P
. N" O4 r) k8 m7 v6 t =cosine(W 8 U7 H1 n2 `' J& S; i
k0 E; K8 n) G: D# m" S% M; K
9 R/ n W E/ f ∗v / `( r6 v3 V: L5 U! ^, Y
1
/ O. j- A: t( U3 U! m" ], p% r! m
0 ]% Z3 w1 ^1 c r" r* ~" { ,W C# o' V3 g" F8 e. Y( q
k
9 C1 C- f. J; @4 z. M( n 5 o# P9 A3 h! C3 n
∗v $ l* T$ h! a# \* Z% `
25 K& Y/ ]/ K: a9 m$ t
# }: \( i4 B" k: @$ R8 `. D )的方式可以得到两个文本的任意token pair之间在第k个view下的匹配关系,至于 v 1 v_1 v
8 \* _. A6 I+ i 1
6 P' _0 J6 G, D8 Q: v1 o7 _9 j
/ Y7 W5 c; o2 f2 L# ]" F$ r$ q 和 v 2 v_2 v
3 D5 X) n+ |3 D- z* V3 t I/ l! L 2" w' e% P* o3 l; g2 [. U! n
, y8 _( c' L% i5 l
如何取,文章提供了4种策略:1 t+ f7 f' Z4 o' t
& p1 Z% q M* i: c 策略一:其中一个句子取各token隐层的向量表示,另一个句子采用隐层最后时间步处的输出;9 W) @6 A4 _+ B' F
策略二:其中一个句子取各token隐层的向量表示,另一个句子采用隐层各时间步输出与之匹配后取再取Max-Pooling值;
! ?, V! E* }) w$ H9 I5 G/ J% ~- a 策略三:其中一个句子取各token隐层的向量表示,另一个句子采用cross-attentive后得到的加权句子向量;- ^5 T, H- m& g! Y$ c! a9 w
策略四:其中一个句子取各token隐层的向量表示,另一个句子采用cross-attentive后attention score最高处token的向量作为句子向量。
' ]" l! O, O, _' l0 e1 K 这四种策略的区别在于对句子向量的计算不同。% g6 M: w4 H) x, N' t- P4 _! Q1 T
1 p: y$ s3 W' h ?3 T8 q' o# F 5 e( r2 i" p- o7 W3 B
(3)聚合层,首先对上面各种策略得到的输出层再通过一层BiLSTM层,然后将各策略下最后时间步的输出进行拼接,得到最后的聚合向量;% e( H6 X0 I8 O; n" ]1 S4 C2 u
6 I2 t8 n/ V9 ~6 f9 I5 y: x
(4)预测层:两层MPL+softmax
/ E( |1 h3 V/ R9 M* } `1 y
+ [7 B" M( y; g+ x4 X 9. HCAN9 n9 @* Z8 R# I; o+ X1 }# G( c0 g
HCAN是除Bert类模型外在文本匹配领域表现最为优异的深度模型之一,其采用了较为复杂的模型结构。
* Z m3 }, S# R+ y , A& q$ |$ n' _6 K. H2 \. g! b/ F
针对于信息抽取问题,文章首先分析了相关性匹配和语义匹配的差异:* A3 W- M5 q4 }% M7 L: H% _$ h/ J
* k& j( e; N) x* V (1)相关性匹配主要关注于关键词的对比,因此更关注低层级词法、语法结构层面的匹配性;
Z. p {4 y6 u, E2 B 4 t' ?/ e% m, z4 ^
(2)语义匹配代表着文本的平均意义,因此其关注更高、更丑想的语义层面的匹配性。% A- c& `) b% h
: P9 T, M9 `- { t 该模型首先采用三类混合的编码器对query和context进行编码:
' N9 Z1 A9 q. ~; v( r + e' m0 b/ V2 b2 E7 b
(1)深层相同卷积核大小的CNN编码器;
: E2 T) i5 |7 k/ m9 h. Y: Y) \
6 q/ ~0 t! `8 H- G (2)不同卷积核大小的CNN编码器的并行编码; S8 ~/ k6 S @
}; D, L0 e0 ^% [: Z3 s (3)沿着时序方向的stacked BiLSTM编码;. Y& K0 J. K2 l! m+ Z
) g, H# N' c; Z' _7 ` 对于前两者,通过控制卷积核的大小可以更好的捕捉词法和句法特征,即符合相关性匹配的目的;而对于后者,其能表征更长距离的文本意义,满足语义匹配的目的。
% |: K/ _ o7 K) X9 U & W8 k# G `! A" ?3 G4 }5 R
在这三类编码器的编码结果基础上,模型分别进行了相关性匹配和语义匹配操作。其中相关性匹配主要采用各phrase间内积+max pooling/mean pooling的方式获取相关性特征,并通过IDF指进行各phrase的权重调整。而在语义匹配中,模型采用了精心设计的co-attention机制,并最终通过BiLSTM层输出结果。/ Z6 D) T+ J5 _
5 O% c, s9 u- W! D- N, Q 最后的预测层仍采用MPL+softmax进行预测。
$ N: N8 Q4 m( ^, H& ^
; Y- Y3 ~1 O/ E, p 10. 小结 u" e0 M' x" ^4 i( ]/ ^
交互型语言匹配模型由于引入各种花式attention,其模型的精细度和复杂度普遍强于表示型语言模型。交互型语言匹配模型通过尽早让文本进行交互(可以发生在Embedding和/或Encoding之后)实现了词法、句法层面信息的匹配,因此其效果也普遍较表示型语言模型更好。
/ V0 N$ g h1 T/ ~ B9 c
! n G& ~ M1 X 【Reference】. M, g+ m" n( l& Z; r
8 T1 O2 H5 v5 w) N4 i4 ~ ARC-II: Convolutional Neural Network Architectures for Matching Natural Language Sentences; h( U2 T" m% J6 R
5 Z6 M! h I( O8 e- ?* t" W k PairCNN: Learning to Rank Short Text Pairs with Convolutional Deep Neural Networks
- X, _6 |( Y4 n7 R! n. f + B: b: q: }8 l6 X+ ~6 P
MatchPyramid: Text Matching as Image Recognition" l- {: q) {" M7 y; B3 E% F
( H0 v5 K7 X- e) c& n2 \* [, j DecAtt: A Decomposable Attention Model for Natural Language Inference
+ L, x- ~1 X+ R) D, l; Z $ u% o9 J# Q6 ~8 I
CompAgg: A Compare-Aggregate Model for Matching Text Sequences2 q. {; T9 _/ T+ O
7 H4 ~! `- a- p P' x ABCNN: ABCNN: Attention-Based Convolutional Neural Network
S! \3 l% h& w$ `1 l. j. R for Modeling Sentence Pairs
( l2 T: O9 \ N3 K* u3 F
: }8 o0 R& e) U ESIM: Enhanced LSTM for Natural Language Inference
5 s1 Y, c. m& u& D6 L+ `
& q; M( g% `( s1 U9 x Bimpm: Bilateral Multi-Perspective Matching for Natural Language Sentences
& S8 P. p5 ~8 P" K* `; N( l- W4 _* b 8 }- p$ }- ~- U$ L$ e
HCAN: Bridging the Gap Between Relevance Matching and Semantic Matching( B+ M' T M. B8 d, ^4 q
for Short Text Similarity Modeling7 m8 s! ]1 Z9 T$ Y; Z9 \ Q' d9 m* w+ @
( ?+ B! r9 e- y, W5 b/ _+ W" O
文本匹配相关方向打卡点总结(数据,场景,论文,开源工具)% T- Q i- o, Y5 h1 K% r9 w: w
2 ~5 }( H( O( t$ w( s 谈谈文本匹配和多轮检索
) u7 i8 _4 W" J# Z- M5 t1 X & n d# O6 b" Q3 \# G- T+ g
贝壳找房【深度语义匹配模型 】原理篇一:表示型
3 x5 _0 k; l: @ ————————————————
, Y5 ]* ^$ b/ f* o! a 版权声明:本文为CSDN博主「guofei_fly」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 O6 F& u% ~8 b9 O
原文链接:https://blog.csdn.net/guofei_fly/article/details/107501276( |& c2 n y& k) J4 A9 K
0 i0 O) @6 P& Y2 b1 c1 y6 q
- S3 T5 a3 M- ?, u3 X% r2 J
zan