掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 927|回复: 10

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

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

    [LV.7]常住居民III

    发表于 2020-8-2 09:08:30 | 显示全部楼层 |阅读模式
    本帖最后由 wjl 于 2020-8-2 12:58 编辑
    . y6 h0 `; b. I+ \7 Q& q6 F1 \- V: g& A! Y, _
    如何用EmEditor正则表达式进行词组拆分?( b- ~( y5 S; K0 \! X6 t7 n
    Al/A-one ;    P0001
    8 y' M3 M+ Q: y4 w更改为
    . a1 o$ Y, m# |+ o% iAl/A-one ;    P0001& j- d9 [( S5 S9 S, n7 J
    Al;    P0001/ s, \- G" h3 n2 D( J% Z* O) O+ N& K" _
    A-one ;    P0001
    1 e4 Y8 i' ~; Z! n! g3 `___________________________________________________$ ~, t: ^. l* J5 Z/ m8 p: W* \4 v
    quarrel (with sb) about/for/over ;    2313
    ) ?$ l& @, Y5 \: O: U) M更改为
    ; |4 Y6 U( Q  h2 uquarrel (with sb) about/for/over ;    2313
    ' h4 V1 |2 v: G# ?1 mquarrel with sb about ;    23135 c( E+ x6 ?: D/ r& B
    quarrel with sb for ;    23139 h( Z- \% S6 k$ i$ G9 q0 A% g
    quarrel with sb over ;    23137 d2 D) ~) @7 Y* Z
    quarrel about ;    2313
    6 j" M% B2 {0 equarrel for ;    2313. N7 q+ o) d  E$ s+ E. W. H2 W
    quarrel over ;    23134 A' G, G" c# P4 Q
    ___________________________________________________8 t; t0 X5 f! }5 R, C( l; ^8 v& U- y
    dabble at/in/with
    + a8 F6 G' ~5 R0 z( _7 _. C. ~更改为
    1 {5 d5 C  y  Bdabble at/in/with
    9 f) j! B) l$ k% k1 y1 Ydabble at# j$ Z) ~* {' G- ^, N
    dabble in2 @  A( r5 c4 E8 ~
    dabble with& U3 T; |9 g5 L( P# S
    ___________________________________________________/ j( P- ^) M2 R2 v+ Y
    damn and blast (sb/sth)3 y: N! b1 |" o4 X3 P7 [5 K0 z" Z
    更改为
    ! d  B* Y! A$ d( b5 O1 @damn and blast (sb/sth)
    9 }' t$ G- y6 o+ f/ F6 _damn and blast sb
    2 L! O8 T' A$ H( i% X, B% Tdamn and blast sth
    * I8 y2 x; _3 Vdamn and blast
    ( _, ~2 e" S' j# A9 |0 y___________________________________________________
    # J5 X) P7 @, y9 U" pdance on/upon a rope/nothing0 s) K$ H" E# ?4 I, l" z
    更改为
    ' {5 q1 S; z9 Q0 w% Q1 J& I( Hdance on/upon a rope/nothing
    " q0 J. c& r2 [5 [dance on a rope( c7 c- S) Z, r. J& u  ^
    dance upon a rope  B, i. B- H8 X
    dance on a nothing
    / a1 t- E9 j' V+ y9 M2 Zdance upon a nothing5 g( k3 r2 u+ s/ ?( y+ Z
    ___________________________________________________
    . X3 [3 H  o5 V/ Pdance on (the) air
    % V6 |" W1 k' m2 C+ [更改为
    4 L" `9 p( r) @6 Q  [* ]& Qdance on (the) air3 Q3 l8 }- q3 v! R' [2 a2 j# _
    dance on the air
    , I8 Y* C1 C) |5 r0 N- l; Edance on air
    ; |/ G1 v" ~% z6 f  ____________________________________________________
    ! h& l2 i& U6 }; Z; x  H, h; kdead/flat/stark calm
    - p2 T3 u# g7 U6 o4 A更改为
    - L8 G! T& [0 i* ydead/flat/stark calm  A5 s0 O1 _+ I5 `
    dead calm1 _+ a/ w' N8 ]7 p$ N
    flat calm
      H! V, B& q. V: t9 q. ~1 Dstark calm
    ! ^, f, K% ^: t" s( b- o# Q___________________________________________________
    * [) f+ y9 b! J% v) Y- u7 I9 F  Udo/go/make the/one's round; f3 C" A: J6 t
    更改为
    # z3 q- }& A6 h3 m/ ^0 d/ \do/go/make the/one's round8 {3 N( }% d" x9 R0 i) U
    do the round1 A4 {  h0 N, e+ c; y) X( T( `; n
    go the round
    1 }6 ?# w) h" L9 P6 x; @7 Amake the round8 k, q5 r9 `( |8 t9 L
    do one's round
    1 ]/ ]/ p- l+ b9 f; I6 dgo one's round
    3 l' p: t/ [0 v8 hmake one's round
    , r" d- A8 z' n2 K) O# d___________________________________________________+ u) J! {" o1 h0 m
    do (sb/sth) grace# l. k2 K8 b. V& p$ ~
    更改为9 W4 w$ _$ F9 I, m% b) X
    do (sb/sth) grace4 s* ^( q: c5 _& J+ |
    do sb grace
    4 \) D4 C3 `$ R) sdo sth grace
    ) Q& |5 |$ t8 K0 h3 `2 k2 `* W: Cdo grace* T" b, P4 s; W: U; S
    ___________________________________________________
    8 n7 H0 i' _6 @- z# n. p$ j( r) E0 T- w/ U2 e
    固定一种模式的话比较好处理,难度在于/和()的出现次数和位置不固定,可能连续出现,也可能分散出现,两者也可能混合在一起出现。示例文件链接: https://pan.baidu.com/s/18rt8d7KxYOsioihLEXxzfQ 提取码: qn3k。如果EmEditor正则表达式不可行的话,用python代码也行: C; J+ ]6 u& h8 [7 G4 ~
    Al/A-one ;    P0001这种简单的可以用1 ?  Q, ^9 f# E( C0 V
    \b(\w+)\b/\b([\w-]+)\b(\s{1,});\tP(\d{4})
    : X; S+ Y9 u# o+ Q" e替换为:
    - g7 u' H2 e5 [0 A1 s7 {\1/\2\3;\tP\4\n\1\3;\tP\4\n\2\3;\tP\44 h. a) k- U; W. Z: d0 a

      m! c, A0 M1 [! [' X6 H
    5 r! E1 k# X+ V
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 13:12:26 | 显示全部楼层
    本帖最后由 yunhailin123 于 2020-8-2 13:15 编辑
    ' n& ^2 V  k. b4 a
    * @% i0 R4 M0 W+ x) R0 V( a可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。
    9 U: `3 s& @: Q" y; {7 \. i0 T所以提取词组版的只有ff的朗文五,其他人很少有那个精力去手动提取词组,毕竟那么多词条,还得肉眼加上手工去写规则你也可以去看看garypang的提取朗文五词组完美版,反正花的心思不少,没有捷径可言$ Y6 P/ G6 t* l7 \3 Y2 b) U; l
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:28:15 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:30 编辑 . Q2 K: k) _7 D5 ^7 S0 Y; x
    yunhailin123 发表于 2020-8-2 13:12
    # P6 ?, Z% g4 y/ [2 Z- W可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。
    8 t5 `" @  ^  i所以提取词 ...

    ( m  d# a$ _: K, v$ 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 编辑 4 ?2 [% O0 o( R. |! w; j

    0 R! s7 x# v( Q7 C3 ^英语词典做得少,没遇到过楼主这样的处理需求。要我处理的话,我会把括号「()」和「/」的情况先后处理,最后全处理完后去重" K1 K- [! Z: @5 ]
    8 C" F2 x9 a/ Q, E( O0 n
    个人感觉:「()」的情况还是不难处理的;「/」的情况不太好处理(因为可能存在这种情况『take some/a lot of doing』,会误拆成 take some lot of doing)8 s$ a2 z# ]+ X1 W

      {  F/ [: y. e/ b0 m- n还有,你这个索引是文本识别得到的?在处理之前建议一定要先排查下字符错误,并且统一下排版,把 txt 理顺,否则后面的处理很容易出问题
    . ?1 v) T) z1 v: `4 l; C- F* r' V& t4 f, T9 {4 G& [. v! e' r

    1 {& c7 M! v6 ~$ G* Y# q
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:37:55 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:42 编辑 0 i  f* z' P( J, X, q. c; k* t8 U, ]2 {
    Mandolin 发表于 2020-8-2 13:298 r1 r1 P, ?9 f* y8 j4 o
    英语词典做得少,没遇到过楼主这样的处理需要。要我处理的话,我会把括号「()」和「/」的情况先后处理% K" E5 ?7 B+ j

    $ k3 {2 A+ P. h( f2 }9 W; e" @. \个 ...
    1 Q- ]. s8 ]# ]( O4 p; k9 x9 z
    我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些全英文的不需要拆分的部分例外,所以刚开始设计正则表达式时可以按都是简单单词这种情况处理,最后通过选定范围替换或手动替换即可解决例外情况。示例文件是OCR识别文本,尚未校对,仅供设计正则表达式参考用。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:45:02 | 显示全部楼层
    本帖最后由 Mandolin 于 2020-8-2 13:54 编辑
    7 c; q- }& k- v1 v# e- L( o
    wjl 发表于 2020-8-2 13:37. n+ u; q' |  [/ c1 t3 [
    我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些 ...
    ' u4 D7 T/ f% U
    如果没有我说的那种情况,那用正则就可以实现。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:46:26 | 显示全部楼层
    wjl 发表于 2020-8-2 13:37
    $ x# X3 I' C$ G: A( q5 _$ X$ A我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些全 ...
    ( G* }  V  R% |" `( Z& Q# X6 s
    如果没有我说的那种情况,那用正则应该就能实现。(果然是在做那本词典,加油,希望作品完成后能分享,很期待)
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

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

    [LV.6]常住居民II

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

    [LV.6]常住居民II

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

    ) L. ]- A' @' M2 g: G: G4 z建议楼主抽一两个小时恶补一下python基础,只需把基本单位认清,语句怎样写,其实python已经是把代码人性化了,要是c++,过于苛刻。现在随便搜个教程稍微一学,现学现用
  • TA的每日心情
    开心
    2021-12-8 06:17
  • 签到天数: 68 天

    [LV.6]常住居民II

    发表于 2021-9-28 10:57:48 | 显示全部楼层
    本帖最后由 阿尔文 于 2021-9-28 11:04 编辑
    & l+ h2 R2 q( |$ d0 R
    8 N+ N( c8 `  J你的例子说明写得很好,规则很清晰。这个问题不要直接去用正则,而是去用 python 中的正则,这样才好控制复杂性。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-25 09:54 , Processed in 0.051141 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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