hankcs/HanLP
中文分词 词性标注 命名实体识别 依存句法分析 成分句法分析 语义依存分析 语义角色标注 指代消解 风格转换 语义相似度 新词发现 关键词短语提取 自动摘要 文本分类聚类 拼音简繁转换 自然语言处理
HanLP – 多言語自然言語処理ツールキット
概要 – HanLPは、多くの言語に対して本番環境対応のNLPモデルを提供するオープンソースのPythonライブラリ(JavaおよびGoバインディング付き)です。軽量な RESTful サービス(数KBのクライアント、GPU不要)と、PyTorchまたはTensorFlow 2.x上で動作するフル機能の ネイティブ Python APIの両方を提供します。このプロジェクトは、速度、精度、カスタマイズの容易さに重点を置いており、トークン化、POSタグ付け、NER、依存関係/構成構文解析、意味役割ラベル付け、AMR、共参照、テキスト類似度、要約、スタイル変換、感情分析、言語検出などをカバーする数十の事前学習済みモデルをバンドルしています。
主な機能 (READMEより)
| 機能 | 提供方法 | ハイライト |
|---|---|---|
| 多言語サポート | 130言語のモデル(中国語、英語、日本語、ロシア語、フランス語、ドイツ語など) | 言語間での統一API |
| 共同 (マルチタスク) モデル | 1つのモデルで最大10のタスクを同時に実行可能(例:トークン化 + POS + NER + SRL + 依存関係 + 意味依存関係 + 構成) | 推論の高速化、メモリ使用量の削減 |
| シングルタスクモデル | 最高精度が必要な場合に各タスク向けの高精度モデルを提供 | 柔軟なパイプライン構成 |
| 2つのAPIスタイル | • RESTful – 軽量クライアント、あらゆる言語から利用可能、GPU不要 \n• ネイティブ – ローカルで重いモデルをロードするPythonライブラリ (CPU/GPU/TPU) | デプロイ規模に応じて選択 |
| 簡単なカスタマイズ | Trieベースのユーザー辞書、ルールベースのトークン結合/分割、不要なタスクを削除してモデルを縮小する機能 | 新しいドメインへの迅速な適応 |
| 一貫したJSON出力 | すべてのAPIは tok/fine、pos/ctb、ner/msra、dep、srl などのフィールドを持つJSON互換の Document オブジェクトを返します |
下流処理の簡素化 |
| 可視化 | 依存関係/意味構造のためのコンソールベースのツリー可視化 | デバッグや学習に役立つ |
| 本番環境対応 | Linux/macOS/Windowsでユニットテスト済み、Python 3.6‑3.10をサポート、GPU/TPUオプション | 実際のサービスで信頼性が高い |
一般的なユースケース
- 下流MLのためのテキスト前処理パイプライン(例:分類前のトークン化 + POS + NER)。
- 情報抽出:ニュース、金融、法務文書における固有表現抽出、関係抽出、意味役割ラベル付け。
- 多言語コンテンツ分析:数十言語にわたる感情分析、言語検出、またはキーフレーズ抽出。
- 学術研究:モデルをゼロから構築することなく、構文解析、AMR、共参照のための高速なベースラインモデルとして利用。
- 本番サービス:GPUを管理することなく、低遅延のNLPを必要とするモバイルアプリやマイクロサービスにRESTfulエンドポイントを公開。
はじめに
1. インストール
# ネイティブ Python API (フルモデル、GPUオプション)
pip install hanlp
# 軽量 RESTful クライアント (あらゆる言語)
pip install hanlp_restful # Python 例
2. Python クイック例 (ネイティブ API)
import hanlp
# 多言語共同モデルをロード (小型中国語 ELECTRA バックボーン)
HanLP = hanlp.load(
hanlp.pretrained.mtl.CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ELECTRA_SMALL_ZH)
sentences = [
"2021年HanLPv2.1为生产环境带来次世代最先进的多语种NLP技术。",
"阿婆主来到北京立方庭参观自然语义科技公司。"
]
result = HanLP(sentences)
print(result) # JSON‑compatible output
HanLP.pretty_print() # visual console view
3. Python クイック例 (RESTful API)
from hanlp_restful import HanLPClient
client = HanLPClient('https://www.hanlp.com/api', auth=None, language='zh')
print(client.parse("HanLP提供了强大的中文分词和命名实体识别功能。"))
4. その他の言語
Go および Java 用の同じクライアントライブラリが存在します。依存関係を追加し、サーバーURLとオプションのAPIキーを使用して HanLPClient を作成するだけです。
ドキュメントとコミュニティ
- ドキュメントとデモ – https://hanlp.hankcs.com/docs/ (各タスクのJupyterノートブックを含む)
- モデルカタログ – https://hanlp.hankcs.com/docs/api/hanlp/pretrained/
- フォーラムと論文 – https://bbs.hankcs.com/
- 引用 – 研究でHanLPを使用する場合は、READMEにリンクされているEMNLP 2021の論文を引用してください。
要約
HanLPは、軽量なRESTfulサービスとフル機能のネイティブPython APIの両方を提供する、成熟した多言語NLPライブラリです。トークン化から意味解析まで、あらゆるタスクに対応する数十の事前学習済みモデルが付属しており、カスタム辞書をサポートし、研究のプロトタイピングと本番環境へのデプロイの両方のために設計されています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト