掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 936|回复: 10

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

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

    [LV.7]常住居民III

    发表于 2020-8-2 09:08:30 | 显示全部楼层 |阅读模式
    本帖最后由 wjl 于 2020-8-2 12:58 编辑
    ! G; q4 y2 \4 I! x; u0 t2 P) O
    # b0 }) |+ W8 ~+ f如何用EmEditor正则表达式进行词组拆分?
    ; Y- L# i, v( w3 P! c! [, Q" jAl/A-one ;    P0001
    2 Z4 w& B8 p( j& j. A更改为
    2 O" @* [" ^  ?Al/A-one ;    P0001( Y# o% {! X4 ]9 Q6 T" [- r3 x$ C
    Al;    P0001
    ( O. D% U+ Q2 qA-one ;    P0001
    5 d, Y" X- f5 S, V___________________________________________________
    ' \2 z0 P( G5 S5 Zquarrel (with sb) about/for/over ;    2313- o( `; U7 T% j0 S* G: M# l1 r
    更改为
    " B/ z* I( T: R8 H8 zquarrel (with sb) about/for/over ;    2313
    0 o) F$ ?, a' Aquarrel with sb about ;    23136 e( L& C8 M0 ?! b9 X' S
    quarrel with sb for ;    23136 q) N2 a8 h& k9 g$ R) a/ ~% [8 r
    quarrel with sb over ;    23139 M) ?  ]5 M- ^
    quarrel about ;    2313
    ' ~! B7 O- Q4 n6 d  Yquarrel for ;    2313
    $ D  Y0 f2 @  [% tquarrel over ;    2313
    ; B8 j' [" f9 a5 \% L___________________________________________________
    " q) Q% {( c5 M) cdabble at/in/with4 i5 C0 @' t: u3 o9 g7 C# _8 n
    更改为. D, ~1 t* j2 ?
    dabble at/in/with' n3 s# E- l% V  p3 z
    dabble at
    9 M& {& R  J4 \dabble in
    1 i/ A; m! o4 w+ a3 F  o. Y6 bdabble with
    . q4 m" j7 ]& U; b# r+ L7 s___________________________________________________) i- J* y3 ~. Q$ D
    damn and blast (sb/sth)' ~: O) n3 l! w2 E9 v' \: w8 F
    更改为% D0 \2 q: D, J+ I$ o1 T; z
    damn and blast (sb/sth)6 {" X" ]5 H8 M4 V" V* S+ o
    damn and blast sb
    3 s6 L  K  ~7 }* Tdamn and blast sth
    + T) T3 q& m7 V5 H" Zdamn and blast
    . K/ J* S) _5 Z+ e& u  m___________________________________________________
    6 l" [6 L% H4 |# b3 h5 gdance on/upon a rope/nothing
    - Y4 s9 v' d- v6 Q  e更改为
    % c% ^/ x! u; t! G. {) Gdance on/upon a rope/nothing+ d) b9 ^& _' U' M: h# K
    dance on a rope
      f( S2 M1 K' O* D+ N" \  rdance upon a rope% _' x" c7 p9 ]5 Y& @$ T8 w7 x! p
    dance on a nothing6 r' }& q8 [8 I3 A* z9 ~8 _
    dance upon a nothing3 J0 p% j3 k( p/ G
    ___________________________________________________
    , t8 F! X8 {2 `' d8 `! vdance on (the) air5 I% ^$ q+ v! ]4 H8 m: O
    更改为. _. b$ @' d1 U3 S) q5 D1 I
    dance on (the) air
    / [, _% M9 V9 k" E! Bdance on the air; J2 |/ l% }4 I3 H, C  W7 l
    dance on air
    8 D2 @2 ?" _# d; L) h3 D  s___________________________________________________2 y8 x4 h2 y% Y0 I4 k/ ]
    dead/flat/stark calm$ ]+ b5 w; G0 }+ X  j
    更改为
    . T7 \+ |) y6 f! R! f2 Qdead/flat/stark calm
    0 P/ w4 W; ?2 mdead calm
    7 X) t9 p: f( {- a9 `; gflat calm
    ) s: |- {% D: N1 a. L. Istark calm
    0 K% ]3 ]# r) q+ f7 s___________________________________________________
    # v& h; Z# m; \. i) }do/go/make the/one's round# w5 T' z/ I2 r
    更改为
    0 \) r4 @9 [  u1 Q) d% ]do/go/make the/one's round
    ( u( w$ q# `: Sdo the round" [4 s- R' g/ e- L
    go the round: P( ?: a& S' o& ]6 N8 g! {0 G
    make the round, Q3 N2 B5 _8 I: M
    do one's round* Q  ^( R. d8 Y# }
    go one's round
    . i+ u; {+ _( c- m% gmake one's round/ x6 {2 \+ M+ u" f
    ___________________________________________________* c9 |$ x0 p+ J* l; w+ r5 C3 j! v( s% F
    do (sb/sth) grace
    ' O# U- n. P$ C/ y) e  [4 D: c更改为+ j7 K$ a& l* S* K9 C
    do (sb/sth) grace: G$ P% ~0 n( {* _" J& ~
    do sb grace: D- k$ [9 K9 }3 O& b  M, z6 n* y
    do sth grace  @2 T$ J7 `! l! S; d  N3 _
    do grace2 c7 y3 M4 C) Z( e* w
    ___________________________________________________
    ! y  _# M8 k5 S0 }- }
    . {7 C6 D: ?  C+ ?固定一种模式的话比较好处理,难度在于/和()的出现次数和位置不固定,可能连续出现,也可能分散出现,两者也可能混合在一起出现。示例文件链接: https://pan.baidu.com/s/18rt8d7KxYOsioihLEXxzfQ 提取码: qn3k。如果EmEditor正则表达式不可行的话,用python代码也行& U$ O2 k4 T3 q1 E2 I- w1 x
    Al/A-one ;    P0001这种简单的可以用- V8 {9 Q: H, L; m- b( e
    \b(\w+)\b/\b([\w-]+)\b(\s{1,});\tP(\d{4})
    + k3 J& }3 s6 @+ @替换为:0 m  u3 u' y7 S9 R
    \1/\2\3;\tP\4\n\1\3;\tP\4\n\2\3;\tP\4
    # O  N5 |* b6 o+ t) [9 d
    ; l+ S% v2 j, M/ F. Q) D9 o- [7 z/ K' i
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 13:12:26 | 显示全部楼层
    本帖最后由 yunhailin123 于 2020-8-2 13:15 编辑
    7 Y) U8 j- l: B- Y4 B. }6 `/ x. z3 E
    可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。( @* k$ s5 ~: o+ v
    所以提取词组版的只有ff的朗文五,其他人很少有那个精力去手动提取词组,毕竟那么多词条,还得肉眼加上手工去写规则你也可以去看看garypang的提取朗文五词组完美版,反正花的心思不少,没有捷径可言
    * e$ ~/ d* @& G- T
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:28:15 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:30 编辑
    5 W2 r, K/ m  O& ]
    yunhailin123 发表于 2020-8-2 13:12
      y# D$ \: [; Y4 K6 Z7 V, d可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。
    3 M2 P" ^9 C0 i5 y! C所以提取词 ...
    9 n; t' e8 ]4 j0 l! {4 {$ ^
    肉眼观察需要考验操作者的观察力和动手能力,可能使用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 编辑
    5 v# ?& S9 M9 Z
    ) n) n: b9 i( n9 _" N& Z英语词典做得少,没遇到过楼主这样的处理需求。要我处理的话,我会把括号「()」和「/」的情况先后处理,最后全处理完后去重
    + z- V/ Y& e5 d& J0 ~$ Z* n: q* v/ S% @3 m3 E( I7 Q* l
    个人感觉:「()」的情况还是不难处理的;「/」的情况不太好处理(因为可能存在这种情况『take some/a lot of doing』,会误拆成 take some lot of doing)3 a2 m' S4 l& M: W2 a
    + `8 [! ^8 a0 F3 \% X: I( L& |6 q
    还有,你这个索引是文本识别得到的?在处理之前建议一定要先排查下字符错误,并且统一下排版,把 txt 理顺,否则后面的处理很容易出问题
    6 v1 }! s: ^4 j8 Z+ e0 {" G- V. R" h
    0 c1 n; F9 A- ]5 s4 C$ E- D& I
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:37:55 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:42 编辑
    7 N9 H2 _6 ?" ~0 C; f, ~* l8 Y! O
    Mandolin 发表于 2020-8-2 13:29+ ^  a& p4 p% ?% P: ?
    英语词典做得少,没遇到过楼主这样的处理需要。要我处理的话,我会把括号「()」和「/」的情况先后处理. N5 g) m- s+ @, P" s$ b
    ; d2 [3 K; Q: S2 i* [  k
    个 ...

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

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:45:02 | 显示全部楼层
    本帖最后由 Mandolin 于 2020-8-2 13:54 编辑
    ; |* c) T+ D# g6 b4 x! S
    wjl 发表于 2020-8-2 13:37+ O1 k+ _6 Q& n. z. k* v' S/ q* g, [
    我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些 ...

    0 ?  m0 w7 o* n如果没有我说的那种情况,那用正则就可以实现。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

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

    4 K* s7 S1 j' S- `5 k如果没有我说的那种情况,那用正则应该就能实现。(果然是在做那本词典,加油,希望作品完成后能分享,很期待)
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:57:53 | 显示全部楼层
    Mandolin 发表于 2020-8-2 13:461 H8 m+ D$ w: c' F0 I1 a# N) @$ v
    如果没有我说的那种情况,那用正则应该就能实现。(果然是在做那本词典,加油,希望作品完成后能分享,很 ...

    1 f" P" q1 r) c: a9 w/ a& \, l/ n1 ~现在还看不到希望,只有3个人参与校对。感觉python字符串拆分方法最简单,不用懂正则表达式,跟人们的思考方法一致。用正则表达式的话,还得肉眼观察出所有模式,再设计相应的正则表达式,否则不知道如何区分和处理仅含()、仅含/、同时含有()和/,同时含有()和/并且()中也含有/,()和/出现一次或多次、连续出现、分散出现这些情况。只有一种固定模式还好设计,难在怎么一次查找替换所有情况
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 16:24:22 | 显示全部楼层
    wjl 发表于 2020-8-2 13:28
    . J8 b* B9 o; W4 R0 h& V! f$ }/ r肉眼观察需要考验操作者的观察力和动手能力,可能使用python代码简单些吧,我有想法,但是编程功底不佳, ...

    . h0 D4 _! B+ E' Z但是要碰见有的词条是这样的 go'es by sb ,这个词组是瞎掰的,只是举个例子,有这样的,你还得再加一个,不管拆分词组还是要找词组,最终目的都是要找到词组的一些规律,即通过观察大量的数据才能下手" D" I1 A, d+ L
    也因为这个没有规律,耗时费精力,所以论坛专门弄词组的屈指可数,数据还比较老了。
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 16:26:53 | 显示全部楼层
    wjl 发表于 2020-8-2 13:57% r  U( `9 t* a( S; O7 {
    现在还看不到希望,只有3个人参与校对。感觉python字符串拆分方法最简单,不用懂正则表达式,跟人们的思 ...
    " m1 H1 O$ v6 \% a. I9 C* N
    建议楼主抽一两个小时恶补一下python基础,只需把基本单位认清,语句怎样写,其实python已经是把代码人性化了,要是c++,过于苛刻。现在随便搜个教程稍微一学,现学现用
  • TA的每日心情
    开心
    2021-12-8 06:17
  • 签到天数: 68 天

    [LV.6]常住居民II

    发表于 2021-9-28 10:57:48 | 显示全部楼层
    本帖最后由 阿尔文 于 2021-9-28 11:04 编辑
    0 H: U1 ]) E' U3 R# y
    * Y3 O* |" x. p1 R你的例子说明写得很好,规则很清晰。这个问题不要直接去用正则,而是去用 python 中的正则,这样才好控制复杂性。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-27 12:22 , Processed in 0.060562 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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