在线时间 1630 小时 最后登录 2024-1-29 注册时间 2017-5-16 听众数 82 收听数 1 能力 120 分 体力 564644 点 威望 12 点 阅读权限 255 积分 174616 相册 1 日志 0 记录 0 帖子 5313 主题 5273 精华 3 分享 0 好友 163
TA的每日心情 开心 2021-8-11 17:59
签到天数: 17 天
[LV.4]偶尔看看III
网络挑战赛参赛者
网络挑战赛参赛者
自我介绍 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
群组 : 2018美赛大象算法课程
群组 : 2018美赛护航培训课程
群组 : 2019年 数学中国站长建
群组 : 2019年数据分析师课程
群组 : 2018年大象老师国赛优
【文本匹配】交互型模型 |% g- Y0 z' J" Q4 M8 O; Z
1 b3 h3 D) U, r# {7 B" D. U 表示型的文本匹配模型存在两大问题:(1)对各文本抽取的仅仅是最后的语义向量,其中的信息损失难以衡量;(2)缺乏对文本pair间词法、句法信息的比较 _% m4 ~: N2 ?. m* i
. J7 R, n3 n6 G! X( S
而交互型的文本匹配模型通过尽早在文本pair间进行信息交互,能够改善上述问题。. F: r3 U4 N' o6 U! d: I* L+ f+ y
/ `% o! c% y+ {" @4 A 基于交互的匹配模型的基本结构包括:
) K5 z& m8 M9 Q6 Y' J J+ K J
8 w4 e, |+ U8 h( d (1)嵌入层,即文本细粒度的嵌入表示;
- M+ v6 B& o& ^$ ^ 3 F( ~) w( M7 r: D- d
(2)编码层,在嵌入表示的基础上进一步编码;
3 f7 b+ k8 Q" |) _: T% U2 u P : v6 W1 E) T6 H1 e1 T
(3)匹配层:将文本对的编码层输出进行交互、对比,得到各文本强化后的向量表征,或者直接得到统一的向量表征;
6 W: I3 U8 H9 F: J% z9 X) _
( d2 f$ R- E* x& s( W- y* ~7 e (4)融合层:对匹配层输出向量进一步压缩、融合;
0 ]: i( O# E$ q& r7 j( _
& @; k$ v* `; m# W$ q, L$ A (5)预测层:基于文本对融合后的向量进行文本关系的预测。
. |( X/ r! \# T5 K" J) u # Z0 [: N+ w4 Z) U& Y
; o6 L: _: R" p _5 K2 \# {0 k 4 k# p* r% U) @# T( ~
1. ARC-II
4 I3 D; K( V+ v. F1 ^ ARC-II模型是和表示型模型ARC-I模型在同一篇论文中提出的姊妹模型,采用pair-wise ranking loss的目标函数。. X" `- Z) ~* Q ?+ i9 B2 A- m8 H, S
1 D5 N/ S- B9 ^9 h9 | 其核心结构为匹配层的设计:
, W2 Y O( u6 t( @. Z
( v% j% p* x9 ]' O" A (1)对文本pair的n-gram Embedding结果进行拼接,然后利用1-D CNN得到文本S_X中任一token i和文本S_Y中任一token j的交互张量元素M_{ij}。该操作既然考虑了n-gram滑动窗口对于local信息的捕捉,也通过拼接实现了文本pair间低层级的交互。: L( `1 S, j4 o2 U' O& {; {3 F
6 o9 Q) p; f; `5 z2 G (2)对交互张量进行堆叠的global max-pooling和2D-CNN操作,从而扩大感受野。
' S3 y" m! v- T% n & |+ S2 T$ x! D8 x5 Y" B
2. PairCNN
& N% `: M0 L/ g* m% ~2 B PairCNN并没有选择在Embedding后直接进行query-doc间的交互,而是首先通过TextCNN的方式分别得到query和doc的向量表征,然后通过一个中间Matrix对query和doc向量进行交互得到pair的相似度向量,然后将query的向量表征、doc的向量表征、相似度向量以及其它的特征向量进行拼接,最后经过两层的MPL得到最后的二分类向量。
; m& ^: l5 u* Y; K & F8 A1 h, X6 t; t0 x5 r
PairCNN的模型架构中的亮点在于各View向量的拼接,既能利用原始的语义向量,还能够很便捷的融入外部特征。; c* L+ [: G7 f& }9 @
, Z% }8 d( t! h) ?& ]. r5 H. P 3. MatchPyramid
9 F% h+ Z0 J, B9 I6 J 无论是ARC-II中的n-gram拼接+1D conv还是Pair-CNN中的中间Matrix虽然均通过运算最终达到了信息交互的作用,但其定义还不够显式和明确,MatchPyramid借鉴图像卷积网络的思想,更加显式的定义了细粒度交互的过程。
: N9 x+ \* z) h2 h9 k8 [ L. | MatchPyramid通过两文本各token embedding间的直接交互构造出匹配矩阵,然后将其视为图片进行2D卷积和2D池化,最后Flatten接MLP计算得匹配分数。本文共提出了三种匹配矩阵的构造方式:
. ~2 o! T. A- t6 W 1 ^# e$ ^& K4 s( B8 ^9 X; i! l
(1)Indicator:0-1型,即一样的token取1,否则取0;这种做法无法涵盖同义多词的情况;: y @4 X8 `/ i, j. D, F3 D
2 g8 h4 @5 r' Q8 |$ @ (2)Cosine:即词向量的夹角余弦;
* \# J+ e+ r5 c0 P4 y, F$ I0 [ 2 X0 F* o8 U4 n% l$ }: i$ Q
(3)Dot Product:即词向量的内积4 ?( l! [" `* @ b; W+ o
: d3 M, M1 d0 h 此外值得注意的是因为各个文本pair中句子长度的不一致,本文并没有采用padding到max-lenght的惯用做法,而是采用了更灵活的动态池化层,以保证MPL层参数个数的固定。' h( a; Q0 O" |3 l& E
( _9 ]1 D9 a/ ^ 4. DecAtt( `" }2 H: `0 r# k( P' j& e7 \; g
DecAtt将注意力机制引入到交互型文本匹配模型中,从而得到各token信息交互后增强后的向量表征。
- W* m8 g9 g4 H$ G- |8 M) H1 n, e/ |, Q
, O+ T/ T/ ?1 q1 }( M 模型被概括为如下层级模块:. b& z H- G) X. }$ e; R0 Y' }
Q3 e$ E) ^8 O! r7 ~; o I4 u (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。/ Q$ I( C! F A5 D
( B8 `8 q4 B0 p. T* Y% v (2)Compare层:将前序Attend层计算得到的最终embedding,喂入一个全连接层进行向量维度的压缩。4 y! D+ v% _8 B5 y" R
! L. w' N' L& @$ y3 Y$ P% h (3)Aggregate层:将每个文本各token处压缩后的向量进行简单的求和,再拼接起来通过MPL得到最后的匹配得分。1 `. I# B; q2 I K! r0 Z- }) Y0 ~
/ o) r# H" K4 ?8 K4 \7 O8 ]: W% l 5. CompAgg# o- }, k* ~: N; x3 ?
CompAgg详细对比了在文本间cross-attention得到的各token向量表征与原始token向量进行compare的各种方案。
4 }4 j; V+ q) ]; ?1 n ' {. |# E7 C3 O# ~, I c
该模型的主要结构包括:; }6 h/ h+ r( M8 \; H" E( K: B
( S- x/ O. C! P (1)reprocessing层:采用类似于LSTM/GRU的神经网络得到token的深层表示(图中的\bar a_i);( S7 J, Q/ n8 y, Z5 E. P
# l6 J m, J/ b8 A6 _
(2)Attention层:利用软注意力机制计算文本间的cross-attention(与DecAtt相同),从而得到各token处交互后的向量表示(图中的h_i);& ?" }: W8 a; [# t
4 O3 G1 E( ]& I0 S) P6 Y0 l (3)Comparison层:通过各种网络结构或计算将\bar a_i和h_i计算求得各token的最终表征。$ @' v9 O: h( C- B9 D
5 N5 @# L& m* y) o. F8 Y- ?
(4)Aggregation层:利用CNN网络对Comparison层的输出进行计算,得到最后的匹配得分。8 |4 e# U$ g/ u8 T8 \
" z% ?& w' K. [" f% Q 其中Comparison层的构造方式包括:% U1 B% Y! f6 b8 l
: N% Y4 D* j9 o2 P
(1)矩阵乘法,类似于Pair-CNN中的中间Matrix
/ H, ~0 W! S9 T+ c$ V# T" B
5 j4 _( H$ n8 g (2)前向神经网络,即将\bar a_i和h_i进行拼接,然后利用输入FFN;
3 x# J8 v8 y P5 `' E$ Z
9 p4 Q1 q& d) |/ } (3)分别计算cosine和欧式距离,然后拼接;, R. {3 I0 R! w
6 { I# n0 M8 ?* L, J (4)各维度进行减法;( x6 K" ?$ e, U, s
?4 K! o ~' h0 v" _; h- D (5)各维度进行乘法;6 ? }4 Y' y: l/ L7 C+ ^
1 r5 R. @/ C' p' [ (6)各维度进行减法和乘法,然后再接一个前向网络。: C4 @. a$ x8 ?0 a0 Z" P! ?
. o, F; Y# @5 A6 b 6. ABCNN
, [& v; L' ^# {7 K8 ] ABCNN是将Attention机制作用于BCNN架构的文本匹配模型。
7 k4 }1 q4 K/ F/ i & x* k) p' ?+ i2 B
6.1 BCNN9 [( t5 F4 Q# {7 d* O. [
首先简单介绍下BCNN架构:
; W2 u& v) J5 M2 T/ ` ' f( t- O' s. i4 w
BCNN的整体结构比较简单:(1)输入层;(2)卷积层,因为采用了反卷积的形式,所以在size上会增加;
7 @" d. W- W/ h! D' T) d - m. W0 j( Q8 \8 i/ X1 K& @6 F. c
(3)池化层,采用了两种池化模式,在模型开始阶段采用的是local平均池化,在最后句子向量的抽取时采用了global平均池化;(4)预测层,句子向量拼接后采用LR得到最后的匹配得分。
; T2 w7 g' ~+ h( J E$ k% c
: X4 L& ~8 L) G6 s1 Q- ` ABCNN共包括三种变形,下面依次介绍。
?: @# t0 _# K) C4 j8 U0 O ; v4 l( C1 w$ G1 B: t$ y
6.2 ABCNN. P5 B$ {% d h V z) {
* k: ]2 c2 H) j+ K n& y6 r
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 ; Y" s4 ~9 Y) M7 g+ H' t
ij
& j# b) ^( D2 r+ ~# E* j + z0 G- F5 d D5 ?5 o: n) ^
= 7 G5 p/ ?9 | U% \$ ~& _, K
1+∣x 5 H0 C! r) w2 L4 c8 ]# Z' ~ w3 h
i. p1 V1 ]6 ]2 N; H
' |2 \. ?, I+ a! }: l# y5 g
−y
! l& J1 G% K# \- b! t j
- Y$ i* `% W R* L7 G N( f0 |( k
; ^6 e2 X) Q3 {3 H! G4 L1 u ∣, e* p. Q6 v. k# t- E; ?
1
* p' Y" e# C3 @8 C# a8 e
5 o7 e+ ?! i i' f# X ,然后分别乘以可学习的权重矩阵 W 0 W_0 W u7 j7 ~8 a$ t4 d1 [/ |* f
0
' }1 X: _# Q, D5 K
5 N$ h" a4 q% p* w, }2 d8 w 和 W 1 W_1 W
" g: R$ P! V* {1 N, } 1& V Z# M7 ~* v. u/ q- S" U
( f7 P s+ ?( o3 G 得到attetion feature map。" k2 J2 ~2 p, K/ P; K1 d+ `
* t$ U3 ?$ Z6 b3 g
6.3 ABCNN-2% f. d/ I, a* M* e* L: e+ A
: O P8 O5 j$ @' b6 _5 z
ABCNN-2将Attention机制作用于word embedding层后的反卷积层的输出结果,其中注意力矩阵的计算原理与ABCNN-1一致。然后将注意力矩阵沿着row和col的方向分别求和,分别代表着各文本token的attention socre;接着将反卷积层的输出结果与attention socre进行加权平均池化,得到与输入层相同shape的特征图。; h6 {1 k% w7 X- D4 o% K
# l1 ?5 k8 E( m3 |( G
6.4 ABCNN-32 H1 W" K' X r# R, u
* T" L. w0 y8 Y7 ?6 Q2 R# ^. @8 ]6 d
ABCNN-3的基本模块可视为ABCNN-1和ABCNN-2的堆叠,即在嵌入层和卷积层上面都引入了attention的机制用来增强对token向量的表示。- L. C" t1 Y5 o9 s
, Z! o- {6 [6 I+ \
7. ESIM
" _: b' h- n! L4 I. ~0 p2 P x ESIM模型基于NLI任务给出了一种强有力的交互型匹配方法。其采用了BiLSTM和Tree-LSTM分别对文本序列和文本解析树进行编码,其亮点在于:( h9 H; }% d' x# |0 ~ W
' T( s+ w1 `$ C3 u) V) c) u0 d9 s (1)匹配层定义了cross-attention得到各token的向量表示与原token向量间的详细交互关系,即采用 [ a ˉ , a ^ , a ˉ − a ^ , a ˉ ∗ a ^ ] [\bar a, \hat a,\bar a-\hat a,\bar a* \hat a] [ 5 k. K7 q- X% _2 @$ V. I
a
6 |- @# m2 [7 d: s# h ˉ
& b- |( V2 h. R ,
6 P4 \" @) J" N `' L a: e$ |+ b, e& ~8 n
^
; S2 Y' y) ] C0 c, ]) j8 E' x7 n% x" } ,
2 _- M2 I! @' C# x* c a3 [. W m4 g) M% X
ˉ
" o& X: ~ m4 g% S −
8 d, K' Z" @& R a
0 _; {, j. ]' E5 O ^2 X0 h3 R% z$ Z8 L% `1 v
, % j/ G: k$ D6 Y( G0 b4 X2 P' e& |
a. D/ n1 L! e6 M) Z' y2 L
ˉ* H& Q7 H2 t5 a" k
∗ 3 r$ Q: _0 H# j" @% @5 t4 |2 b% @
a! I" f$ ?. O1 j$ o0 _
^
, B) o$ |/ H+ o e% z ]作为最终文本token的向量表示,这也成为后续文本匹配模型的惯用做法。+ X5 ^8 a6 v7 G, ^5 m
+ p+ H1 I! r3 Z7 P" ]" b2 G
(2)聚合层通过BiLSTM得到各文本token的编码,从而进一步增强了文本序列的信息传递;
( q. `( ]8 A q5 d6 c+ ~- S$ N
' J+ Z5 j9 _3 \4 d/ ^8 C (3)预测层通过拼接各文本token编码的max-pooling和mean-pooling结果,再经过MPL进行匹配预测。7 k) l. R/ `- T: X6 ?
* o; @$ [. u5 ~( H8 u ^0 n& v! P, x* \# } X; @# h
. R3 L5 j+ ]+ o9 v& P. { 8. Bimpm2 [# e# U8 f- {3 f' Q
Bimpm可视为对之前各类交互型文本匹配模型的一次总结。) m% ~! k1 A2 s9 ^& X! l- d
4 _. E' l# B- N2 M6 r& v% y& A
该模型在各层的具体做法总结如下:
& }, V, J5 |0 o, n4 j! G 6 A- b' i' m$ Z
(1)编码层采用BiLSTM得到每个token隐层的向量表示;
1 K/ e" `4 O5 `* D" d: K " p8 Z( q6 A1 A9 V/ r
(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$ g3 Y4 e; H$ I
k! B, Y; z, y: E |/ T1 [- }
! y9 n: |9 [* v: I- C: T& S8 J =cosine(W / K8 s8 I& |8 q, X: P
k
. d! ?! G% v$ k0 r7 P; X
: \) c& {0 C% N* N6 ^( x- e$ z ∗v
" s t5 X+ ?8 X8 C& v 1
$ W: `7 L+ P Z% m
d7 F# y5 T' X1 V% `" B ,W 9 P1 s0 z% O0 r% m! q9 S y
k2 l( z& P! D& @$ y
8 U* ]9 o) p& u. X, P8 f; c& _ ∗v
: R5 f3 u& x& r4 Y3 H( F( ?8 n 2
1 S6 F( e( }3 Z; `5 g6 A0 ~ 1 X5 J' @# P8 w6 Z5 f% k
)的方式可以得到两个文本的任意token pair之间在第k个view下的匹配关系,至于 v 1 v_1 v
' i% P3 ?. W8 ?. q; U 15 x. a4 P; n6 R# ^
! _: R2 R P6 B: m0 w/ w 和 v 2 v_2 v
) }1 N+ `9 [7 `* z 28 B2 W7 \+ [5 i' ^+ M1 _
3 N% X1 O$ v8 p; m) @. d 如何取,文章提供了4种策略:! w$ P: M% N! D# O2 t
5 W; A) ^- l% ~4 h
策略一:其中一个句子取各token隐层的向量表示,另一个句子采用隐层最后时间步处的输出;$ R9 h7 u& t' L# i: H* \* m
策略二:其中一个句子取各token隐层的向量表示,另一个句子采用隐层各时间步输出与之匹配后取再取Max-Pooling值; v& Y; H0 w+ G9 Z( O ]4 h" r
策略三:其中一个句子取各token隐层的向量表示,另一个句子采用cross-attentive后得到的加权句子向量;
/ M ~: ^1 N1 p: ]4 v9 s2 Y 策略四:其中一个句子取各token隐层的向量表示,另一个句子采用cross-attentive后attention score最高处token的向量作为句子向量。
- u, Y+ @- Q4 U X% \+ g" [ 这四种策略的区别在于对句子向量的计算不同。0 _5 b% w; F6 l+ F& |$ U, C
) T# x& u- D# v o
& I) T: L; |0 ~$ |! t9 T (3)聚合层,首先对上面各种策略得到的输出层再通过一层BiLSTM层,然后将各策略下最后时间步的输出进行拼接,得到最后的聚合向量;
8 N7 W% i n9 w* D6 p, c5 |
- e. G$ b7 u O7 k/ y" b+ J4 _ (4)预测层:两层MPL+softmax0 I- l4 n! p: ^/ i) J ]8 T
# ^, D8 ]" q1 L/ v( V' ~
9. HCAN
8 |) i$ {3 E6 M1 T. \ HCAN是除Bert类模型外在文本匹配领域表现最为优异的深度模型之一,其采用了较为复杂的模型结构。- e4 [( }. T! b0 P* L! x4 ?
6 o3 l. ^5 q7 ~
针对于信息抽取问题,文章首先分析了相关性匹配和语义匹配的差异:
) |$ P/ i. m* i/ `# N
! I/ `3 f6 q& R (1)相关性匹配主要关注于关键词的对比,因此更关注低层级词法、语法结构层面的匹配性;
( t' z0 P: x6 k( B2 L * D$ V! x' W$ C
(2)语义匹配代表着文本的平均意义,因此其关注更高、更丑想的语义层面的匹配性。
1 Z$ S& b5 }# g( q+ F
: i. D9 \3 r) i+ R6 A; H3 V' z6 }7 z 该模型首先采用三类混合的编码器对query和context进行编码: Q) e. A5 t; X }
' H0 T: j( x8 R$ F( a9 D5 g0 F
(1)深层相同卷积核大小的CNN编码器;$ Z9 l* e9 q8 j3 C; [
0 l: L, |: t3 @( M* i! b (2)不同卷积核大小的CNN编码器的并行编码;0 ~4 u+ `, j( C+ D& I$ ]
8 D [- t B6 H3 U/ B4 P3 k+ }
(3)沿着时序方向的stacked BiLSTM编码;1 M, E; S: ~+ L# r0 ^
1 h3 D* ~) j1 ?! w
对于前两者,通过控制卷积核的大小可以更好的捕捉词法和句法特征,即符合相关性匹配的目的;而对于后者,其能表征更长距离的文本意义,满足语义匹配的目的。
- y# k& T1 a- K' f % {5 I9 f0 P# A& T
在这三类编码器的编码结果基础上,模型分别进行了相关性匹配和语义匹配操作。其中相关性匹配主要采用各phrase间内积+max pooling/mean pooling的方式获取相关性特征,并通过IDF指进行各phrase的权重调整。而在语义匹配中,模型采用了精心设计的co-attention机制,并最终通过BiLSTM层输出结果。# _- Y1 S4 J9 T' Q
i }6 }0 { v7 J1 L0 g" p$ n
最后的预测层仍采用MPL+softmax进行预测。
1 o( E' _, O. O; C ' E% h& \" J; X) m2 w" \" G
10. 小结
, }7 i( f: ~. G, p3 }1 `8 g 交互型语言匹配模型由于引入各种花式attention,其模型的精细度和复杂度普遍强于表示型语言模型。交互型语言匹配模型通过尽早让文本进行交互(可以发生在Embedding和/或Encoding之后)实现了词法、句法层面信息的匹配,因此其效果也普遍较表示型语言模型更好。
3 @% x0 C% I' x( L $ a5 Z7 I( s8 \8 u
【Reference】' z/ H* W- B) M/ T- b) D0 F
' ?# \4 r0 R4 U0 z& R% [- ^6 U ARC-II: Convolutional Neural Network Architectures for Matching Natural Language Sentences
; ~# w0 Y" I5 I" l5 d# k) Y * |/ k, J. H' q7 d! D+ R$ | l
PairCNN: Learning to Rank Short Text Pairs with Convolutional Deep Neural Networks
8 c$ V6 c, D5 b
: e# t6 @* j" h) Z$ `. I+ ` MatchPyramid: Text Matching as Image Recognition }, y7 d* T! x1 U ]
- H& w6 J" n# q3 f4 M
DecAtt: A Decomposable Attention Model for Natural Language Inference# g- ?9 z, d! \$ n* B8 Y V
) m3 n- F9 I' j7 J. j" g6 Y! c7 Q
CompAgg: A Compare-Aggregate Model for Matching Text Sequences+ p( ^ W: M( ~! A2 h
d" g9 j I( K$ z ABCNN: ABCNN: Attention-Based Convolutional Neural Network
% ^5 @4 e1 x, Q& t for Modeling Sentence Pairs# Q8 M) S; B2 P: |% ]
6 v* Z# j* l6 @" h; _ ESIM: Enhanced LSTM for Natural Language Inference
7 \) v6 C7 j6 O8 \% _ + Y6 ]8 n5 T1 n% I5 Z
Bimpm: Bilateral Multi-Perspective Matching for Natural Language Sentences7 H. a' \- U$ ^, G9 f1 a& E
' C4 P& y& r& c$ Q HCAN: Bridging the Gap Between Relevance Matching and Semantic Matching( Y9 T( d! d; R% J }
for Short Text Similarity Modeling0 @( y7 x0 Z0 z+ ]7 x( j5 w
6 z q4 Z& |; e7 \; c W/ U' H 文本匹配相关方向打卡点总结(数据,场景,论文,开源工具)7 w" x( L8 h) s+ O2 G! j! S( H
& c. g3 ^# q5 d( w 谈谈文本匹配和多轮检索
9 _, ] ?( E" k# o& a 3 @( r$ m6 k5 X* n" W8 X1 R
贝壳找房【深度语义匹配模型 】原理篇一:表示型( h- [' Z8 a: H3 t l( k
————————————————! x5 R& ~' B$ y) U5 C& I& X9 t2 t
版权声明:本文为CSDN博主「guofei_fly」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
7 J- B* M1 S1 E* b/ ?5 f& M 原文链接:https://blog.csdn.net/guofei_fly/article/details/1075012764 g7 n; b6 v. ?3 W, q C
% r6 P+ A: U# l6 j j1 B' D r3 z
7 ~4 s& o. P F; W2 w: ]
zan