掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 932|回复: 10

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

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

    [LV.7]常住居民III

    发表于 2020-8-2 09:08:30 | 显示全部楼层 |阅读模式
    本帖最后由 wjl 于 2020-8-2 12:58 编辑
    . ?: i; M1 s( i* m$ e$ _; r1 j  j$ j
    如何用EmEditor正则表达式进行词组拆分?0 |; o, k5 t6 @5 L" i* D
    Al/A-one ;    P0001
    * Q% \  S- F3 o' Q0 c8 T% h! u0 P更改为
    8 }. F2 S2 {1 IAl/A-one ;    P0001
    + z; B0 g+ k3 I1 T1 RAl;    P0001+ s& }+ T. A& h% {" P
    A-one ;    P0001
    ) s8 q7 E- v& x9 c5 p3 X$ j- [. D- I___________________________________________________
    4 G. Q9 Q3 [: Squarrel (with sb) about/for/over ;    2313# X. o0 B& z4 O+ Z2 h6 |
    更改为8 f4 e$ R, K, c+ J1 I5 q2 O2 M
    quarrel (with sb) about/for/over ;    23135 [; a4 I9 q8 `4 c5 W& a
    quarrel with sb about ;    2313
    ' b( ]: x0 l. h" O/ Zquarrel with sb for ;    2313: V0 I* b. L- S0 \( E' e
    quarrel with sb over ;    2313
    1 I, j  g- {' _quarrel about ;    2313+ @/ s! {/ F$ c& S; w; A+ s1 E' d3 t
    quarrel for ;    2313
    , i7 Y9 Y) B( `4 G8 p/ Qquarrel over ;    2313( f6 x) g# S  d" p1 o$ E
    ___________________________________________________
    9 f4 [) K: |, v& ~' ~! Wdabble at/in/with7 p' g- o$ G; I2 V) ]
    更改为7 o! b" q$ p+ b+ \2 z
    dabble at/in/with# J7 ~. G+ @6 h
    dabble at6 [' o6 N5 D  W2 \% Z1 n0 p
    dabble in9 k3 D1 Z- a. A, t  h. B' K
    dabble with& a+ R* W( G% j# T2 g
    ___________________________________________________3 I8 O" v0 I1 G" ~; f7 x; s! i7 U
    damn and blast (sb/sth)6 {$ q) B$ V7 p' l8 @
    更改为0 Q  T# f1 a  s9 ~' d" e- Z! y
    damn and blast (sb/sth)
    " I# F! Y- @% `/ \5 W1 i6 Q2 ?damn and blast sb
    # @: E1 f* w& N8 P$ S# _* v, Ndamn and blast sth
    ; O* \9 R$ x' P7 J( udamn and blast
    . j2 ]! s' F8 w' x" ~___________________________________________________
    - J2 P% g+ @  r. I4 cdance on/upon a rope/nothing& \+ f2 G* J9 s# o$ l- C: Z, Q
    更改为
    ! K( G; U$ T" L& q) a6 l+ R7 ]dance on/upon a rope/nothing
    + R* ?! y* d2 b7 j9 s1 Y- edance on a rope; `/ u; {% C& F0 e3 L5 @
    dance upon a rope
    $ S9 z3 t/ @# }  C. F* z' Idance on a nothing
    8 B- a( a" Y) L  Adance upon a nothing+ z2 q' U; U' V  L% \4 @8 A) ^, X: w
    ___________________________________________________
    0 N% i, @/ _+ g, ldance on (the) air5 j* U2 u; F1 S& c3 w% Q
    更改为
    8 d/ \6 W! B4 V- b+ ?" T  ^dance on (the) air
    ; i$ P. R( j4 tdance on the air
    ! H# b6 |- P0 w! tdance on air
    + U; j9 F+ ^& X___________________________________________________
    & d$ u  C/ C: M7 wdead/flat/stark calm
    # S3 J1 D0 s6 T0 C更改为
    - x3 O4 B( A+ h  Sdead/flat/stark calm5 |8 p/ B. o' R8 P0 Q5 k5 q4 M& k
    dead calm# c) Y! {, @6 \9 _" i
    flat calm5 ?0 m. Z1 o& g
    stark calm
    8 M) l. X" v0 e5 q& A& b  ]; i___________________________________________________
    2 ^# a* r" S. I: o) [do/go/make the/one's round
    ( E, }' e: k# r# d" ~: H更改为
    - K$ T2 \* ~. k. ~1 X8 ido/go/make the/one's round
    9 E: X& Q: i  |% [do the round1 s6 Z+ g; Q3 E
    go the round7 J( v4 h4 z  o* l' k5 K1 O; u6 K' w  b
    make the round
    1 w! ~! `+ g! M8 b' z& Vdo one's round! Z  H/ {4 O3 m% R0 o& C! L  }
    go one's round! N+ Y  D% r; k
    make one's round
    $ G! A+ O+ l8 y0 o3 i___________________________________________________4 U, p* @/ A, D5 w% m  a* P
    do (sb/sth) grace
      G) @9 |1 r: f8 X) Z" X更改为( L1 Z5 t1 T( z; o' [
    do (sb/sth) grace! ?0 F( G( \! ?6 l, T
    do sb grace
    ' i0 f) H% _& }' t& V  L. ]4 s  Fdo sth grace
    ' n' ]+ B% H- R' p3 x- F* C( [do grace1 D0 S: X9 h% }) N$ y
    ___________________________________________________
    : p3 ~2 W+ J/ q5 f; U9 C1 Q, |5 k+ V, ^$ z& n5 U' O  F. k
    固定一种模式的话比较好处理,难度在于/和()的出现次数和位置不固定,可能连续出现,也可能分散出现,两者也可能混合在一起出现。示例文件链接: https://pan.baidu.com/s/18rt8d7KxYOsioihLEXxzfQ 提取码: qn3k。如果EmEditor正则表达式不可行的话,用python代码也行
    , m) w% e* I7 K0 }# a6 @Al/A-one ;    P0001这种简单的可以用  a5 s# I. k# D" C% d% I: _+ O
    \b(\w+)\b/\b([\w-]+)\b(\s{1,});\tP(\d{4})
    9 e% s3 |; [) `, T( u2 {替换为:8 B/ \$ g5 d4 V9 I7 f/ v" i
    \1/\2\3;\tP\4\n\1\3;\tP\4\n\2\3;\tP\4! R# t/ B: P/ ^6 x- S2 r
    : L9 r9 k! W- l; f4 x

    - i/ \6 c) f' N+ b5 C
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 13:12:26 | 显示全部楼层
    本帖最后由 yunhailin123 于 2020-8-2 13:15 编辑
    ( {( J/ Q; C% ~
    6 p4 l3 H' C* C4 ]4 j# _- k可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。
    ' }7 z2 m8 O! Y, C2 c. s* z0 ]所以提取词组版的只有ff的朗文五,其他人很少有那个精力去手动提取词组,毕竟那么多词条,还得肉眼加上手工去写规则你也可以去看看garypang的提取朗文五词组完美版,反正花的心思不少,没有捷径可言0 S9 a0 U! @, G
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:28:15 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:30 编辑 8 M: @$ R/ m0 W' S& J; i
    yunhailin123 发表于 2020-8-2 13:12
    7 M2 w" R8 x2 Q: g可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。9 V- {; M3 G  H* v0 L. c% b
    所以提取词 ...

    ) c* R& b. g, {+ @/ D' w0 ^肉眼观察需要考验操作者的观察力和动手能力,可能使用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 编辑 % s! `) A& ~: E& c$ N. E3 Y
    6 a- r' E/ p" Q$ {
    英语词典做得少,没遇到过楼主这样的处理需求。要我处理的话,我会把括号「()」和「/」的情况先后处理,最后全处理完后去重
    ' D  f5 |# s' w
    % G) l) y8 p9 E. h个人感觉:「()」的情况还是不难处理的;「/」的情况不太好处理(因为可能存在这种情况『take some/a lot of doing』,会误拆成 take some lot of doing)9 b# g1 ?6 P/ m' ^, n! p8 |/ E3 c

    6 g. Q+ p% y$ S, b) p还有,你这个索引是文本识别得到的?在处理之前建议一定要先排查下字符错误,并且统一下排版,把 txt 理顺,否则后面的处理很容易出问题
    8 s0 J: `. d) Y5 ^# N6 O  u
      }" ]& y# n2 H' N  v; C& I8 y- _# e% l( d8 U( x" h/ c0 {  k. E( U
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

     楼主| 发表于 2020-8-2 13:37:55 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:42 编辑 . q6 L, {4 M7 J* j6 n1 b9 q
    Mandolin 发表于 2020-8-2 13:29( @$ J, J3 D- w- Q0 J' O$ D
    英语词典做得少,没遇到过楼主这样的处理需要。要我处理的话,我会把括号「()」和「/」的情况先后处理  e$ b1 {$ f! }2 ~" N
    + B- f* V# h6 o0 l; y' V
    个 ...
    % G5 z) h9 E  W. x# Q" ]0 d
    我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些全英文的不需要拆分的部分例外,所以刚开始设计正则表达式时可以按都是简单单词这种情况处理,最后通过选定范围替换或手动替换即可解决例外情况。示例文件是OCR识别文本,尚未校对,仅供设计正则表达式参考用。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:45:02 | 显示全部楼层
    本帖最后由 Mandolin 于 2020-8-2 13:54 编辑 . J! P, B% v1 b$ B7 `6 M7 ]6 B6 T) V
    wjl 发表于 2020-8-2 13:37
    : {. I( Q! P+ m! S& l* ]9 H  L" p我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些 ...
    9 l/ k# R; t! Q& B% ^. j3 h
    如果没有我说的那种情况,那用正则就可以实现。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:46:26 | 显示全部楼层
    wjl 发表于 2020-8-2 13:375 I6 A6 q! J1 ~" `
    我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些全 ...
    ( [/ E  z+ ~1 N" V% F8 e$ D4 w$ A
    如果没有我说的那种情况,那用正则应该就能实现。(果然是在做那本词典,加油,希望作品完成后能分享,很期待)
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

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

    [LV.6]常住居民II

    发表于 2020-8-2 16:24:22 | 显示全部楼层
    wjl 发表于 2020-8-2 13:28
    3 [- W. c4 T7 \* N8 Z肉眼观察需要考验操作者的观察力和动手能力,可能使用python代码简单些吧,我有想法,但是编程功底不佳, ...

    2 q0 F$ R6 M) g; I, {  F但是要碰见有的词条是这样的 go'es by sb ,这个词组是瞎掰的,只是举个例子,有这样的,你还得再加一个,不管拆分词组还是要找词组,最终目的都是要找到词组的一些规律,即通过观察大量的数据才能下手
    , }/ Q1 ^  h3 t& S& x( q$ C4 I9 A5 [也因为这个没有规律,耗时费精力,所以论坛专门弄词组的屈指可数,数据还比较老了。
  • TA的每日心情
    擦汗
    2022-3-25 11:07
  • 签到天数: 66 天

    [LV.6]常住居民II

    发表于 2020-8-2 16:26:53 | 显示全部楼层
    wjl 发表于 2020-8-2 13:579 [: [% [& }3 |( l; Q
    现在还看不到希望,只有3个人参与校对。感觉python字符串拆分方法最简单,不用懂正则表达式,跟人们的思 ...
    ! K6 B# O8 c, V7 `0 L
    建议楼主抽一两个小时恶补一下python基础,只需把基本单位认清,语句怎样写,其实python已经是把代码人性化了,要是c++,过于苛刻。现在随便搜个教程稍微一学,现学现用
  • TA的每日心情
    开心
    2021-12-8 06:17
  • 签到天数: 68 天

    [LV.6]常住居民II

    发表于 2021-9-28 10:57:48 | 显示全部楼层
    本帖最后由 阿尔文 于 2021-9-28 11:04 编辑
    - w1 T% o" b# ~0 O; A1 B$ O/ X  C( ~( h9 _0 E
    你的例子说明写得很好,规则很清晰。这个问题不要直接去用正则,而是去用 python 中的正则,这样才好控制复杂性。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-26 17:39 , Processed in 0.052868 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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