掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 108|回复: 9

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

[复制链接]
  • TA的每日心情
    无聊
    15 小时前
  • 签到天数: 57 天

    [LV.5]常住居民I

    发表于 2020-8-2 09:08:30 | 显示全部楼层 |阅读模式
    本帖最后由 wjl 于 2020-8-2 12:58 编辑 4 M0 E( S5 D4 o& Q
    : D- g' G/ F( |) m6 \. G1 P
    如何用EmEditor正则表达式进行词组拆分?
    8 H; p5 R/ }6 Z  G; t) m) SAl/A-one ;    P00011 [) Q! Z+ _& E% e
    更改为, e7 V2 x6 m9 S  L; e8 W1 c
    Al/A-one ;    P0001
    % O5 E* ~, N& h% mAl;    P0001
    : E, M; r% r# Z+ Q3 X/ w- ?7 qA-one ;    P0001
    3 ^6 K6 o( P) |" j$ C( w# i___________________________________________________2 q0 Y3 J$ g, A/ _4 {! k$ i
    quarrel (with sb) about/for/over ;    2313
    " X. ?1 T4 x! S1 s' O3 j7 O更改为, ~- I5 T. K5 Y' {
    quarrel (with sb) about/for/over ;    2313) ~" Z/ A' L4 E" S1 c
    quarrel with sb about ;    23130 s8 C% y5 T1 l5 G: F. V  j
    quarrel with sb for ;    23139 F; U& |; f: U3 X, I* F, O% Z
    quarrel with sb over ;    23133 {/ ?2 v" P3 {" Q; e, p" e$ t. G
    quarrel about ;    23131 U+ {8 c5 l) j1 u- h- P" |5 L: ^
    quarrel for ;    2313
    1 O! p8 T0 c/ ?7 ?* J( dquarrel over ;    2313
    1 ^/ K9 m  G3 R# ~  H- V% k9 B) ^6 N/ Q___________________________________________________6 [* C/ ~+ |% Y' t9 g
    dabble at/in/with* l: P; ~2 {! u3 O, z
    更改为3 |) G7 r, V, j: |, s- _
    dabble at/in/with
    9 a- _8 X2 Z, L, @  k0 E5 }dabble at
    ' M/ d* J# y# c+ t8 udabble in
    3 Y. [, o) W, [# W* C% ddabble with
    ; \; [( J: j4 P: i1 n! X* e___________________________________________________* H! x. b5 [6 _# D2 l
    damn and blast (sb/sth)# _/ S2 v7 j9 c
    更改为
    1 G, U& B$ z9 l/ ?" P1 `- ]# C5 O1 i  vdamn and blast (sb/sth)3 r3 f: X' C. x+ ^% H
    damn and blast sb
    1 n7 E( V: R" I% P2 c8 e8 L, Mdamn and blast sth/ c+ {0 k4 O' z  V9 S, r( _+ ], \
    damn and blast* E* Q6 u& A/ q/ g' O
    ___________________________________________________
    * s: j7 Q- m( e5 X+ Kdance on/upon a rope/nothing! N# M8 x7 J2 S7 {
    更改为& i8 w0 p% ]# {) c' I
    dance on/upon a rope/nothing5 E: S/ h& G  s7 R6 O# |
    dance on a rope' }  g( j3 s. m  j1 o! D( d
    dance upon a rope8 D* ~; \: \' K: |: M6 n
    dance on a nothing. w' d* R' R, m0 ]8 V5 n
    dance upon a nothing
    9 e* f# D6 D! n; o$ y3 H+ X7 t___________________________________________________6 a: H  r- E- r+ }
    dance on (the) air
    3 b/ H" g* r: g9 Z# M5 J更改为
    / v% i8 W: \7 r+ I  c( Z3 Mdance on (the) air$ f+ G# r: u6 h
    dance on the air
    * C2 z1 _- f% j% s$ Gdance on air- d2 p& z( Q, b& D/ F0 O" D6 T4 ]
    ___________________________________________________
    : S% y% B6 _. n  Edead/flat/stark calm& A- A  f" d7 q4 @6 H, P
    更改为
    : M! h! J& x5 Y5 e5 g: Sdead/flat/stark calm' i1 B1 m. |& W. T
    dead calm
    " g4 D  w8 D5 uflat calm
    6 C6 ^' G% H6 N) d3 F; Ystark calm
    & V- L: ^. M" g9 f2 f. E- {___________________________________________________* O8 V& {9 g2 T* K4 O: ]' c& y
    do/go/make the/one's round
    - c/ \) \8 @+ H" `: ^2 V更改为& U8 R' [  a' F0 ?% M+ [7 c: b& L
    do/go/make the/one's round
    / h9 `* E7 [/ h2 w1 Fdo the round
    ( k  a7 R  i6 ?, n4 q% tgo the round# i- Q. j. j! O4 M6 m* s1 \2 V
    make the round
    , _+ Y/ i! n" K; A2 [# ~- G. hdo one's round3 I9 N+ F( N, M
    go one's round
    ) T( i8 N5 R4 k6 pmake one's round
    8 m! l1 _& o5 B* B# n___________________________________________________
    5 b4 \1 ?  J) Z7 `- ?9 f  ^7 Odo (sb/sth) grace5 J5 \3 Q1 g! `
    更改为
    0 U# d2 q: ^, B- wdo (sb/sth) grace
    4 o: _( K9 V  z" {4 H& Zdo sb grace
    8 H4 C% w( G9 B, w/ a- U' @do sth grace, D7 y- o% ]( v: J& e2 z# m
    do grace
    8 R; ]$ o+ v5 l$ v2 F. K  {. F___________________________________________________
    , {+ l' F' y& T, ]7 R: U& @7 E" B" u* x6 n$ q
    固定一种模式的话比较好处理,难度在于/和()的出现次数和位置不固定,可能连续出现,也可能分散出现,两者也可能混合在一起出现。示例文件链接: https://pan.baidu.com/s/18rt8d7KxYOsioihLEXxzfQ 提取码: qn3k。如果EmEditor正则表达式不可行的话,用python代码也行( i4 }& p) H1 R7 Q/ M( s
    Al/A-one ;    P0001这种简单的可以用+ d# Y( y7 l5 y8 k2 l" \# {  Y& h
    \b(\w+)\b/\b([\w-]+)\b(\s{1,});\tP(\d{4})- l* U, n1 e/ G/ D4 ?8 I( v$ J% ~+ k
    替换为:
    : ]: ^8 c4 t! Q1 Y5 x- G# }2 T\1/\2\3;\tP\4\n\1\3;\tP\4\n\2\3;\tP\4
    2 J! v& l6 ]+ ~$ Q* q2 b& M- U) c9 z; j9 D& G5 e( Y( n/ C
    ) `& S6 Q' n% L: g0 f6 x
  • TA的每日心情
    擦汗
    2020-1-6 01:34
  • 签到天数: 63 天

    [LV.6]常住居民II

    发表于 2020-8-2 13:12:26 | 显示全部楼层
    本帖最后由 yunhailin123 于 2020-8-2 13:15 编辑 8 `# `2 K1 a4 l- o

    ! M% o, n$ D6 K+ d& B+ l8 h& N/ j可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。
    # E- H5 V6 a1 e/ U; ~9 v所以提取词组版的只有ff的朗文五,其他人很少有那个精力去手动提取词组,毕竟那么多词条,还得肉眼加上手工去写规则你也可以去看看garypang的提取朗文五词组完美版,反正花的心思不少,没有捷径可言
    5 s! h6 X8 L6 Y( H' h
  • TA的每日心情
    无聊
    15 小时前
  • 签到天数: 57 天

    [LV.5]常住居民I

     楼主| 发表于 2020-8-2 13:28:15 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:30 编辑 ) I, q8 ?; C3 }/ n; F8 Q, ?8 l
    yunhailin123 发表于 2020-8-2 13:12; h( y! S/ V6 F( ^' E0 e
    可以借鉴一下fearfare的朗文五,有很多是需要你肉眼观察上千条词条而写的,这个没有什么规律。
    , q7 V. F" M: b8 u+ y所以提取词 ...
    2 S( ^! v- ]7 r6 K4 P
    肉眼观察需要考验操作者的观察力和动手能力,可能使用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 编辑 9 L, k2 Y: E+ I/ A" @
    ) z/ Q* @- o; t, H2 r: e
    英语词典做得少,没遇到过楼主这样的处理需求。要我处理的话,我会把括号「()」和「/」的情况先后处理,最后全处理完后去重
    7 Y* e& r1 `/ E) r' u* ^# ?0 d. G' q' D- n% p8 v
    个人感觉:「()」的情况还是不难处理的;「/」的情况不太好处理(因为可能存在这种情况『take some/a lot of doing』,会误拆成 take some lot of doing)
    - h6 E. T" h% x0 a
    + s% u# ?* M* e! k; P还有,你这个索引是文本识别得到的?在处理之前建议一定要先排查下字符错误,并且统一下排版,把 txt 理顺,否则后面的处理很容易出问题
    ' c: \; P- Q* _
    ' q$ D) |, X2 e4 @/ E) c
    6 n6 w. b7 F+ o3 P/ E# ~
  • TA的每日心情
    无聊
    15 小时前
  • 签到天数: 57 天

    [LV.5]常住居民I

     楼主| 发表于 2020-8-2 13:37:55 | 显示全部楼层
    本帖最后由 wjl 于 2020-8-2 13:42 编辑 & u; |4 E8 h7 G' C1 [
    Mandolin 发表于 2020-8-2 13:29
    9 ~  b  v, ~5 Q7 q英语词典做得少,没遇到过楼主这样的处理需要。要我处理的话,我会把括号「()」和「/」的情况先后处理5 T1 t, {# I5 @0 y- Z1 V8 z
    % i1 b3 u! |; \$ p1 T3 x9 f, s
    个 ...
    ) a& U; P( I4 u7 Z- O* S
    我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些全英文的不需要拆分的部分例外,所以刚开始设计正则表达式时可以按都是简单单词这种情况处理,最后通过选定范围替换或手动替换即可解决例外情况。示例文件是OCR识别文本,尚未校对,仅供设计正则表达式参考用。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:45:02 | 显示全部楼层
    本帖最后由 Mandolin 于 2020-8-2 13:54 编辑
    ' `( K. q2 v3 E8 r& ], k
    wjl 发表于 2020-8-2 13:37
    % I8 r, A- R( F我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些 ...
    1 [/ O, E4 o. L! c: b: V8 [
    如果没有我说的那种情况,那用正则就可以实现。
  • TA的每日心情
    开心
    2019-8-21 19:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2020-8-2 13:46:26 | 显示全部楼层
    wjl 发表于 2020-8-2 13:37/ y3 }/ f$ H' q& i5 N
    我现在练手的《当代英语习语大词典(英汉双解)》应该没有这种情况,大多数「/」两侧都是单词,只有一些全 ...
    & \9 }8 ^& [6 M8 n: q# \4 {
    如果没有我说的那种情况,那用正则应该就能实现。(果然是在做那本词典,加油,希望作品完成后能分享,很期待)
  • TA的每日心情
    无聊
    15 小时前
  • 签到天数: 57 天

    [LV.5]常住居民I

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

    [LV.6]常住居民II

    发表于 2020-8-2 16:24:22 | 显示全部楼层
    wjl 发表于 2020-8-2 13:28
    & f+ I) j# B7 W: T2 v肉眼观察需要考验操作者的观察力和动手能力,可能使用python代码简单些吧,我有想法,但是编程功底不佳, ...
    ; O$ b6 t+ U/ L* _% Z
    但是要碰见有的词条是这样的 go'es by sb ,这个词组是瞎掰的,只是举个例子,有这样的,你还得再加一个,不管拆分词组还是要找词组,最终目的都是要找到词组的一些规律,即通过观察大量的数据才能下手) P) g& H7 m6 W: k7 |5 P% N
    也因为这个没有规律,耗时费精力,所以论坛专门弄词组的屈指可数,数据还比较老了。
  • TA的每日心情
    擦汗
    2020-1-6 01:34
  • 签到天数: 63 天

    [LV.6]常住居民II

    发表于 2020-8-2 16:26:53 | 显示全部楼层
    wjl 发表于 2020-8-2 13:57
    * a3 c3 y, ]# v+ o现在还看不到希望,只有3个人参与校对。感觉python字符串拆分方法最简单,不用懂正则表达式,跟人们的思 ...
    7 v+ v, _  [; G; r& p" C
    建议楼主抽一两个小时恶补一下python基础,只需把基本单位认清,语句怎样写,其实python已经是把代码人性化了,要是c++,过于苛刻。现在随便搜个教程稍微一学,现学现用
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    顶部qrcode底部
    关注公众号送论坛充值码
    关注微信公众平台
    关注微信公众号 pdawiki,获取邀请码,看文抢积分,抽奖得浮云! Follow our Wechat official account "pdawiki", get invitation codes, and play the lottery to earn points (积分)!

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

    GMT+8, 2020-8-13 16:12 , Processed in 0.027888 second(s), 6 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

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