掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 945|回复: 10

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

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

    [LV.7]常住居民III

    发表于 2020-8-2 09:08:30 | 显示全部楼层 |阅读模式
    本帖最后由 wjl 于 2020-8-2 12:58 编辑 + W8 S# S; a/ }  G
    ( y% ?+ }5 |0 u! l
    如何用EmEditor正则表达式进行词组拆分?( a' r- q. v4 W+ G) q; u
    Al/A-one ;    P0001
    . `7 l3 Y7 ^. z8 R$ J更改为
    + ~6 L4 ^& A! M8 `4 n# A, f: n: KAl/A-one ;    P00010 @1 t' q$ z$ C' V
    Al;    P00012 J/ p; ~5 M2 }* e  D% Y2 U
    A-one ;    P0001
    ; b+ I7 H' M& B. H; H' @___________________________________________________: J8 N1 w. t0 {, f2 F: t- }
    quarrel (with sb) about/for/over ;    23130 u8 J; f/ T$ d, Q: t: q
    更改为$ Z) ^+ A) _( G  \
    quarrel (with sb) about/for/over ;    2313# B. f8 h& v* ]4 o& L7 b7 O
    quarrel with sb about ;    2313
    : Q: Z8 l/ n3 W! pquarrel with sb for ;    2313
    6 p& n1 {: h" ?, cquarrel with sb over ;    23138 j" n. {( }; K/ P+ t0 z
    quarrel about ;    2313
    8 M! z+ r' n! {* L/ Mquarrel for ;    2313
    & Z; z/ P: V8 k. nquarrel over ;    2313
    2 |3 L, R8 m5 n! h___________________________________________________
    ) }0 |9 D3 h6 k5 d- R5 Odabble at/in/with
    6 }& B7 \5 ^; o; }; R- ~$ ^) ]5 n更改为
    ; I, u" X9 q8 [3 g. i+ C$ Zdabble at/in/with) n" I1 s& o! S6 q2 f' r1 e+ \
    dabble at
    : ^' _  K2 X3 b9 m0 q- H7 U/ F$ K* X1 Tdabble in3 B+ Q& y/ v9 M
    dabble with
    0 o4 d& q' u! A0 V; }___________________________________________________
    8 E1 e2 s; d+ Edamn and blast (sb/sth)
    " r- f$ [" K4 b* d$ E1 m更改为  o' b# ~6 g( K5 V: B' \; P* T
    damn and blast (sb/sth)
    - o' H4 o! ?1 n+ `, wdamn and blast sb# l: ?* q( c; n1 u$ _/ B& R
    damn and blast sth
    ) b6 U* S' y1 D, W& J3 m7 Xdamn and blast! y7 D. N' k" p1 H( H# H2 U' f; T
    ___________________________________________________9 L* Q& a' k4 T8 M. U6 R: k
    dance on/upon a rope/nothing9 f& T8 Z* a! {& [8 f! Q
    更改为2 U/ Z0 U) H, o! W. N  O# x
    dance on/upon a rope/nothing% n! }, x9 O5 d  b/ L/ W. w
    dance on a rope
    ' ?4 z5 p: ]6 q9 Cdance upon a rope1 \5 ?5 L5 `7 _. A+ H2 E
    dance on a nothing5 b- n& l& e- X; U* R$ t
    dance upon a nothing% m7 z% ~( C8 L% i! |$ w# V. e/ u8 ~- B
    ___________________________________________________( m! o; g; |" d+ Z; t& j
    dance on (the) air9 ?, i: j/ k  y5 G% T
    更改为. r5 m! K$ [! i# \1 m# l3 ^4 J8 a
    dance on (the) air
    1 t+ y7 O/ j! {8 Mdance on the air2 X) W* w2 M( w' g( q6 U
    dance on air) m9 u. e# T$ m& M  K% L
    ___________________________________________________( @3 }& Q% k. n' \
    dead/flat/stark calm4 Z' }' ]  v' ~6 R) t6 b
    更改为
    / a3 o; r( z, V$ R4 U  y/ V% adead/flat/stark calm& ?+ h6 Y- O( H+ H
    dead calm( l( B; z( p% E: \6 k5 z; E
    flat calm
    + P; j. i5 [, p- k/ y4 W; pstark calm
    9 \( C' i, i1 `* Y. B0 u5 I- c. O# ?0 h___________________________________________________
    " a6 T' B6 W. o) _+ U: C% \1 E0 pdo/go/make the/one's round
    2 d5 V; D' i: [3 `$ X6 s4 D更改为
    + D. ?. f# {& edo/go/make the/one's round1 _; C. x8 H& R) z3 [% _' i
    do the round4 B4 b, w# {( g1 E5 W( w7 s
    go the round
    + G+ @4 Y# ?! h; b9 Y0 @/ v( Smake the round
    8 P& @- ?* \0 u7 {do one's round
    5 q( u! G1 U% v9 n; Vgo one's round8 E2 J3 A7 s! H% @
    make one's round
    " [# D+ _6 i0 E# U___________________________________________________$ S4 \# I# @( \: h
    do (sb/sth) grace0 N2 w9 U/ D+ n; }
    更改为) |5 P- Q/ a$ F' ?$ G& t
    do (sb/sth) grace) v1 L, o  q3 \- P( C3 Y! I
    do sb grace. B% E. N" N- |9 j! c& R
    do sth grace6 e/ G( b1 {/ i6 o
    do grace
    : ?4 Z+ F2 L- K9 }6 o3 ]___________________________________________________
    5 c0 l  W- J3 B
    8 G$ C5 }$ K3 X1 m0 S8 O% }固定一种模式的话比较好处理,难度在于/和()的出现次数和位置不固定,可能连续出现,也可能分散出现,两者也可能混合在一起出现。示例文件链接: https://pan.baidu.com/s/18rt8d7KxYOsioihLEXxzfQ 提取码: qn3k。如果EmEditor正则表达式不可行的话,用python代码也行3 Y8 H: Y) n1 W+ \8 e/ s1 i
    Al/A-one ;    P0001这种简单的可以用5 l- u' }; m$ [( r# E- c0 a) L
    \b(\w+)\b/\b([\w-]+)\b(\s{1,});\tP(\d{4})
    2 L- Z9 g' Y7 d/ p替换为:
    2 T1 D2 C  X! l( L\1/\2\3;\tP\4\n\1\3;\tP\4\n\2\3;\tP\4- H% E- A# n8 A; @

    ; C( K! ?4 W+ K) a% q$ `/ Z/ Z  t) E% S/ Z- ~
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 13:12:26 | 显示全部楼层
    本帖最后由 yunhailin123 于 2020-8-2 13:15 编辑 0 T" b! [; G" `; [. \# X
    3 W" @: x1 |* g7 D: c
    可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。; R" n  ]4 M1 ]* O& V
    所以提取词组版的只有ff的朗文五,其他人很少有那个精力去手动提取词组,毕竟那么多词条,还得肉眼加上手工去写规则你也可以去看看garypang的提取朗文五词组完美版,反正花的心思不少,没有捷径可言& F8 @  d2 c2 ^7 O
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:28:15 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:30 编辑 + r) q0 E" ?& L" \
    yunhailin123 发表于 2020-8-2 13:12- }+ U/ s5 d' S3 j* @
    可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。7 Z, [+ c# I; r3 V' O; ~6 ?2 Y
    所以提取词 ...

    ) K/ `3 j0 ]3 G$ Z; _$ i9 Z* u肉眼观察需要考验操作者的观察力和动手能力,可能使用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 编辑
    8 p0 C! X' P3 N" \  t+ I7 \2 t2 W
      z7 I' w2 d1 p% ?$ e0 ^英语词典做得少,没遇到过楼主这样的处理需求。要我处理的话,我会把括号「()」和「/」的情况先后处理,最后全处理完后去重# \+ f. x) B$ a+ z% A8 U

    ! O. _+ b: r' X, F- o8 {个人感觉:「()」的情况还是不难处理的;「/」的情况不太好处理(因为可能存在这种情况『take some/a lot of doing』,会误拆成 take some lot of doing)7 {( k9 y0 S6 U$ U" k9 x
    5 b# r6 N* G# ^. N% \" U
    还有,你这个索引是文本识别得到的?在处理之前建议一定要先排查下字符错误,并且统一下排版,把 txt 理顺,否则后面的处理很容易出问题- |- t! E$ P" C( J  G9 r

    * K( J! B# J' V" c. a0 C
    . M& i% f5 I9 \
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:37:55 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:42 编辑 & ]4 R1 F8 I1 |+ C; ^! C
    Mandolin 发表于 2020-8-2 13:297 e: z0 ^, y8 k! Z% M) \
    英语词典做得少,没遇到过楼主这样的处理需要。要我处理的话,我会把括号「()」和「/」的情况先后处理
      R3 W4 ?+ j* j5 [  ^/ c% i; r% i" I- M, E
    个 ...

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

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:45:02 | 显示全部楼层
    本帖最后由 Mandolin 于 2020-8-2 13:54 编辑 3 d4 h0 }. a; C1 T+ l* \" L1 r
    wjl 发表于 2020-8-2 13:37
    ! I) i, r& T! `. e+ X$ y$ ?" B我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些 ...
    2 f0 Y! e( w/ d) _' A4 l' @" @  N9 s
    如果没有我说的那种情况,那用正则就可以实现。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:46:26 | 显示全部楼层
    wjl 发表于 2020-8-2 13:37
    6 @) ~! f$ G3 Q! [; Z4 b我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些全 ...

    . z) E- ~1 n8 _) F' [如果没有我说的那种情况,那用正则应该就能实现。(果然是在做那本词典,加油,希望作品完成后能分享,很期待)
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

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

    [LV.6]常住居民II

    发表于 2020-8-2 16:24:22 | 显示全部楼层
    wjl 发表于 2020-8-2 13:28/ T: m* F$ ~  B/ x# Q- h, R5 i
    肉眼观察需要考验操作者的观察力和动手能力,可能使用python代码简单些吧,我有想法,但是编程功底不佳, ...
      |; w- J/ J$ d; ^- o3 j2 M
    但是要碰见有的词条是这样的 go'es by sb ,这个词组是瞎掰的,只是举个例子,有这样的,你还得再加一个,不管拆分词组还是要找词组,最终目的都是要找到词组的一些规律,即通过观察大量的数据才能下手
    . h0 J5 I! a# J. X也因为这个没有规律,耗时费精力,所以论坛专门弄词组的屈指可数,数据还比较老了。
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 16:26:53 | 显示全部楼层
    wjl 发表于 2020-8-2 13:57
    ; D) B, Z% G2 @3 h! y: Y现在还看不到希望,只有3个人参与校对。感觉python字符串拆分方法最简单,不用懂正则表达式,跟人们的思 ...

    4 t$ |& p' D( u- Z$ `* J3 ?建议楼主抽一两个小时恶补一下python基础,只需把基本单位认清,语句怎样写,其实python已经是把代码人性化了,要是c++,过于苛刻。现在随便搜个教程稍微一学,现学现用
  • TA的每日心情
    开心
    2021-12-8 06:17
  • 签到天数: 68 天

    [LV.6]常住居民II

    发表于 2021-9-28 10:57:48 | 显示全部楼层
    本帖最后由 阿尔文 于 2021-9-28 11:04 编辑
    " z% z2 \3 m! v* X
    ( m! h, ~* }! F+ ^/ H7 Y. j( K+ }' ]你的例子说明写得很好,规则很清晰。这个问题不要直接去用正则,而是去用 python 中的正则,这样才好控制复杂性。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-5-5 15:27 , Processed in 0.046332 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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