掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 930|回复: 10

[求助] 如何用EmEditor正则表达式进行词组拆分?

[复制链接]
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

    发表于 2020-8-2 09:08:30 | 显示全部楼层 |阅读模式
    本帖最后由 wjl 于 2020-8-2 12:58 编辑 / Z% r: H6 ?. c& v, X4 m& K. d

    1 @! q- N  r1 \. d如何用EmEditor正则表达式进行词组拆分?* x/ d/ w% N0 V; _; j' t
    Al/A-one ;    P0001: Z; x! a( C8 J9 W; \1 s
    更改为
    ) S, j4 D0 R9 B; T* H, FAl/A-one ;    P0001
    $ S1 k, V% f  B4 ]Al;    P0001
      a  b% i9 n& {" dA-one ;    P0001$ w5 K$ E  z( U0 t  M3 c
    ___________________________________________________+ X( F. g, a4 K; J5 |/ R6 g5 l
    quarrel (with sb) about/for/over ;    2313, Y! z; o. n1 P+ R$ G0 I9 `# Y
    更改为% K3 Y( _/ @9 Q* l
    quarrel (with sb) about/for/over ;    2313* c  d; a# t1 \3 u$ t( }; A
    quarrel with sb about ;    2313; H' R3 c4 M, g$ A
    quarrel with sb for ;    2313% B+ x' R" L, m7 J
    quarrel with sb over ;    2313
    * Q5 e* s1 A  Q+ R$ n' ]. dquarrel about ;    2313
    2 J  p2 [6 K6 dquarrel for ;    2313/ C2 I: V) r- W5 }
    quarrel over ;    2313
    % l6 H6 \3 y4 s" P; K: R/ n9 R___________________________________________________
    & a: P. t4 o3 I5 ]3 t. K/ Sdabble at/in/with4 G. R$ ?8 @& H5 S2 M/ U
    更改为
    0 i9 L" V/ a( S8 z* L# mdabble at/in/with) g3 w% T4 ]* ?5 `! _1 c$ a, z
    dabble at
    $ I: r  |( Y5 t, odabble in: U% A  ]$ I8 [  ^1 L
    dabble with2 S+ M! P3 [$ k: c/ ]
    ___________________________________________________% c! k- ~3 x$ n( M' v
    damn and blast (sb/sth), i0 p, _* w3 {
    更改为
    $ ~/ T- F  d+ ^- N4 U/ P# m* h8 fdamn and blast (sb/sth)" ^4 r9 o) O5 z$ k
    damn and blast sb0 u( o% R1 m  G6 T& E
    damn and blast sth/ K" j# j/ A& Y8 }+ X1 F9 b
    damn and blast# Z. s' y. V, o2 X5 `; _! b
    ___________________________________________________: k6 N; N+ X6 d) z  x, N0 q. V6 a7 n
    dance on/upon a rope/nothing
    - I8 k) v% M" i. I( |更改为
    ) @6 k2 Z$ }7 ], t- Wdance on/upon a rope/nothing
    3 l! I4 j/ o4 }: Hdance on a rope
      `( K' g& N7 E1 F1 B8 Ndance upon a rope
    1 u( y/ s: q2 q0 Y, ^+ ?# Adance on a nothing
    5 ?: f- B0 v3 ~dance upon a nothing
    0 y6 d9 ]5 e& q  J0 J  }___________________________________________________
    1 B  Y9 E* F/ H' W1 Y3 [: Adance on (the) air! s; m# V' u& O* w+ b4 V
    更改为# K+ @( Z( f3 P  ^
    dance on (the) air
    4 z; z2 y' ?! L" D% gdance on the air' p' n1 I) J' e; f- {/ j7 ?" s
    dance on air+ u4 X% V: E5 H+ @% I. W3 J
    ___________________________________________________
    ; c+ |- I: x: g( M! v+ @dead/flat/stark calm! U. ]: s2 z: g% H. Q2 e
    更改为
    9 r5 ?/ T, A3 F3 F. L3 B# J0 |/ Mdead/flat/stark calm
    2 B! v) t7 t: G0 J- l! edead calm
    % P7 ]( y" _: m- Nflat calm" f9 I# q* Z$ U0 U, D
    stark calm
    5 t+ ^9 Q  F& S5 Q___________________________________________________% V( H1 ?% h2 {1 m& ^
    do/go/make the/one's round( m5 g4 }9 ]' d7 t
    更改为' Y/ b- E( @4 D7 ]& c
    do/go/make the/one's round* g; Z+ V# i  @7 @8 {5 \3 g+ r
    do the round% r; I& S# \, i2 |" H. v
    go the round
    6 ^  j( ]$ R+ p; X# d+ `; C2 F( Amake the round' O6 c9 v( c, G( V8 V& B8 E1 r9 `
    do one's round
    ; }+ n6 f* o4 `. t9 R4 C3 L0 O! M7 jgo one's round
      `% r9 [8 ^9 ~% l# j8 Omake one's round1 J3 G$ b1 R+ J, {# F" J6 d/ V' E! f' R
    ___________________________________________________
    1 [7 z7 e" A/ @* Y' e3 Jdo (sb/sth) grace
    % a  b  m$ s8 w( D更改为
    7 A( s+ N, V" p1 r& H& Cdo (sb/sth) grace9 S* Z2 U; v2 ]! f0 N7 C: }
    do sb grace" W  y( G* I  B# J3 n
    do sth grace
    % c: M5 m7 D4 S$ [) \3 Edo grace1 W% P2 F* M+ h& I  \! ^
    ___________________________________________________
    + G3 S' v" `3 N* D4 ?
    - W; ?. C3 s2 Q+ x1 r1 S) @固定一种模式的话比较好处理,难度在于/和()的出现次数和位置不固定,可能连续出现,也可能分散出现,两者也可能混合在一起出现。示例文件链接: https://pan.baidu.com/s/18rt8d7KxYOsioihLEXxzfQ 提取码: qn3k。如果EmEditor正则表达式不可行的话,用python代码也行- N+ ~: Y2 _; M* `' @1 J2 B& }8 v
    Al/A-one ;    P0001这种简单的可以用
    % L0 ^+ v3 w! e6 z\b(\w+)\b/\b([\w-]+)\b(\s{1,});\tP(\d{4})
    2 O0 [$ J2 `, y+ z2 ?! K& E; @/ }0 _0 g替换为:
      m. R. O* p+ y) K) D  e$ c\1/\2\3;\tP\4\n\1\3;\tP\4\n\2\3;\tP\46 X8 i, p; n1 U7 l; J

    2 d  U, R. I& c4 M; y, k; |0 s" \
    : [2 r$ l) ?: u5 T( {9 F3 C
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 13:12:26 | 显示全部楼层
    本帖最后由 yunhailin123 于 2020-8-2 13:15 编辑
    6 o2 }$ v2 w/ V& K. X3 [. A* F) B( b$ O* P
    可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。
    * F( c. s% V, I5 M5 w所以提取词组版的只有ff的朗文五,其他人很少有那个精力去手动提取词组,毕竟那么多词条,还得肉眼加上手工去写规则你也可以去看看garypang的提取朗文五词组完美版,反正花的心思不少,没有捷径可言" H/ m0 j. |# c  ?2 S
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:28:15 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:30 编辑 2 H3 y) h# g5 j. {9 q% f+ s* d: [
    yunhailin123 发表于 2020-8-2 13:12
    $ a/ U3 I5 {6 \1 A- g& }/ ?可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。6 T3 n7 e/ v" M/ E$ o: C; O
    所以提取词 ...
    0 l1 A% F* D8 B; k
    肉眼观察需要考验操作者的观察力和动手能力,可能使用python代码简单些吧,我有想法,但是编程功底不佳,我的想法是将词组先按空格拆分,如果有括号的话,则按空字符串和括号内字符串与别的单词链接组合到一起,这样就有两种情况;如果有两个连在一起的/的话,则将其按/拆分成三个单词,与别的单词链接组合到一起,这样就有三种情况。简单情况能处理的话,感觉用程序实现复杂情况也没问题才对呀。比如quarrel (with sb) about/for/over,括号2种,/3种,排列组合一下总共6种
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:29:05 | 显示全部楼层
    本帖最后由 Mandolin 于 2020-8-2 13:35 编辑
      O$ M8 |! D( J+ |: A! Q  m/ \
    / V" ?! ^- q! C* {0 n+ p英语词典做得少,没遇到过楼主这样的处理需求。要我处理的话,我会把括号「()」和「/」的情况先后处理,最后全处理完后去重
    ( j( n- Z1 J  S  P9 y
    + i/ U1 y7 }: E  m: F) x3 r! t个人感觉:「()」的情况还是不难处理的;「/」的情况不太好处理(因为可能存在这种情况『take some/a lot of doing』,会误拆成 take some lot of doing)
    ( E0 y7 S- k: @  |) O9 I0 V# [
    6 O" r8 J) {4 j& S还有,你这个索引是文本识别得到的?在处理之前建议一定要先排查下字符错误,并且统一下排版,把 txt 理顺,否则后面的处理很容易出问题
    4 }) m, {3 ^, N- t
    , o8 W  ]7 _" T2 n4 T; |1 Q; @" S3 t0 U, L! M# F& q
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:37:55 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:42 编辑
    3 @" B% z3 t4 G: }: a- w% Y
    Mandolin 发表于 2020-8-2 13:291 F$ N! G5 g: R9 a
    英语词典做得少,没遇到过楼主这样的处理需要。要我处理的话,我会把括号「()」和「/」的情况先后处理
    ; Y, {$ A# N& }9 p9 P0 ]+ g" J0 x9 o5 r3 M" t# [8 j
    个 ...

    : z5 [0 x4 `0 H3 i1 u: i  X我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些全英文的不需要拆分的部分例外,所以刚开始设计正则表达式时可以按都是简单单词这种情况处理,最后通过选定范围替换或手动替换即可解决例外情况。示例文件是OCR识别文本,尚未校对,仅供设计正则表达式参考用。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:45:02 | 显示全部楼层
    本帖最后由 Mandolin 于 2020-8-2 13:54 编辑
    / M) ?7 F( c4 C$ |0 h; x
    wjl 发表于 2020-8-2 13:37
    5 `+ D5 P* t% I3 v$ Y; d$ `8 f我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些 ...
    - a: v9 h2 L' T& n/ x
    如果没有我说的那种情况,那用正则就可以实现。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:46:26 | 显示全部楼层
    wjl 发表于 2020-8-2 13:37
    ' Q$ q+ `5 f7 s  C; x' l我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些全 ...

    4 G" u- u- f1 O2 L0 J如果没有我说的那种情况,那用正则应该就能实现。(果然是在做那本词典,加油,希望作品完成后能分享,很期待)
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:57:53 | 显示全部楼层
    Mandolin 发表于 2020-8-2 13:46
    # @& a4 K3 y4 ~& C* Y如果没有我说的那种情况,那用正则应该就能实现。(果然是在做那本词典,加油,希望作品完成后能分享,很 ...
    1 V$ A9 y# n& s( A
    现在还看不到希望,只有3个人参与校对。感觉python字符串拆分方法最简单,不用懂正则表达式,跟人们的思考方法一致。用正则表达式的话,还得肉眼观察出所有模式,再设计相应的正则表达式,否则不知道如何区分和处理仅含()、仅含/、同时含有()和/,同时含有()和/并且()中也含有/,()和/出现一次或多次、连续出现、分散出现这些情况。只有一种固定模式还好设计,难在怎么一次查找替换所有情况
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 16:24:22 | 显示全部楼层
    wjl 发表于 2020-8-2 13:28  y& Q7 [1 D8 B3 x5 a" G
    肉眼观察需要考验操作者的观察力和动手能力,可能使用python代码简单些吧,我有想法,但是编程功底不佳, ...
    + c/ T, V0 T0 j8 h5 i
    但是要碰见有的词条是这样的 go'es by sb ,这个词组是瞎掰的,只是举个例子,有这样的,你还得再加一个,不管拆分词组还是要找词组,最终目的都是要找到词组的一些规律,即通过观察大量的数据才能下手/ Z# l  k$ ~' ]7 ], _) ^' q) T
    也因为这个没有规律,耗时费精力,所以论坛专门弄词组的屈指可数,数据还比较老了。
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 16:26:53 | 显示全部楼层
    wjl 发表于 2020-8-2 13:57& n5 O# o6 R; P/ ^$ |' d
    现在还看不到希望,只有3个人参与校对。感觉python字符串拆分方法最简单,不用懂正则表达式,跟人们的思 ...

    , i2 A( [! Y1 E- X: u) Z+ u$ }" _建议楼主抽一两个小时恶补一下python基础,只需把基本单位认清,语句怎样写,其实python已经是把代码人性化了,要是c++,过于苛刻。现在随便搜个教程稍微一学,现学现用
  • TA的每日心情
    开心
    2021-12-8 06:17
  • 签到天数: 68 天

    [LV.6]常住居民II

    发表于 2021-9-28 10:57:48 | 显示全部楼层
    本帖最后由 阿尔文 于 2021-9-28 11:04 编辑
    1 R6 T! \& @4 o1 H' t$ J
    * B, R$ D- t4 c  B) `7 N你的例子说明写得很好,规则很清晰。这个问题不要直接去用正则,而是去用 python 中的正则,这样才好控制复杂性。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2024-4-26 09:22 , Processed in 0.043345 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

    快速回复 返回顶部 返回列表