有没有什么简明的 JSON 词典模板?

想找一套简明的 JSON 模板能覆盖英语、汉语、日语词典。

找了牛津、韦氏的 JSON 样例还有朗文的 HTML,看起来太复杂了,互相没法兼容,可能需要抽出公共新的结构来,只需要覆盖各大词典里常见的元素就可以了,比如子词条,词性,标签,义项,例句。

3 Likes

还有索引也是,辨析词典多个词头怎么搞。日语词典的索引要怎么设计,也没想好。

1 Like
  • 我是按 html tag 的路径,attr, key&value 分类,手写css,和原版自带css整合能更完善
  • 找 app 版,apk/exe 自带的 css 比网站 css 更精简
1 Like

我需要通用的 JSON 模板,到时喂给 AI ,帮我挑选最恰当的义项、例句和跳转。

2 Likes

有看过 Yomitan 吗?

yomitan不是真正结构化的,旧版有少量几个字段,其他基本照搬html标签。

1 Like

词典没有通用模板。一个词汇,它有三项本质构成,形、音、义。形和音比较固定简短,但释义部分,等于是一段或者一篇文章了,想怎么写就怎么写。不过通常释义部分还是有一定固定结构的,分词性(中文可以没有)、义项、例句这几个元素。此外的东西,像同义反义、衍生词、短语、词源、辨析等,都可以根据体例随意增减。

要最大的兼容性,就只分词头和释义,mdx那样。稍微扩展,就是词头、发音、〈词性〉、义项、例句、其他这几类。继续细分,就花样百出,没有标准了。

1 Like

Yomitan 原本设计的很好,是完全结构化的 JSON + 标签化的系统,以方便统一检索和样式化,但词典作者制作的时候完全没按这个思路来。

参考xml规范自己创造一个,xml改造成json应该是可以的。使用xml的具体实例有kindle和苹果,改成json用的就是yomichan嘛。

2 Likes

看过 LeXML 对日语词头的处理有点疑问,不知道为什么核心词头选择的是假名形式,而汉字表记形这里只是用作功能词头,我觉得反过来会更正常一些,P170:

<dic-item id="ABCD00000100">
<head>c
<headword>みだし・ご</headword>
<key>みだしご</key>
<headword type="表記">見出し語</headword>
<key type="表記">見出し語</key>
</head>
<meaning>語義語釈、解説など</meaning>
<example>用例</example>
<subheadword type="子見出し">子[小]見出し(派生語、複合語、成句な
ど)</subheadword>
<key type="子見出しかな">こみだし</key>
<key type="子見出し表記">子見出し</key>
<key type="子見出し表記">小見出し</key>
</dic-item>

不知是否理解你的要求,我之前转换 “牛津现代英汉双解词典第9版” 时就发现它的XML标签非常规整,你可以导出mdx的内容看看,这是我整理的标签说明。

'a' #超链接,类似这样<a href="entry://pants">pants</a>
'also' #源文件中只有这么一种形式:<also><cn>亦称作</cn></also>
'apd' #Appendix,附录,额外的释义,一般被apx包裹
'apx' #Appendix,附录
'c' #词条单词
'cn' #一般被zh包裹,中文释义
'def' #一个释义块
'div' #div
'eg' #具体的某一个例子
'en' #英语释义
'eps' #Example sentence, 例句,标记具体的示例句
'epx' #Expanded, 扩展,用于标记扩展的解释
'ex' #Example,例子区域,可能包含多个例子 ex > exp > eps > eg > en|zh
'exp' #例子区域
'gg' #Gloss, 解释,通常是某个词或短语的解释或注释
'gra' #Grammatical notation
'gs' #Glossary, 词汇表,用于表示词汇注释或解释
'h' #Highlight,高亮,标记特别需要强调的词或短语
'hwd' #Headword, 词头,标记词条的主词,包含c/sup等
'link' #css链接
'nvl' #Novel, 新,可能用于表示新的释义或新词
'ori' #Origin, 词源,用于显示词的来源或历史,里面可能包含a
'orx' #Origin explanation, 词源解释,与词源相关
'ot' #Other,标记词汇的其他类别或语境
'pd' #短语,一般里面包含一个h
'phd' #Phrases & Derivatives,phd > phr > pd > 
'pho' #Phonetics, 语音,表示音标的具体部分
'phr' #Phrase, 短语,用于标记短语或固定搭配
'phx' #Phonetic transcription, 单词发音区块,可能包含pho,pos,ot,gg等发音标签
'pos' #Part of speech,词性
'prx' #Prefix, 前缀,标记前缀部分或在词义前的额外信息
'rw' #row
'sa' #Sense area, 义项区,标记一个义项部分
'sb' #Subsection, 小节,用于标记词义或说明的分段,包含sc
'sc' #Subclassification, 子分类,标记词义下的子分类
'sqa' #Sub-qualifier,子限定符,标记更详细的限定部分,如例子中的a、b、c等分支义项
'sqn' #Sequence number, 序列号,标记词义的编号
'sub' #Subscript,下标
'sup' #Superscript,上标
'tm' #Term, 术语,标记特定的术语
'uge' #Usage, 用法,标记词语的用法说明
'uit' #Usage in text, 文本用法,标记某个词的用法解释
'x' #Example or additional info, 例子或附加信息,标记示例或补充信息
'xr' #Cross reference, 交叉引用,用于链接到相关词条,一般里面包含一个a
'zh' #Chinese translation 中文翻译
4 Likes

