数字人文文本分析服务

提供挪威国家图书馆数字人文实验室的文本搜索、词频分析、上下文查询等功能,适用于历史文献研究和语言学分析。

  • by marksverdhei
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 marksverdhei/dhlab-mcp

使用说明

dhlab mcp

MCP服务器提供访问 DHLAB (挪威国家图书馆数字人文实验室)通过模型上下文协议实现功能。

概述

此服务器公开了以下工具:

  • 文本搜索:搜索国家图书馆的数字文本收藏
  • NGram分析:分析单词频率随时间的变化趋势
  • 一致:在文档中查找单词上下文
  • 搭配:发现一起出现的单词
  • 单词查找:查找挪威语的词形和词形
  • 图像搜索:搜索数字收藏中的图像
  • 语料库统计:获取有关文档收藏的信息

安装

此项目使用 uv,可以安装:

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh

克隆并安装:

git clone https://github.com/marksverdhei/dhlab-mcp.git
cd dhlab-mcp
uv sync --dev

或直接安装:

pip install git+https://github.com/marksverdhei/dhlab-mcp.git

用法

在Claude Code CLI中配置

将MCP服务器添加到您的Claude Code配置中:

# inside the repo directory:
claude mcp add --transport stdio dhlab -- uv --directory $PWD run dhlab-mcp

或在用户范围内:

claude mcp add --scope user --transport stdio dhlab -- uv --directory $PWD run dhlab-mcp

验证服务器是否已添加:

claude mcp list

DHLAB工具将在您的Claude Code会话中可用。

独立运行MCP服务器

您也可以直接运行服务器进行测试:

dhlab-mcp

或者在开发模式下:

uv run dhlab-mcp

作为本地HTTP API运行

要在自定义端口上将MCP服务器作为本地HTTP API运行,请执行以下操作:

# Run on default port 8000
dhlab-mcp --transport http

# Run on a custom port
dhlab-mcp --transport http --port 9000

# Run on a specific host and port
dhlab-mcp --transport http --host 0.0.0.0 --port 8080

服务器支持以下传输选项:

  • stdio (默认):CLI集成的标准输入/输出
  • http:流式HTTP传输(建议用于网络访问)
  • sse:服务器发送事件传输(旧版,用于向后兼容性)

运行后,HTTP服务器将在以下位置可用 http://<host>:<port>/mcp/.

可用工具

1. search_texts

在数字收藏中搜索文本。

{
  "query": "ibsen",
  "limit": 10,
  "from_year": 1900,
  "to_year": 1950,
  "media_type": "aviser"  # or "bøker", "tidsskrift"
}

2. ngram_frequencies

获取单词频率随时间的变化趋势。

{
  "words": ["frihet", "demokrati"],
  "corpus": "bok",  # or "avis"
  "from_year": 1810,
  "to_year": 2020
}

3. find_concordances

在文档中查找单词上下文(返回HTML格式的文本)。

{
  "urn": "URN:NBN:no-nb_digibok_2008051404065",
  "word": "Norge",
  "window": 25
}

输出格式:HTML格式与 <b> 突出显示匹配项的标签。

4. word_concordance

使用结构化输出(无HTML格式)查找单词上下文。

{
  "urn": "URN:NBN:no-nb_digibok_2008051404065",
  "word": "Norge",
  "window": 12
}

输出格式:使用单独字段清理结构化数据:

  • dhlabid:文档标识符
  • before:匹配单词前的文本
  • target:匹配的单词本身
  • after:匹配单词后的文本

用例:

  • 使用 find_concordances 用于显示/UI(HTML格式)
  • 使用 word_concordance 用于分析/处理(结构化数据)

5. find_collocations

查找出现在目标单词附近的单词。

{
  "urn": "URN:NBN:no-nb_digibok_2008051404065",
  "word": "frihet",
  "window": 5
}

6. lookup_word_forms

查找挪威语单词的不同形式。

{
  "word": "løpe"
}

7. lookup_word_lemma

查找单词的引理(基本形式)。

{
  "word": "løper"
}

8. search_images

在收藏中搜索图像。

{
  "query": "Oslo",
  "limit": 10,
  "from_year": 1900,
  "to_year": 1950
}

9. get_corpus_statistics

获取一组文档的统计信息。

{
  "urns": ["URN:NBN:no-nb_digibok_2008051404065"]
}

发展

对于开发,请安装:

uv sync --dev
uv pip install -e .

运行测试:

pytest

格式代码:

ruff format src/ tests/

关于DHLAB

DHLAB是一个Python库,用于对挪威国家图书馆收藏的数字文本进行定性和定量分析。有关更多信息,请访问:

许可证

请参阅许可证文件。