+-
49K Star爆了!最全中文诗词数据库开源,5.5万首唐诗免费用,告别付费API焦虑!


今年找素材又踩了坑,花300买的某诗词API用了半年就跑路了。偶然发现了个宝藏项目,直接解决了我的所有问题!chinese-poetry项目居然收录了全唐诗、全宋词等超15万首古诗词,而且是结构化的JSON格式,拿来就能用。

项目介绍

chinese-poetry可能是目前互联网上最全的中文诗词数据库,完全开源免费,无任何使用限制。这个项目收录了从先秦到清代的诗词,不仅有常见的唐诗宋词,还包括了楚辞、论语、诗经等经典。所有数据都以JSON格式存储,对开发者极其友好。

49K Star爆了!最全中文诗词数据库开源,5.5万首唐诗免费用,告别付费API焦虑!

看了下它的数据量,真的很惊人:

  • • 5.5万首唐诗

  • • 2.2万首宋词

  • • 近1.4万首宋诗

  • • 全部的《诗经》305首

  • • 楚辞19篇

  • • 《论语》20篇

  • • 《四书五经》等古籍

这玩意跟市面上那些收费API比起来,简直就是降维打击。我之前用的那个付费API才收录了1万首诗词,还动不动就限流,真是交智商税。

数据格式

整个项目的数据组织非常清晰,全部采用JSON格式。比如唐诗的数据结构是这样的:

[
  {
    "title":"春望",
    "author":"杜甫",
    "paragraphs":[
      "国破山河在,城春草木深。",
      "感时花溅泪,恨别鸟惊心。",
      "烽火连三月,家书抵万金。",
      "白头搔更短,浑欲不胜簪。"
    ],
    "strains":[
      "平仄仄平仄,平平仄仄平。",
      "仄平平仄仄,仄仄仄平平。",
      "平仄平平仄,平平仄仄平。",
      "仄平平仄仄,平仄仄平平。"
    ]
}
]

看起来简单,但这种结构设计特别巧妙。不仅包含了基本的标题、作者、内容,还标注了平仄信息!对于想做古诗词应用的开发者来说,简直是天赐的礼物,省去了自己处理分词、断句的麻烦。

宋词的数据格式也差不多,还额外标注了词牌名:

[
  {
    "author":"苏轼",
    "paragraphs":[
      "十年生死两茫茫,不思量,自难忘。",
      "千里孤坟,无处话凄凉。",
      "纵使相逢应不识,尘满面,鬓如霜。",
      "夜来幽梦忽还乡,小轩窗,正梳妆。",
      "相顾无言,惟有泪千行。",
      "料得年年肠断处,明月夜,短松冈。"
    ],
    "rhythmic":"江城子",
    "title":"江城子·乙卯正月二十日夜记梦"
}
]

与其他数据源对比

说实话,中文诗词数据库项目不少,但chinese-poetry 把别人甩出十条街的地方在于:

  • 1. 数据量最全(15万诗词,其他项目基本都在5万以下)

  • 2. 数据质量高(有专人校对,错误率低)

  • 3. 结构化存储(全部是标准JSON,拿来就能用)

  • 4. 完全开源(MIT许可,想怎么用就怎么用)

  • 市面上常见的诗词API基本都是收费的,而且质量参差不齐。有些还限制调用次数,稍微流量大点就要你加钱。更别提那些只提供网页爬虫的方案,既不稳定又容易违规。

    这个项目直接把数据给你,想怎么用完全看你,不用担心API挂了、限流或者突然改收费策略。而且本地部署后,响应速度能快10倍以上。

    快速上手

    想用这些数据超级简单,我试了几种方法,分享给大家:

    方法1:直接克隆仓库

    git clone https://github.com/chinese-poetry/chinese-poetry.git
    cd chinese-poetr
    # 然后就可以访问json文件了

    方法2:使用官方API

    项目维护者提供了一个开源的API服务,叫做chinese-poetry-server:

    # 安装
    npm install chinese-poetry-server -g
    # 运行
    cp-server
    启动后可以通过HTTP接口查询:
    http://localhost:8080/poem/random  # 随机一首诗
    http://localhost:8080/poem/author/李白  # 搜索李白的诗

    方法3:使用python包

    pip install chinese-poetry
    #然后在代码中:
    
    from chinese_poetry import ChinesePoetry
    
    cp = ChinesePoetry()
    poem = cp.random_poem()  # 随机一首诗
    print(poem['author'], poem['title'])
    print('\n'.join(poem['paragraphs']))

    不管哪种方式,都比调用那些随时可能跑路的API靠谱多了。我现在的小程序后台就直接用git clone下载整个仓库,然后用Node.js提供API服务,一个月流量几百万都没问题,响应速度稳定在20ms以内。

    应用场景

    有了这个宝藏数据库,能做的事情太多了:

    • • 开发诗词搜索引擎

    • • 做古诗词小程序

    • • 训练AI写诗模型

    • • 研究古典文学用词规律

    • • 中文NLP数据集

    • • 制作诗词卡片、日历等文创产品

    实际上很多市面上的诗词APP背后用的就是这个数据库。我前阵子做了个"每日一诗"的公众号定时推送,短短两个月涨粉5000+,全靠这个数据源支撑。每次推送不仅有原诗,还能加上平仄、创作背景等信息,内容特别丰富。

    项目亮点

    深入研究后发现,这个项目的成功不是偶然的:

  • 1. 数据清洗做得特别好。每个JSON文件都经过了格式验证,错别字极少,还保留了原有的标点符号。

  • 2. 社区协作模式高效。有大量志愿者参与校对和补充数据,使得项目一直保持活力。

  • 3. 完美的分类组织。按朝代、作者、体裁等多维度组织,查找极其方便。比如你想找宋代苏轼的词,直接进入song/ci目录下搜索即可。

  • 4. 持续更新。项目从2016年开始,一直活跃至今,不断有新数据加入。最近还增加了《纳兰词》、《唐诗三百首》等专题集合。

  • 网上那些付费API动辄一年几百上千,还各种功能限制。而这个项目完全开源,甚至连服务器都不需要,直接把JSON文件放到CDN上就能用。就算是流量再大的应用,也能稳如泰山

    技术价值

    作为一个开发者,我特别欣赏这个项目的技术设计:

  • 1. 选择JSON而非XML或CSV。JSON处理起来最方便,几乎所有编程语言都有原生支持。

  • 2. 扁平化的数据结构。没有复杂的嵌套,便于快速检索和处理。

  • 3. Unicode编码。全部采用UTF-8编码,无乱码问题。

  • 4. 最小化冗余。数据设计遵循了最小化原则,没有多余字段。

  • 这些设计让项目即使涵盖15万首诗词,总体积依然保持在200MB左右,放到手机里都完全没压力。

    项目地址:
    https://github.com/chinese-poetry/chinese-poetry