掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 944|回复: 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 C* C* y' W. Q# b' D1 ?
    ( r+ \8 ]; h; G6 K  H& P如何用EmEditor正则表达式进行词组拆分?
    ( r9 R2 i' U1 r2 z7 D. Y$ xAl/A-one ;    P0001
    ( Z) P& ]2 i: G更改为# J0 j$ Z! w# x* w$ ?
    Al/A-one ;    P0001
    3 I* d9 G0 v$ ?" \; xAl;    P00018 }8 u8 [& [9 }. ?! D. s5 [! S. f
    A-one ;    P0001
    9 w9 ~/ z) @& x, e6 E, T___________________________________________________
    * }! D; g! Z9 Y& D$ F# bquarrel (with sb) about/for/over ;    23139 k3 U, r: w% s% Q# g2 [
    更改为
    ! K3 G& g- g/ Kquarrel (with sb) about/for/over ;    2313
    2 A2 U! D# x" A# k2 M8 }) Q8 Vquarrel with sb about ;    2313
    8 R9 P9 f% @3 k4 |3 @) |quarrel with sb for ;    2313) f( O& \' J: {, F# z/ F1 N% w
    quarrel with sb over ;    23132 H  s$ }$ r) g! {6 K0 _! |! q
    quarrel about ;    2313
    6 G+ _$ L* _8 x0 M  Bquarrel for ;    2313# m, S" ^; W4 t/ }. J
    quarrel over ;    2313. M( l# W5 o5 Z/ z1 a6 H8 ?
    ___________________________________________________2 r* E6 d1 ?$ _. {9 Z0 L5 C0 m2 q# }
    dabble at/in/with
    6 E: O. W. Y; P6 r4 {# c% |( H/ s更改为8 s' k0 S0 Q- D, |
    dabble at/in/with
    ! P3 s" }# g' X" tdabble at
    $ P) Y5 Y9 O. n9 r( Rdabble in
    0 w- [  Z  w$ `6 R" \+ k7 fdabble with: T, \. W) a% Y+ k. I  a$ |& b
    ___________________________________________________
    , v0 X- }+ R7 L" `  pdamn and blast (sb/sth)
    3 b& v7 I1 N# ~# Y更改为
    5 e  h$ L" B9 ~* wdamn and blast (sb/sth)
    5 e$ I! S( ^0 U  ^# M+ zdamn and blast sb- o& N0 L  {6 M
    damn and blast sth- l# d2 U9 c# u! J+ h& g( _
    damn and blast
    9 v/ s2 w# d: m9 U& s/ U___________________________________________________$ \$ Y& [  o9 ~3 v* v0 x1 b
    dance on/upon a rope/nothing
    + d* Y' @2 Q4 H更改为8 F! G9 n) W' d" c& a4 l
    dance on/upon a rope/nothing
    / O. T9 x- K4 R( [' f7 Ndance on a rope8 }% i% h' z7 k6 s# {$ s9 t5 x
    dance upon a rope5 X% ~4 O; O% f0 h# ^! g
    dance on a nothing( [- @' Y' u8 ~. W
    dance upon a nothing# i$ y8 I+ P7 P. f
    ___________________________________________________( p- y; M" A  t; s4 e
    dance on (the) air
    : m) `+ b% R+ v6 K9 N" M更改为
    . z: L3 x( Y' Q# M9 j) V8 L0 odance on (the) air3 V* y3 X) E( a6 a% c& K% F
    dance on the air
    ' t: i/ J& q/ g8 s0 ]: adance on air
    8 c+ V! K: J! R& f, P4 f+ M___________________________________________________' b! z! a  z0 C" W$ W& w% e
    dead/flat/stark calm
    & [% t6 q9 I* Q% z) V; {更改为4 A" i' N! Z! ~/ r
    dead/flat/stark calm5 T- m$ i5 C3 C5 }
    dead calm
    ; k+ N0 e$ W3 R0 @' o3 L; Rflat calm
    9 g- l+ V* U8 Z- C* K3 {stark calm. [* |( b8 T+ R  f, K: I  `2 |
    ___________________________________________________7 O; y$ `) R7 K+ M4 J. h7 d
    do/go/make the/one's round/ {+ a1 [" l$ \4 I  Y8 p
    更改为7 i  d; F! K1 y. O: O  u* J6 j
    do/go/make the/one's round& E' w- T  W2 _% N
    do the round
    " S; a8 ^. M& a4 }1 @go the round
    8 ?- \. F" V  x" fmake the round
    % o9 p; ]# x! e/ W' ]do one's round' k, B" p; Q. c) h9 E# Z8 n  t
    go one's round) ^* V  c1 C9 m
    make one's round0 M" e; \# ]4 ^2 L* j! V  D
    ___________________________________________________
    ; u5 m2 J# p/ H: E4 ?- Pdo (sb/sth) grace6 f3 K/ a, @  Z$ z7 d. b; o
    更改为6 |9 T+ `7 |/ _$ j5 f7 i- T
    do (sb/sth) grace, q3 X) Y* O6 a
    do sb grace
    8 R/ u1 ^+ L1 B3 v! U5 q3 Ado sth grace
    ; I4 I4 _( i. L) ddo grace, h1 a; _& k. @
    ___________________________________________________
    - V* |8 T$ k  i1 v7 s: L' D0 p2 }) ?" k1 Z+ Q* C  k$ R: T
    固定一种模式的话比较好处理,难度在于/和()的出现次数和位置不固定,可能连续出现,也可能分散出现,两者也可能混合在一起出现。示例文件链接: https://pan.baidu.com/s/18rt8d7KxYOsioihLEXxzfQ 提取码: qn3k。如果EmEditor正则表达式不可行的话,用python代码也行
    % ?' ~7 A( O3 ^' D+ s3 Q9 gAl/A-one ;    P0001这种简单的可以用# H3 f( S: Q- {: Q: x
    \b(\w+)\b/\b([\w-]+)\b(\s{1,});\tP(\d{4})7 g/ `  h1 ^4 F2 N3 s. X3 K6 H+ Z; J$ I
    替换为:
    ) t# c6 ^. b$ j' A1 [6 v! {\1/\2\3;\tP\4\n\1\3;\tP\4\n\2\3;\tP\4
    3 L, Q( w/ y2 I0 t* O: C4 }
    % s: Q2 D" e; g' P* r4 P
    / V/ Z+ y+ S7 R9 x% c
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 13:12:26 | 显示全部楼层
    本帖最后由 yunhailin123 于 2020-8-2 13:15 编辑 ; F: K+ H0 |3 [! m

    3 \2 U$ E( s+ f8 M可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。/ p0 A1 Z& M( X4 P  T
    所以提取词组版的只有ff的朗文五,其他人很少有那个精力去手动提取词组,毕竟那么多词条,还得肉眼加上手工去写规则你也可以去看看garypang的提取朗文五词组完美版,反正花的心思不少,没有捷径可言
    % M9 g- v8 R" a  Y
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:28:15 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:30 编辑 & ~3 q3 {1 N4 x1 @1 Y$ m
    yunhailin123 发表于 2020-8-2 13:12
    ) ~9 V4 R7 @& G, k可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。
    . S: ~4 Q  o: i所以提取词 ...
    " z2 Q3 I- a8 Y1 B! D" f2 Z
    肉眼观察需要考验操作者的观察力和动手能力,可能使用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 编辑
    6 M; S8 s0 D% E5 \2 Z1 O6 ~8 n7 G- @* i! @( J! h5 {$ z7 y- k. A# A
    英语词典做得少,没遇到过楼主这样的处理需求。要我处理的话,我会把括号「()」和「/」的情况先后处理,最后全处理完后去重
    : G: j1 k3 I3 I6 ]1 y2 i% m' @2 R" t
    个人感觉:「()」的情况还是不难处理的;「/」的情况不太好处理(因为可能存在这种情况『take some/a lot of doing』,会误拆成 take some lot of doing)
    : k% u( n" ^) h4 ?! T: Z  l: \3 F+ q& j$ n4 b* G1 r
    还有,你这个索引是文本识别得到的?在处理之前建议一定要先排查下字符错误,并且统一下排版,把 txt 理顺,否则后面的处理很容易出问题
    6 G# M- j  y+ v  M* P& L0 w' }* e  y
    . {% f: e9 D$ D" L
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:37:55 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:42 编辑   C" C, s( C1 t# X! Y, t( n
    Mandolin 发表于 2020-8-2 13:29! C6 O& V" l* T) F+ N; R3 U0 z
    英语词典做得少,没遇到过楼主这样的处理需要。要我处理的话,我会把括号「()」和「/」的情况先后处理
    5 M1 a" t1 x  t. A/ l: y( g. U% T. T$ ]$ u1 S" F
    个 ...

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

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:45:02 | 显示全部楼层
    本帖最后由 Mandolin 于 2020-8-2 13:54 编辑
    ) C2 r. {; n! x, X, h
    wjl 发表于 2020-8-2 13:37( U% r+ _3 R4 r9 F1 Q: j
    我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些 ...

    5 P  Y; U" [4 x1 I2 k2 ?如果没有我说的那种情况,那用正则就可以实现。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:46:26 | 显示全部楼层
    wjl 发表于 2020-8-2 13:372 B0 t+ F; E+ s* s0 k
    我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些全 ...
      b6 h" R# M, l2 A/ y
    如果没有我说的那种情况,那用正则应该就能实现。(果然是在做那本词典,加油,希望作品完成后能分享,很期待)
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

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

    [LV.6]常住居民II

    发表于 2020-8-2 16:24:22 | 显示全部楼层
    wjl 发表于 2020-8-2 13:28% h) Q# Q3 T; f* a) Y+ ]
    肉眼观察需要考验操作者的观察力和动手能力,可能使用python代码简单些吧,我有想法,但是编程功底不佳, ...

    * K; t8 ?7 q) U) H但是要碰见有的词条是这样的 go'es by sb ,这个词组是瞎掰的,只是举个例子,有这样的,你还得再加一个,不管拆分词组还是要找词组,最终目的都是要找到词组的一些规律,即通过观察大量的数据才能下手3 s3 R7 W, s* |8 f4 ]
    也因为这个没有规律,耗时费精力,所以论坛专门弄词组的屈指可数,数据还比较老了。
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 16:26:53 | 显示全部楼层
    wjl 发表于 2020-8-2 13:57, b" p: O& a. q! I/ u4 M
    现在还看不到希望,只有3个人参与校对。感觉python字符串拆分方法最简单,不用懂正则表达式,跟人们的思 ...
    / b! T0 j8 i2 V0 ?$ |4 H+ h
    建议楼主抽一两个小时恶补一下python基础,只需把基本单位认清,语句怎样写,其实python已经是把代码人性化了,要是c++,过于苛刻。现在随便搜个教程稍微一学,现学现用
  • TA的每日心情
    开心
    2021-12-8 06:17
  • 签到天数: 68 天

    [LV.6]常住居民II

    发表于 2021-9-28 10:57:48 | 显示全部楼层
    本帖最后由 阿尔文 于 2021-9-28 11:04 编辑 8 F8 `8 \6 w6 x' N3 q

    1 y+ X3 V$ D% V% ~你的例子说明写得很好,规则很清晰。这个问题不要直接去用正则,而是去用 python 中的正则,这样才好控制复杂性。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-5-5 09:22 , Processed in 0.043862 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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