掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 934|回复: 10

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

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

    [LV.7]常住居民III

    发表于 2020-8-2 09:08:30 | 显示全部楼层 |阅读模式
    本帖最后由 wjl 于 2020-8-2 12:58 编辑 2 g2 X/ h9 L% a/ ^
    ( r- j) D) z3 e- h/ E2 A7 E
    如何用EmEditor正则表达式进行词组拆分?
    3 ~2 z; N4 y  m; ~7 D" t/ qAl/A-one ;    P00010 [/ P4 d4 ]- x; P7 ~( p
    更改为
    ( F& Q* D" K( Q0 R& L6 q' Q: qAl/A-one ;    P0001# x) T( O9 |, l& W# B# d
    Al;    P0001# R- w, I3 n3 m* \4 i
    A-one ;    P0001% s4 s& v" s: P; W# n! }) u
    ___________________________________________________6 Z1 \* f% K  f# ], b0 U
    quarrel (with sb) about/for/over ;    2313
    , a7 F. T. S7 W% `更改为
    & A. Q+ I' i) W6 X2 O+ hquarrel (with sb) about/for/over ;    2313: n* b. Z  F+ |. [, q- o
    quarrel with sb about ;    2313
    ( Y# s) b& \5 M0 V# b& equarrel with sb for ;    23133 \1 ~9 \- i3 D/ a2 @( G
    quarrel with sb over ;    2313
    # k5 v% ]5 t; q6 K" V. f0 p) F6 dquarrel about ;    2313  ?5 t; ^  O$ }7 V" i5 W+ M+ |
    quarrel for ;    2313
    0 H" X* o" v6 ]! Z$ h; t6 squarrel over ;    2313/ J- V8 o; B/ A; o8 [
    ___________________________________________________7 x  @, Z/ x3 \% O/ Y& e9 k
    dabble at/in/with
    $ N9 p) [* V6 V& V8 }1 O5 F更改为
    % R! F: `+ P: }7 bdabble at/in/with
    : Z' j. N! S, N/ x; Zdabble at
    2 a3 G( T1 ?5 r# @4 B% R- qdabble in3 b  c. L/ W) R' h2 M' C5 s5 {+ |
    dabble with" O7 ?% u0 [" T+ Y, ?
    ___________________________________________________1 Z# q' U/ X( }! d  k% p# D9 c
    damn and blast (sb/sth): s* Z7 D6 q4 @! _( e
    更改为
    3 ~1 a6 Y: \) |0 Z2 ldamn and blast (sb/sth)7 R; a4 L1 \$ W2 T, K
    damn and blast sb
    ' j# {! W1 A+ ]2 r' J7 pdamn and blast sth1 Z: l) s! w6 b) V7 _
    damn and blast' p3 P% m" }3 Q9 r4 \9 ]+ P
    ___________________________________________________' s0 r8 {9 |$ I/ o( P* O4 Q( |
    dance on/upon a rope/nothing
    : R# b& u: i; S9 K$ j更改为; A- R' `% I# M7 a, h/ T  I7 k' }
    dance on/upon a rope/nothing
    " r3 _, c3 r) H: R* Bdance on a rope$ A" e# N( u, a; o+ }6 r# I7 ^
    dance upon a rope
    0 J& ~/ P& Z! _) Q. @0 fdance on a nothing$ Y6 s# ?- V: y+ N  w
    dance upon a nothing
    # N+ S( K) P8 [# t2 K9 m. T6 n$ \___________________________________________________; v) q0 j; ]8 {7 \( P
    dance on (the) air
    0 Y8 ]: \$ Z  W, z; M, }$ f更改为) v: a7 \3 h) m" \
    dance on (the) air1 W" C; j: q. ~+ k$ ~
    dance on the air1 M- L+ V: t0 x3 S# i0 a; J. x
    dance on air! C0 `4 C0 D* O0 V" I7 U; b4 I; H
    ___________________________________________________
    / l' E9 j: J" odead/flat/stark calm
    7 _0 M6 b' n# X9 r& h更改为
    # V: y5 ]$ {5 R6 ?dead/flat/stark calm% f( N# w9 h* D+ }- A
    dead calm; |. `# w9 K' R$ H5 E
    flat calm  Y2 w' q4 {, F8 G; @2 a- m" |1 E
    stark calm
    & K- C" i2 M- w& [6 h* S; q( |- R___________________________________________________) S3 I3 |& \+ s, ~# A
    do/go/make the/one's round6 s: e9 l+ y5 g6 t" V2 @) K5 p: d( M( ^
    更改为0 T  }: i; y6 |
    do/go/make the/one's round
    ' ~8 d7 P7 _- edo the round. e  R+ I8 ^( d
    go the round
    ) @6 C8 Q7 I& N1 Fmake the round% o; W* N% v* }1 o
    do one's round
    , O- a, _* Z: w* s$ tgo one's round
    * Q3 n- Y6 O7 T/ Nmake one's round9 d! C; ?' ~' w" U6 M
    ___________________________________________________
    6 i% j$ D  M: B  X1 K/ Ndo (sb/sth) grace
    + P" H/ A4 J# V6 O4 N$ }1 ~0 H更改为
    ' R) k* L! Y' fdo (sb/sth) grace
    " t% |; K# r9 w/ \do sb grace( @1 K. t. R+ g" n! U8 X) n
    do sth grace. z( @7 @" W+ j4 |. n
    do grace6 p; C" Z: h. @/ O
    ___________________________________________________
    2 y) D" ]0 |' p
    & `) N8 x# j8 u' w7 I7 }固定一种模式的话比较好处理,难度在于/和()的出现次数和位置不固定,可能连续出现,也可能分散出现,两者也可能混合在一起出现。示例文件链接: https://pan.baidu.com/s/18rt8d7KxYOsioihLEXxzfQ 提取码: qn3k。如果EmEditor正则表达式不可行的话,用python代码也行6 _5 d+ `* L5 t( p, q. ~
    Al/A-one ;    P0001这种简单的可以用$ c' _. I3 ?8 I' H9 _) x. t
    \b(\w+)\b/\b([\w-]+)\b(\s{1,});\tP(\d{4})1 k0 _: q; f3 q) W  o* L
    替换为:
    : P1 T+ a# a* B0 O. }7 B\1/\2\3;\tP\4\n\1\3;\tP\4\n\2\3;\tP\4) t7 ?3 e' D( V7 c

    ! a# q: X3 {  D) o$ U
    " l% L# z8 P; E: B: L3 S
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 13:12:26 | 显示全部楼层
    本帖最后由 yunhailin123 于 2020-8-2 13:15 编辑 . G' f6 _9 Z" G3 O3 ]
    " k. q$ T' W" I. |6 m
    可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。
    + k" X5 F( i5 r+ x  v所以提取词组版的只有ff的朗文五,其他人很少有那个精力去手动提取词组,毕竟那么多词条,还得肉眼加上手工去写规则你也可以去看看garypang的提取朗文五词组完美版,反正花的心思不少,没有捷径可言
    6 v9 a6 i# E6 @3 Q& w- F
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:28:15 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:30 编辑 / R0 u+ N5 R" Y. Y
    yunhailin123 发表于 2020-8-2 13:12- m) Q) o8 Z! Z: N: n. c% G
    可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。
    ; ~) m$ q! @8 @8 D7 r: J6 \5 ~所以提取词 ...

    , z" o) z, h- w* o( T肉眼观察需要考验操作者的观察力和动手能力,可能使用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 编辑
    0 k/ r/ ?8 P" g8 M5 x8 R  Q5 \- C0 v' Z0 |
    英语词典做得少,没遇到过楼主这样的处理需求。要我处理的话,我会把括号「()」和「/」的情况先后处理,最后全处理完后去重' @7 K0 e' |2 J* S: d
    8 `3 ]) F9 M' h1 D" Y9 |
    个人感觉:「()」的情况还是不难处理的;「/」的情况不太好处理(因为可能存在这种情况『take some/a lot of doing』,会误拆成 take some lot of doing)
    3 K6 k2 y6 h+ s. h/ _( M6 w
    $ R; P9 c# I. D- B还有,你这个索引是文本识别得到的?在处理之前建议一定要先排查下字符错误,并且统一下排版,把 txt 理顺,否则后面的处理很容易出问题- t9 t* ~. m0 [

    2 ?. M) ], o. e3 F/ ~6 t
    + v# C/ Z! T/ Y  e: R' j- T# N6 f
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:37:55 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:42 编辑 7 w' k$ {. B% q1 U& R1 H& s+ z) f
    Mandolin 发表于 2020-8-2 13:293 s( t5 k7 ^. C/ P3 L" @; |' S
    英语词典做得少,没遇到过楼主这样的处理需要。要我处理的话,我会把括号「()」和「/」的情况先后处理9 \$ _) E; A& w0 [- Q% k
    7 N, S8 C5 y% B2 z+ u  Y! W
    个 ...
    % G- ]" o9 f9 p: _# q6 i
    我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些全英文的不需要拆分的部分例外,所以刚开始设计正则表达式时可以按都是简单单词这种情况处理,最后通过选定范围替换或手动替换即可解决例外情况。示例文件是OCR识别文本,尚未校对,仅供设计正则表达式参考用。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:45:02 | 显示全部楼层
    本帖最后由 Mandolin 于 2020-8-2 13:54 编辑 & r( j- y7 ~* T# C1 B" C
    wjl 发表于 2020-8-2 13:37
    ) X  k, D' [4 P" j6 ]我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些 ...

      X, p& V3 u5 K) G2 y. [4 i$ e如果没有我说的那种情况,那用正则就可以实现。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:46:26 | 显示全部楼层
    wjl 发表于 2020-8-2 13:37: n/ \% }5 Z8 x4 ]* Z/ ?
    我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些全 ...

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

    [LV.7]常住居民III

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

    [LV.6]常住居民II

    发表于 2020-8-2 16:24:22 | 显示全部楼层
    wjl 发表于 2020-8-2 13:28; @6 y( W- P4 c4 J
    肉眼观察需要考验操作者的观察力和动手能力,可能使用python代码简单些吧,我有想法,但是编程功底不佳, ...
    8 P% i% s& p) m3 G" X
    但是要碰见有的词条是这样的 go'es by sb ,这个词组是瞎掰的,只是举个例子,有这样的,你还得再加一个,不管拆分词组还是要找词组,最终目的都是要找到词组的一些规律,即通过观察大量的数据才能下手2 P/ ?4 [( ^) P
    也因为这个没有规律,耗时费精力,所以论坛专门弄词组的屈指可数,数据还比较老了。
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 16:26:53 | 显示全部楼层
    wjl 发表于 2020-8-2 13:57
    1 M+ m3 L) I: P6 p7 Y  [$ A" K- G现在还看不到希望,只有3个人参与校对。感觉python字符串拆分方法最简单,不用懂正则表达式,跟人们的思 ...
    5 T& d$ ?7 x$ Q9 k$ f8 Q
    建议楼主抽一两个小时恶补一下python基础,只需把基本单位认清,语句怎样写,其实python已经是把代码人性化了,要是c++,过于苛刻。现在随便搜个教程稍微一学,现学现用
  • TA的每日心情
    开心
    2021-12-8 06:17
  • 签到天数: 68 天

    [LV.6]常住居民II

    发表于 2021-9-28 10:57:48 | 显示全部楼层
    本帖最后由 阿尔文 于 2021-9-28 11:04 编辑 9 N/ P' ]& X( h5 G9 V  y
    + T" \* i( s0 D0 \9 D+ f9 ~9 M
    你的例子说明写得很好,规则很清晰。这个问题不要直接去用正则,而是去用 python 中的正则,这样才好控制复杂性。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-27 02:50 , Processed in 0.049185 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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