找出典型词典案例,让AI提炼一个?

1 Like

html tag 是数据的展示层,看起来乱。CSS 是数据的语义标记强相关,用apk自带的css就能找到 mdx 里 html 你需要的这四五种主要语义,其他tag直接忽略为渲染后无tag的text, 这样json的key&value都有了。

[
  {
    "hwd": text0,
    "senses":
      [
        {
          "1": 
            {
              "sense": text1,
              "exa": [ text2, text3 ]
            }
        }
      ] 
  }
]

1 Like

喂给 AI 的数据,通常需要结构化、扁平化的处理,JSON 更简洁、无冗余标签,所以工程上更常用,而 XML 读写都很困难。

这里有一份韦氏大学的 JSON 说明文档,可以参考下:

https://dictionaryapi.com/products/json

样例:(实际会更复杂了,还需要精简

"hom":1,
"hwi":{
  "hw":"ba*lo*ney",
  "prs":[
    {
      "mw":"b\u0259-\u02c8l\u014d-n\u0113",
      "sound":{"audio":"bologn01","ref":"c","stat":"1"}
    }
  ]
},
"fl":"noun",
"cxs":[
  {
    "cxl":"less common spelling of",
    "cxtis":[
      {"cxt":"bologna"}
    ]
  }
],
"def":[
  {
    "sseq":[
      [
        [
          "sense",
          {
            "dt":[
              ["text","{bc}a large smoked sausage of beef, veal, and pork"]
            ],
            "sdsense":{
              "sd":"also",
              "dt":[
                ["text","{bc}a sausage made (as of turkey) to resemble bologna"]
              ]
            }
          }
        ]
      ]
    ]
  }
]
1 Like

请各位再看下这份词头的设计是否合适:(我觉得汉语和日语的很别扭,不知道怎么搞

英语1:

"lang": "en-GB",
"title": "take",
"headwords": [
    {"hw": "take", "values": ["takes", "taking"]},
]

英语2:

"lang": "en-GB",
"title": "take over",
"headwords": [
    {"hw": "take over"},
]

汉语1:

"lang": "zh-CN",
"title": " 词典",
"headwords": [
    {"hw": "词典", "values": ["詞典"]},
    {"hw": "cí diǎn", "values": ["ci2 dian3"], "ref": "词典", "type": "pinyin"}
]

日语1:

"lang": "ja-JP",
"title": "とり‐け・す【取(り)消す】",
"headwords": [
    {"hw": "取り消す", "values": ["取消す"]},
    {"hw": "とりけす", "values": [], "ref": "取り消す", "type": "reading"},
]
1 Like

给AI的话好像还是太复杂了,AI根本不听话。但离便于使用还差远了。

个人认为只需要title和variants列表并列,variants列表里想列几个都可以。别区分那么多类型,AI太累了。以及,个人认为ID设计是必须的,不过AI不适合加,可以通过程序批量加。

1 Like

牛津韦氏等词典官网API可以返回json格式,注册一个免费账号,调用几次API就可以通过其格式改进自己的模型

1 Like

确实。

最近看到不少人建议,prompt要使用JSON格式,这样AI的回答比较结构化且稳定、减少随机的风格变换

1 Like

我也记得是这样。
楼主只要模版,
还是可以参考的。

2 Likes

个人觉得这类“大一统”的方式不现实。大一统的结果是抹杀特征,但一本词典恰恰是有用的特征让它更有价值。

但是呢,小规模,不是为了统一的取较大公约数还是可以做一些有用的事情的。比如,有一个为 外汉双解词典设计的JSON结构,那么比如:
基于一本【0】法汉双解词典,可以做出【1】法法词典 (用于培养阅读法文解释的习惯)【2】法汉词典(用于快速获得词义)【3】逆向的汉法词典【4】通过中文某个释义为连接点构成的法语同义词词典。
然后重点来了,这些都并不需要让数据重复,而只是词典软件通过算法便能基于一份数据自动构建。