掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 918|回复: 10

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

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

    [LV.7]常住居民III

    发表于 2020-8-2 09:08:30 | 显示全部楼层 |阅读模式
    本帖最后由 wjl 于 2020-8-2 12:58 编辑 $ i2 e% u! t* h1 U& A
    ' U9 G1 \$ [  ?+ D. Y
    如何用EmEditor正则表达式进行词组拆分?
    & Z- x# L$ a, \4 L* |( _' ?Al/A-one ;    P0001
    1 C- O+ T0 I- w6 K- y& b; z5 A更改为
    / L6 b& U" \; e; ]Al/A-one ;    P0001
    4 L5 ]! d" d2 r1 K! UAl;    P0001
    7 {( r! ]: \) O: p- V0 oA-one ;    P0001$ x/ D1 T5 m- A9 Z
    ___________________________________________________
    # \5 H6 A: N& M# j4 c" l1 @) M% ]quarrel (with sb) about/for/over ;    2313
    : ^) t/ \! B4 h7 D, O更改为
    ( w) ?# {1 N! Y" G2 Xquarrel (with sb) about/for/over ;    2313% ?+ f% J% I1 _0 Y
    quarrel with sb about ;    2313
    # T( p, i- V7 z, @& f1 I4 Rquarrel with sb for ;    23130 G8 g/ |% A& H, _
    quarrel with sb over ;    2313
    0 v; H7 {4 j# K1 Bquarrel about ;    23136 C1 k! u& T8 S; i3 t9 P- n1 U
    quarrel for ;    2313$ g8 R+ w* C6 Y' G0 d1 d. S7 M
    quarrel over ;    2313
    : W5 ^' M6 C0 l- c* g___________________________________________________
    ( m4 l9 ^) z$ q7 M3 L6 c& Idabble at/in/with
    # c2 C1 Y) y; u: X. L  u- q更改为! O' y" V/ I3 F# a( ^
    dabble at/in/with
    6 ~/ I% H0 O: k- ndabble at! @" M' a3 s) b7 A3 X5 d
    dabble in
    4 P. x# D/ V$ j, |  y* Adabble with
    5 w! Y1 q! F7 G* `. P# I. u4 E: Z___________________________________________________' v3 s+ _5 ~) J
    damn and blast (sb/sth)& z: w; s/ i1 T2 H
    更改为
    ; w& F: `3 d9 `$ c/ xdamn and blast (sb/sth)* s) r9 r7 h7 t- W: ?
    damn and blast sb
    9 F9 W  c) s4 z2 e5 {0 ldamn and blast sth; V+ H; D( q& _! _% x6 a! |
    damn and blast
    3 A4 V5 [  X7 V: F! X___________________________________________________
    , ~  T  [: M7 H# v& z: zdance on/upon a rope/nothing
    1 ~, j1 q4 T# ~( X, ~更改为1 Y/ V  ?) Y4 b3 e& d) }
    dance on/upon a rope/nothing
    : W/ {+ D% [5 fdance on a rope
    : I# L/ B3 n2 O1 b  W) Tdance upon a rope/ D5 C. D' j, q3 p2 i1 m2 s. w
    dance on a nothing$ }; D$ C- X5 P7 M
    dance upon a nothing, o3 `. V. U6 j9 b/ N% R" F
    ___________________________________________________  r1 V' @8 p; e  \% x
    dance on (the) air
    " i7 e4 L, O0 J2 f2 R  V更改为
    ; ?* h6 g" {5 d; [; K& F' Pdance on (the) air
    ) j8 C+ B, ?5 h+ o7 g: Bdance on the air
    8 X1 T) `& a  Y9 }4 vdance on air
    % ~% w! [, H) i/ Y4 J, t" T0 s___________________________________________________  L! Z: t% ~' ^% {8 y; |
    dead/flat/stark calm& e4 ~9 E9 l0 g& ]) m
    更改为, {2 V: u9 B9 r/ k8 Y
    dead/flat/stark calm
    6 W! n0 X8 o$ G2 d& Z6 Adead calm8 z/ \1 I4 r) J5 O1 W# x- d; C+ Q
    flat calm
    ( m1 O' z! }8 f8 X* estark calm
    8 F6 K$ n+ E5 I___________________________________________________$ i/ X9 U. B: P; y" D
    do/go/make the/one's round
    $ ^- f# a# [1 t0 t3 T& W6 @更改为
    7 z1 e! d5 p1 pdo/go/make the/one's round# A3 F( r, f' A9 D7 Y0 d
    do the round
    3 `/ C' o2 n' `2 b& jgo the round1 R: M6 E, I6 h, d
    make the round
    9 D$ K  |% o: j. Sdo one's round
    8 @, H4 ~1 I8 O2 Pgo one's round& o: u8 B3 U) p9 w9 P% |
    make one's round
    " w! X8 W' P4 B___________________________________________________- V: z3 \$ r( M  {1 q2 S
    do (sb/sth) grace
    ! x& D/ b  f8 M$ l, S9 d! b更改为  L/ k# M, w! M( y) c! ~  c
    do (sb/sth) grace
    * i' K$ I: K/ n3 ?6 e: }4 fdo sb grace$ b" }3 I! ~8 S, P6 }, i3 p
    do sth grace0 |+ Q/ G7 K0 S) Z$ K6 Y6 |2 m# o
    do grace5 v5 q) c1 Z! F2 X- i2 X: S
    ___________________________________________________* ^% P4 K* @6 W0 ]' D

    ) i- a2 j. V4 P' @2 S1 v+ ?固定一种模式的话比较好处理,难度在于/和()的出现次数和位置不固定,可能连续出现,也可能分散出现,两者也可能混合在一起出现。示例文件链接: https://pan.baidu.com/s/18rt8d7KxYOsioihLEXxzfQ 提取码: qn3k。如果EmEditor正则表达式不可行的话,用python代码也行
    2 C' d; |6 j0 f# mAl/A-one ;    P0001这种简单的可以用% e2 }$ u( ]# D- [" F9 ]2 L
    \b(\w+)\b/\b([\w-]+)\b(\s{1,});\tP(\d{4}): b2 I2 C! n- c+ D% O  ^! q
    替换为:
    " `3 _0 n. q; G" g1 t  |\1/\2\3;\tP\4\n\1\3;\tP\4\n\2\3;\tP\4
    ' n% k" d+ }) d2 A  r1 L2 j4 d' ~) B1 g" ^4 ]9 b9 ^8 c

    2 a4 n5 z  V4 \. d
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 13:12:26 | 显示全部楼层
    本帖最后由 yunhailin123 于 2020-8-2 13:15 编辑 ' h  t3 U) k9 D3 e1 x/ C1 O
    3 _' `4 L" b+ j6 C7 J  Q0 t
    可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。8 @! \/ ?  i" f1 }6 u% v7 T9 c
    所以提取词组版的只有ff的朗文五,其他人很少有那个精力去手动提取词组,毕竟那么多词条,还得肉眼加上手工去写规则你也可以去看看garypang的提取朗文五词组完美版,反正花的心思不少,没有捷径可言
    ) x  \, A8 v. K" j2 m7 Q1 s* {
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:28:15 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:30 编辑 ( S6 r, S9 b5 c; F1 Z. Y, C
    yunhailin123 发表于 2020-8-2 13:12
    5 S" p0 Y: }5 H5 x$ i' i; X! \可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。
    * {* L% Q6 ]7 T6 n5 Z" D所以提取词 ...

    & H( h9 q) ~, F% O5 E* ^肉眼观察需要考验操作者的观察力和动手能力,可能使用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 编辑 ! `: U% j7 t" M# r7 }) `) e
    * c6 E+ y, L/ A7 ?- c) ?7 X( Q
    英语词典做得少,没遇到过楼主这样的处理需求。要我处理的话,我会把括号「()」和「/」的情况先后处理,最后全处理完后去重
    8 {" j4 Q1 B6 x1 j' ]+ W
    2 b* y4 x# F' m个人感觉:「()」的情况还是不难处理的;「/」的情况不太好处理(因为可能存在这种情况『take some/a lot of doing』,会误拆成 take some lot of doing)' q0 z6 O* c0 z$ E9 f9 e4 C6 F
    / {3 t0 w3 t2 @* {
    还有,你这个索引是文本识别得到的?在处理之前建议一定要先排查下字符错误,并且统一下排版,把 txt 理顺,否则后面的处理很容易出问题+ v* g* @4 s! E0 J

    ) W( j0 E6 _% W; d2 H
    ; w& d. }9 h" ]4 B
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:37:55 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:42 编辑
    0 Q' K& K3 n- ^; {% O+ u
    Mandolin 发表于 2020-8-2 13:29
    9 `  ^1 y2 O% g6 d5 e- `9 d英语词典做得少,没遇到过楼主这样的处理需要。要我处理的话,我会把括号「()」和「/」的情况先后处理' o: n, ?; L0 V
    ! ^% `/ d9 v9 q- `
    个 ...
    4 p, o: L# u0 h6 q$ K2 ]2 d1 R1 _
    我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些全英文的不需要拆分的部分例外,所以刚开始设计正则表达式时可以按都是简单单词这种情况处理,最后通过选定范围替换或手动替换即可解决例外情况。示例文件是OCR识别文本,尚未校对,仅供设计正则表达式参考用。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:45:02 | 显示全部楼层
    本帖最后由 Mandolin 于 2020-8-2 13:54 编辑 - b% ]% m" M$ M3 C" `0 L
    wjl 发表于 2020-8-2 13:37
    " I1 J! e: v8 _+ i, ?我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些 ...

    ! P( _3 b; Q' z" l1 |如果没有我说的那种情况,那用正则就可以实现。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

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

    " U! K! n3 p! ^3 t! }& @4 `如果没有我说的那种情况,那用正则应该就能实现。(果然是在做那本词典,加油,希望作品完成后能分享,很期待)
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

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

    [LV.6]常住居民II

    发表于 2020-8-2 16:24:22 | 显示全部楼层
    wjl 发表于 2020-8-2 13:28
    * }) ]) p3 ?2 ]9 j0 |肉眼观察需要考验操作者的观察力和动手能力,可能使用python代码简单些吧,我有想法,但是编程功底不佳, ...
    $ I( K$ y" {6 q( L" m7 ~
    但是要碰见有的词条是这样的 go'es by sb ,这个词组是瞎掰的,只是举个例子,有这样的,你还得再加一个,不管拆分词组还是要找词组,最终目的都是要找到词组的一些规律,即通过观察大量的数据才能下手/ S- d# c  d7 Q0 X4 J( t& T
    也因为这个没有规律,耗时费精力,所以论坛专门弄词组的屈指可数,数据还比较老了。
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 16:26:53 | 显示全部楼层
    wjl 发表于 2020-8-2 13:57! E7 \( ^$ i) |7 G6 o" B2 s' b) X
    现在还看不到希望,只有3个人参与校对。感觉python字符串拆分方法最简单,不用懂正则表达式,跟人们的思 ...
    ; h/ p- @( I% e1 @
    建议楼主抽一两个小时恶补一下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 E, s# C: ?- b2 N3 w( h
    : m4 Y) ^  v/ K( a+ h0 O* t8 r你的例子说明写得很好,规则很清晰。这个问题不要直接去用正则,而是去用 python 中的正则,这样才好控制复杂性。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-20 05:48 , Processed in 0.039390 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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