掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 789|回复: 3

[求助] 请教! 关于多词同义, 词变形应该如何处理?

[复制链接]
  • TA的每日心情
    无聊
    2021-1-15 05:13
  • 签到天数: 271 天

    [LV.8]以坛为家I

    发表于 2016-3-6 23:29:46 | 显示全部楼层 |阅读模式
    各位老大, 本人想自己制作一个瑞典语--英语的词典, 但遇到一个问题急需解决, 请大家不吝赐教:3 _9 z9 e% S- d& L& ]

    - n( u, v* u$ p4 `' B瑞典语的很多单词都有变形, 名词, 形容词, 动词......而且规则繁多, 故而制作词典时想要达到输入某一单词的任意变形时能查出单词原型, 以前用Stardict的同义词方法实现过, 在iPhone上的Dictionary Universal上工作基本良好, 但最近iOS系统升级至9.2以后, 该软件频繁闪退, 很影响正常使用, 所以打算改投MDict了., b+ w$ \1 _- W3 I  c7 R4 @

    6 d0 \% N' ?' [+ L# i翻遍论坛和网络, 都没有找到关于此问题的明确处理方法, 如果把某一单词的所有变形都单独列为词条, 似乎可以解决该问题, 但同时又产生了另外的问题: 某些词的变形与另外的词写法完全一样(如果光看见单词是无法分辨是哪个词, 必须要在句子中根据其充当的句子成分才能判断其含义), 这又变成了同一个词有多个解释, 这两个情况时刻纠结, 让我很是郁闷!$ x7 j5 h1 s1 g) ]# u6 |3 v

    ' @7 H% x- M8 w9 q3 V8 N# f以前在制作Stardict的时候其实也是有同样的问题, 但Stardict本身支持同义词(多词一义), 但原作者没有提供具体支持同义词的方法和编译器; 但有幸在网上搜到了一个高人用Python写的一个支持同义词的编译器, 竟然一次搞定了, 万分激动, 但那是3-4年前的事情了, 现在回想, 当时是如何实现的记得不是很清楚了......4 V. U( W3 Z3 p$ x- y( y
    5 m) U& S3 Q* S7 W' e) D$ c3 g
    具体情况是这样, 比如一个单词abc, 它可能的情况有: 1. 本身是个单词, 有自己的意思; 2. 是另一个词bca变形而来; 3. 是再另外一个词cba的变形; 4. 它还是词bac的一种变形......
    * u* r# u9 w. g7 S4 v9 U4 |# J: u
    - g8 a7 m- r. z* o1 U1 O/ j" f4 O在此请教各位大侠, 对以上的情况, 在制作TXT原始文件时应该如何写词条, 能最终实现输入一个单词, 可以查出所有与该词本意及变形相关的词条.
    9 _/ t- d8 `5 K* K; S7 u% h2 f1 w3 U0 z; V$ L' C- E
    万分感谢在先!
    / ?  L1 w2 L! b/ m3 y7 J& v
    * E' f; I( }  j) }+ s; x$ X- u1 p想要实现的效果见图片, 输入satt, 所有与该词有关的都能查出来.
    / X* z% f7 s7 `# a/ z2 @, R* D; K5 r# h& _. l& D# l1 n* \
    7 _, h9 r* A# j  p

    - g; q; q+ y  Q, }7 g, z, ~

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?免费注册

    x
  • TA的每日心情
    无聊
    2021-1-15 05:13
  • 签到天数: 271 天

    [LV.8]以坛为家I

     楼主| 发表于 2016-3-7 20:15:05 | 显示全部楼层
    期待大神们给予帮助啊.....

    该用户从未签到

    发表于 2016-3-10 00:15:26 | 显示全部楼层
    % k0 w+ ]- y  P: ]
    -
    ( U4 H" S  N( C6 W: z我决定可以先试试把您已有的 StarDict 词典文件直接转换为 mdx 格式。6 ~5 I2 d# L5 @3 r4 n
    或者再看看3 y( c* h, f5 A+ \3 E
    内部重定向(内容链接):4 Y2 C' p. j, Z' h6 j* T
    1) 当两个关键字所指向的内容是一样的时候,可以采取重定向的方式来达到"链接"的效果。内部重定向的格式为:% P* x4 i2 {! }& P6 O
    @@@LINK=关键字  r5 r9 m4 D8 k" c
    例如color 和 colour 都指向相同的内容,制作词典时可以正常编写color词条,但对于colour词条,可以写成:
    1 a6 n5 i+ |& c
    " J# |$ M3 L2 L$ n" m  Bcolour
    + H, b5 O5 I. g@@@LINK=color% w2 E/ W, W$ D7 N  v4 S
    </>6 W+ i6 e5 w  s$ F% _6 B
    0 b$ T; E: [4 n+ n- f/ C1 `
    当显示colour条目的内容时,程序会自动找到color的内容进行显示,链接是可以多重嵌套的。

    5 P0 U0 e9 J1 T! ~: \-9 x) |0 o4 g0 O
    试试阅读 http://www.octopus-studio.com/download/MdxBuilder.zip 里的文件。- J3 h7 z# e- r$ p
    \MdxBuilder\ConvStar\ReadMe_Chn.txt0 H! D0 B3 c% J! L
    转换Star Dict文件到mdx格式的步骤:
    0 x# u$ Q4 [9 \1) 从http://stardict.sourceforge.net/Dictionaries.php下载tarball格式的辞典文件
    * y) s" X# ~6 M  w9 Y) Y下面的步骤以http://stardict.sourceforge.net/Dictionaries_ja.php内的辞典为示范
    . K9 {2 O: L3 S/ a* T; Y5 {
    9 n2 G9 v! @) V! m& m, W2) 下载 "JMDict-en-ja dictionary" 和 "JMDict-ja-en dictionary"
    3 O3 C& N4 a. @/ s; t& `5 D, s* z8 t通常一个辞典一个文件, 下面会示范如何合并两个辞典文件所有要下载两个辞典
    - I8 U- f1 Y/ D( _" S/ k* }8 I5 e* ^0 z" y! j
    3) 将文件解压到c:\temp
    $ N& S2 B8 i6 b) u. \4 zc:\temp目录下应该有4个文件:
    8 a5 u4 X. H+ _2 q! v2003-07-04  01:47         1,414,385 jmdict-en-ja.dict.dz
    ( J2 b% r; ^+ `- m( v2003-11-12  19:38         2,392,521 jmdict-en-ja.idx5 K& c) y* k* ~8 n: E  d* O9 i
    2003-11-12  19:38               351 jmdict-en-ja.ifo3 P# P+ d( ~7 P5 X3 n6 G
    2003-07-04  01:47         2,702,509 jmdict-ja-en.dict.dz0 N: z* o0 E5 r4 O) f1 r9 D* U
    2003-11-12  19:38         3,732,514 jmdict-ja-en.idx: _, F2 z8 J$ l/ G* E  O
    2003-11-12  19:38               352 jmdict-ja-en.ifo" y$ S  f( ], p% E, q% o3 ]. e8 A
    9 b# C  U# U! c; T5 A
    4) 将"convstar.exe" 和 "star_style.txt" 也copy到 c:\temp 目录下) ?0 J& A7 T+ C$ u+ b+ c

    0 w) G+ W  F4 f, I5) 运行:
    1 H2 ]! d/ U  n/ V3 @5 d1 u3 ja) convstar jmdict-en-ja.ifo e2j.txt5 p- g+ E+ l* U0 R3 Q3 P0 c, d
    b) convstar jmdict-ja-en.ifo j2e.txt+ P" k& D) a6 a7 Y
    c) copy e2j.txt+j2e.txt all.txt /b
    6 x" u' x1 b8 Z0 _" w如果你不想合并辞典,可以省略b) 和 c)
    ' \, z& }# t2 Q, d: F1 T! \. x" u  y* i6 ^- W! [/ y! A' [" D2 F3 o+ [
    6) 运行 MdxConvert, 填入以下参数; H; h3 E6 t0 L
    Source: C:\temp\all.txt) n# @5 A1 u2 }6 [
    Target: C:\temp\JMDict.mdx) ?$ |; Q7 j3 ?6 j6 ]2 g
    Format: C:\temp\star_style.txt
    4 d, k: X0 N2 ~! {Original Format: MDict(Compact HTML)% z. D6 X+ b: k" U; P5 w, P
    Encoding: UTF-8(Unicode)   <---Must use UTF-8 for all stardict dictionaries6 r6 d) m2 H6 h! c' H
    Title: JMDict English-Japnanese Dictionary6 h4 @& ~0 }2 ~5 M; C' m! M" n9 ~% Q& K
    Description: <font size=5 color=red>JMDict English-Japnanese Dictionary</font>
    ( G# W, ^. J1 U& t# T
    ; |# |  s. I5 z8 U  A7) Click Start" H1 _3 F7 C5 v5 h! V8 Z" M
    3 V! ^& \$ L" F; L' x# _* @
    8) Done. 8 |  m6 l% H* y& @
    5 ?0 w/ o4 {" e7 I
    注意: 部分辞典含有国际音标(International phonetic alphabets(IPA) symbols), 如果需要正常显示音标的话, 需要在PDA中安装支持IPA的TrueType字体, 例如win98/2000/XP  中的"Lucida Sans Unicode" ( 将windows\fonts\l_10646.ttf copy到PDAs的\windows\ or \windows\fonts\, 可能需要软启动你的Pocket PC)
    7 I! E0 A# Y1 {- N
    MdxBuilder.zip 里有个 manual_Chn.txt 文件,内容如下,注意加粗加红部分:! g) B8 ]# f0 z+ x& g( O$ L

    6 e# J2 e3 k3 {6 {" R
    转换程序支持格式:: g, E/ S2 j* m

    # S3 v( b. r( e. g4 T1) 扩展的SugarDict格式:
    ' z) e, M8 S/ ^
    ! R) z7 p- L0 L6 `每个项目(词条)一行,缺省最大为32K. 格式为: 关键字
    6 h. e2 N2 G- f% b* @解释(就是关键字和解释之间用空格分开)" g1 L1 \  P& P

    $ N: q5 R7 j& H/ ^6 D关键字: 可以是大小写的组合, 每个单词的最大长度是255个字符。. d- j9 F# G- {; [
    关键字和解释中的'_', '^'在转换后会被替换成空格和回车
    9 m* Q$ w1 E- b& A0 k
    ' t$ q4 T3 n' ?, ?* K& W  a例子:
    9 ^0 d# r9 s3 Tbreak_through /'bri:k_MQru:/ ^v. 突破^n. 突破
    # h% Z6 I' R' K! O+ K% u( \+ I: Dgood ^adj.好^adj.贼好^adj.好得不得了9 M! X+ t9 V6 E* w: T1 V
    - f7 f5 J& i$ B, |+ @
    2) KDict解码后的tab格式
    * S" m( A8 y5 `: C# g每个条目一行,关键字和解释之间用"tab"分隔. 其中的"\n"会被转换成换行2 b. w# {: u2 Z* J+ [) S
    / y/ S+ c! R9 @( D. R* R0 ?
    例如:
    ) Z7 j( L4 E& S2 F' ^' m, C7 |good        adj.好\nadj.贼好\nadj.好得不得了. Y( X& A8 J5 x& Y' _# A& u3 j; Z

      k- j& L0 j. @8 [1 ^
      j- ?- \: P1 `1 E, m, [; l3) MDict的html格式
    2 ~. e, R& P# u- d+ _) @! @# I! X每个项目两行, m+ W+ X8 u, ?7 T, r2 h
    第一行是关键字
    5 ^* }) g* A8 a  a' b6 I第二行开始是正文, 这里的正文应该包括关键字。可以使用html的标记(不要包含<html>. \3 B% E% A3 j7 Q
    <body></body></html>, 这个程序会自动加上, 另注意在转换时要指明源数据为html).
    % t- q- T5 j8 }; h$ G* M& y* {* A如果需要显示音标的话,可以利用html指定字体就可以显示了。(参见下面的例子)6 n% B0 b/ T, t' n" o  ]; {
    正文结束后必须用一行</>表示结束
    ) K6 D* Z5 p9 r: c. K7 v* u* e1 |4 Z! g
    例子:& z* Q& Y, u$ X" P3 c0 c" D
    Whole
    " A" Y: s( F6 q2 Q<font size=5>whole</font>
    " w, ]2 p- T  X: C, P# ~9 w<br>
    " h. W# N" c% e) h3 x<font face="Kingsoft Phonetic Plain, Tahoma">(hol,hJl; houl)</font>- U" |: R9 `+ j+ K8 [) n
    </>
    * b7 l  p  i- ?% h% ^7 L# s
    : q! z4 i7 O! Y0 Y* V(注意"</>"和下一个记录间不要有任何其他空行,请参考example.txt中的例子)
    ) D; W5 H9 g* i5 w9 G/ x- W
    & r8 V! z# w3 W+ x! k* }5 B在html中连接到其它关键字的方法:
    ; d$ y  [4 ~1 H4 x/ Q4 k2 Q<a href="entry://key#section">key</a>
    ) ~1 l, n% k" v4 ]/ L6 b其中key是关键字,section是对应关键字页面中的section名称.& E0 s. Z# N# X
    4 Z2 j, t% ]' p
    在html中嵌入图片的方法:(PC版的MDict 1.0以上版本才支持图片)
    ) x0 F3 A  e% B) O( E( c  m1 k; c! u4 u<img src="file://abc.gif"> 或者 <img src="/abc.gif"> 其中src指向的文件名大小写不敏感0 N2 `0 }4 q& z+ A6 [( t/ j8 h! l
    并将所有图片文件放在一个单独的目录中(不要与词典源文件放在同一目录中). 数据目录中可以
    0 X% Z. k0 c; W' t% E) [带有子目录。在使用MdxBuilder制作词库时,将Data路径指向上面存放数据的目录,该目录中的. E* E6 \" H1 |
    所有文件都会被压缩到后缀名为.mdd文件中,使用时该.mdd文件应当与.mdx文件在同一目录下。9 Q& n! h+ E% e4 j1 j4 `
    ! b1 h& M9 ~+ Z7 m3 d
    在html中嵌入声音的方法:
    $ Q; j9 x0 C  A* A: K' j使用链接<a href="sound://keyword.spx">keyword</a> 这样的形式,点击该链接的时候可以进行发音
    9 B2 b9 X3 q  U) V2 ~0 U, }2 \发音仅支持.wav和.spx格式的音频文件。
    . \/ A3 }6 O% E2 e8 C7 p, k4 ?3 J7 e! R, Z" P8 S" V
    内部重定向(内容链接):
    ' z1 C, k6 e& u1 Y% `1) 当两个关键字所指向的内容是一样的时候,可以采取重定向的方式来达到"链接"的效果。内部重定向的格式为:
    ) I+ H7 i6 W8 z, [$ m* B@@@LINK=关键字* j: b* T. \( P$ q. p7 G( L
    例如color 和 colour 都指向相同的内容,制作词典时可以正常编写color词条,但对于colour词条,可以写成:; N  D, V  g  m4 v0 d3 `$ a4 S: Y
      B& m! g/ k8 V- @! B( v
    colour
    5 x$ r# L0 c. m. q4 |1 I@@@LINK=color
    " b5 B: u3 G3 Z' ^8 ]0 r</>* V6 c  K( S& ?; t
    5 G6 s" w8 j3 ~' |. e' E
    当显示colour条目的内容时,程序会自动找到color的内容进行显示,链接是可以多重嵌套的。
    * F% a3 V; T9 ^+ w8 U3 c* M5 W
    ; k3 [5 f2 r3 W2)当重复的内容是数据文件时,同样可以采用内部重定向的方式解决冗余问题,只是改为将链接文件的内容设置为:! u% D" i6 d7 Z
    @@@LINK=目标文件名全路径  (注意编码方式必须是UTF-16)3 a8 P$ Q6 p: R  Y$ A& f
    例如abc.spx和123.spx的内容是一样的时候,123.spx的内容可以设置为:6 ?+ C6 l' D0 N0 q$ J( E
    @@@LINK=\abc.spx
    1 K9 t2 l' A$ m  f6 @) h) k$ X
    ) V3 N  e8 v: Y6 N
    * @  f4 P% I$ s
    4) MDict的紧凑型html格式(Compat Html)+ k) Z2 {: \% X
    这个格式由两个文件组成,正文文件格式基本和2)一样,但在正文里可以使用记号。另外
    0 Z+ x$ a/ [0 o4 ^一个是记号文件。
    , F2 |. @1 U' m) h9 W, ~! c6 e
    9 X* a7 F* L7 S  k: ]( ^记号文件的格式:- Z9 U5 a) C  O
    由多个记号定义组成,每个记号定义有3行
    7 h2 i: X# P/ T1 `3 f% i第一行: 记号的名称(只能用数字,必须大于0,最大不超过255)
    ! F% t# i; C" \' R第二行: 开始字符串(可以为空)/ d" O5 d; f7 f1 k
    第三行: 结束字符串(可以为空)2 n6 P& L- y$ o4 F" B8 e
    使用时在正文里使用`记号`(键盘左上角的那个符号)就会将后续的文字直到下一个记号前的文( H, ~: D. C6 ?- x6 x
    字用记号定义的开始字符串和结束字符串括起来。正文里如果需要显示` 则用"&#96;"表示。内
    ) G3 g5 t( T6 }7 @' o码应该和正文的一样(例如正文如果是用Unicode的话,记号文件也应该用Unicode): A. l  O) S* {3 o2 f6 K9 o. s
    1 G$ R: h' \' {. N0 P1 c9 s/ q
    例如:
    & O& C  n4 V; @2 u" N7 f. i记号文件:
    ( b, T" `0 b9 f& f# Q1; P  T+ I9 n! I' O9 {, i" o
    <font size=5>
    9 {. z' u% a- e8 q</font>
    ( h1 T: o8 j0 x# }2
    6 l2 z+ J( `8 w5 L9 X( Y/ S  k<br>- D2 ?2 U8 L+ t  }5 i% ]8 ]6 {
    - R4 q) Z0 o8 s8 z
    3
    8 G& A( k. l2 i  Y- \! S- Q<font face="Kingsoft Phonetic Plain, Tahoma">
    $ O% S: a7 X5 F$ ^5 J- U  O0 M) {! h2 f</font>9 U1 T* ~3 v: k6 J! n, P0 R" s
    ! A& w5 I) y3 L& Y4 Q

    , h: Z$ ^. \- Z+ s+ m+ ]
    8 x& }! S& ?/ i3 c) @$ U3 B4 i正文文件:, g& ~8 y5 |6 s& m1 Y& p) {; g
    whole6 I2 b2 S# X. X+ g+ p9 z- H
    `1`whole&#96;s`2`<p>`3`(hol,hJl; houl)3 {! r0 W# `5 @9 Z
    </>
    4 @& E- t% w7 {# A7 G0 V9 G' E# K( H4 P
    最后在显示的时候就会被替换成4 k1 h( `* i% {* x8 U2 K' a
    <font size=5>whole&#%96;s</font><br><p><font face="Kingsoft Phonetic Plain, Tahoma">(hol,hJl; houl)</font>0 u; ~9 S8 n8 ~. j% Q" ^
    : z2 L  l! b# b) u8 F2 k
    % k) Y* v: {* r6 I- K
    备注:
    ( u; h+ B2 g1 C! G如果你的数据里含有国际音标,建议使用Unicode格式
    9 S$ l0 v% ]; g, J9 s* F(请参考http://www.phon.ucl.ac.uk/home/wells/ipa-unicode.htm1 I9 m! R, P* s
    将音标用对应的Unicode进行表示。这样只要用户装有支持IPA的字体文件就能够显示音标。
    * |/ s# }0 j6 P: ^- ^4 _6 I0 _8 u(Windows里的Lucida Console就包含有IPA对应的字体)
  • TA的每日心情
    无聊
    2021-1-15 05:13
  • 签到天数: 271 天

    [LV.8]以坛为家I

     楼主| 发表于 2016-3-10 03:14:47 | 显示全部楼层
    Oeasy 发表于 2016-3-10 00:15( E8 t3 k" u! Y; O
    -: k; l. z% c) C0 L; Z+ t
    我决定可以先试试把您已有的 StarDict 词典文件直接转换为 mdx 格式。
    + z& @% W6 w- {或者再看看

    . w$ W' n+ @2 h) V多谢O大的回复, 我后来想到去读MDict的词典制作软件的文档了, 也从百度百科作者的词条中读到了关于 "@@@LINK=" 的相关用法, 这样处理可以搞定多词(变形)一义的问题, 但还存在一词多义(存在多个不同的解释词条), 不知道这种情况能否编译通过...准备抽时间试试...5 t, H; q2 ]7 A% I' m$ K& a( d
    直接把Stardict转Mdict以前试过, 但不成功, 因为生成Stardict的TXT中有MDict不支持的同义词分隔符 " | ", 而且我的Stardict格式的词典也不是用原作者标准的编译软件生成的, 词典目录下还有一个 .syn 的文件用于处理我描述的情况, 估计没有任何一个转换软件支持处理它.
    0 |1 Y9 I) H" j+ }5 I总之, 多谢O大的回复, 我会把以前制作Stardict的原始文件找出来, 然后试试如何能处理成MDict的, 等我弄出个结果再来报告试验过程.
    6 v4 W0 Q+ ?- R1 R7 c, {2 J再次感谢!
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-5-8 20:10 , Processed in 0.021725 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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