添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

面向生产环境的多语种自然语言处理工具包,基于PyTorch和TensorFlow 2.x双引擎,目标是普及落地最前沿的NLP技术。HanLP具备功能完善、精度准确、性能高效、语料时新、架构清晰、可自定义的特点。

支持python、java、GO语言。

借助世界上最大的多语种语料库,HanLP2.1支持包括简繁中英日俄法德在内的104种语言上的10种联合任务以及多种单任务。HanLP预训练了十几种任务上的数十个模型并且正在持续迭代语料库与模型:

功能 RESTful 多任务 单任务 模型 标注标准
分词 教程 教程 教程 tok 粗分/细分
词性标注 教程 教程 教程 pos CTB PKU 863
命名实体识别 教程 教程 教程 ner PKU MSRA OntoNotes
依存句法分析 教程 教程 教程 dep SD UD PMT
成分句法分析 教程 教程 教程 con Chinese Tree Bank
语义依存分析 教程 教程 教程 sdp CSDP
语义角色标注 教程 教程 教程 srl Chinese Proposition Bank
抽象意义表示 暂无 暂无 教程 amr CAMR
指代消解 教程 暂无 暂无 暂无 OntoNotes
语义文本相似度 教程 暂无 教程 sts 暂无
文本风格转换 教程 暂无 暂无 暂无 暂无

轻量级RESTful API

仅数KB,适合敏捷开发、移动APP等场景。简单易用,无需GPU配环境,秒速安装, 强烈推荐 。服务器GPU算力有限,匿名用户配额较少, 建议申请免费公益API秘钥auth

Python

pip install hanlp_restful

创建客户端,填入服务器地址和秘钥:

from hanlp_restful import HanLPClient
HanLP = HanLPClient('https://www.hanlp.com/api', auth=None, language='zh') # auth不填则匿名,zh中文,mul多语种

无论何种开发语言,调用 parse 接口,传入一篇文章,得到HanLP精准的分析结果。

doc = HanLP.parse("2021年HanLPv2.1为生产环境带来次世代最先进的多语种NLP技术。阿婆主来到北京立方庭参观自然语义科技公司。")
print(doc)
  "tok/fine": [
    ["2021年", "HanLPv2.1", "为", "生产", "环境", "带来", "次世代", "最", "先进", "的", "多", "语种", "NLP", "技术"],
    ["阿婆主", "来到", "北京", "立方庭", "参观", "自然", "语义", "科技", "公司"]
  "tok/coarse": [
    ["2021年", "HanLPv2.1", "为", "生产", "环境", "带来", "次世代", "最", "先进", "的", "多语种", "NLP", "技术"],
    ["阿婆主", "来到", "北京立方庭", "参观", "自然语义科技公司"]
  "pos/ctb": [
    ["NT", "NR", "P", "NN", "NN", "VV", "NN", "AD", "VA", "DEC", "CD", "NN", "NR", "NN"],
    ["NN", "VV", "NR", "NR", "VV", "NN", "NN", "NN", "NN"]
  "pos/pku": [
    ["t", "nx", "p", "vn", "n", "v", "n", "d", "a", "u", "a", "n", "nx", "n"],
    ["n", "v", "ns", "ns", "v", "n", "n", "n", "n"]
  "pos/863": [
    ["nt", "w", "p", "v", "n", "v", "nt", "d", "a", "u", "a", "n", "ws", "n"],
    ["n", "v", "ns", "ni", "v", "n", "n", "n", "n"]
  "ner/msra": [
    [["2021年", "DATE", 0, 1], ["HanLPv2.1", "RATE", 1, 2]],
    [["北京立方庭", "ORGANIZATION", 2, 4], ["自然语义科技公司", "ORGANIZATION", 5, 9]]
  "ner/pku": [
    [["北京", "ns", 2, 3], ["立方庭", "ns", 3, 4]]
  "ner/ontonotes": [
    [["2021年", "DATE", 0, 1], ["HanLPv2.1", "CARDINAL", 1, 2]],
    [["北京", "GPE", 2, 3], ["立方庭", "FAC", 3, 4], ["自然语义科技公司", "ORG", 5, 9]]
  "srl": [
    [[["2021年", "ARGM-TMP", 0, 1], ["HanLPv2.1", "ARG0", 1, 2], ["为生产环境", "ARG2", 2, 5], ["带来", "PRED", 5, 6], ["次世代最先进的多语种NLP技术", "ARG1", 6, 14]], [["次世代", "ARGM-TMP", 6, 7], ["最", "ARGM-ADV", 7, 8], ["先进", "PRED", 8, 9], ["技术", "ARG0", 13, 14]]],
    [[["阿婆主", "ARG0", 0, 1], ["来到", "PRED", 1, 2], ["北京立方庭", "ARG1", 2, 4]], [["阿婆主", "ARG0", 0, 1], ["参观", "PRED", 4, 5], ["自然语义科技公司", "ARG1", 5, 9]]]
  "dep": [
    [[6, "tmod"], [6, "nsubj"], [6, "prep"], [5, "nn"], [3, "pobj"], [0, "root"], [9, "dep"], [9, "advmod"], [14, "rcmod"], [9, "cpm"], [12, "nummod"], [14, "nn"], [14, "nn"], [6, "dobj"]],
    [[2, "nsubj"], [0, "root"], [4, "nn"], [2, "dobj"], [2, "conj"], [7, "nn"], [9, "nn"], [9, "nn"], [5, "dobj"]]
  "sdp": [
    [[[6, "Time"]], [[6, "Exp"]], [[5, "mPrep"]], [[5, "Desc"]], [[6, "Datv"]], [[0, "Root"]], [[9, "Time"]], [[9, "mDegr"]], [[14, "Desc"]], [[9, "mAux"]], [[12, "Quan"]], [[14, "Desc"]], [[14, "Nmod"]], [[6, "Pat"]]],
    [[[2, "Agt"]], [[0, "Root"]], [[4, "Nmod"]], [[2, "Lfin"]], [[2, "ePurp"]], [[7, "Nmod"]], [[9, "Nmod"]], [[9, "Desc"]], [[5, "Cont"]]]
  "con": [
    ["TOP", [["IP", [["NP", [["NT", ["2021年"]]]], ["NP", [["NR", ["HanLPv2.1"]]]], ["VP", [["PP", [["P", ["为"]], ["NP", [["NN", ["生产"]], ["NN", ["环境"]]]]]], ["VP", [["VV", ["带来"]], ["NP", [["NP", [["CP", [["CP", [["IP", [["VP", [["NP", [["NN", ["次世代"]]]], ["ADVP", [["AD", ["最"]]]], ["VP", [["VA", ["先进"]]]]]]]], ["DEC", ["的"]]]]]], ["NP", [["QP", [["CD", ["多"]]]], ["NP", [["NN", ["语种"]]]]]]]], ["NP", [["NR", ["NLP"]], ["NN", ["技术"]]]]]]]]]]]]]],
    ["TOP", [["IP", [["NP", [["NN", ["阿婆主"]]]], ["VP", [["VP", [["VV", ["来到"]], ["NP", [["NR", ["北京"]], ["NR", ["立方庭"]]]]]], ["VP", [["VV", ["参观"]], ["NP", [["NN", ["自然"]], ["NN", ["语义"]], ["NP", [["NN", ["科技"]], ["NN", ["公司"]]]]]]]]]]]]]]

海量级native API

pip install hanlp

HanLP发布的模型分为多任务和单任务两种,多任务速度快省显存,单任务精度高更灵活。

多任务模型

HanLP的工作流程为加载模型然后将其当作函数调用,例如下列联合多任务模型:

import hanlp
HanLP = hanlp.load(hanlp.pretrained.mtl.CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ELECTRA_SMALL_ZH) # 世界最大中文语料库
doc= HanLP(['2021年HanLPv2.1为生产环境带来次世代最先进的多语种NLP技术。', '阿婆主来到北京立方庭参观自然语义科技公司。'])
print(doc)
  "tok/fine": [
    ["2021年", "HanLPv2.1", "为", "生产", "环境", "带来", "次世代", "最", "先进", "的", "多", "语种", "NLP", "技术"],
    ["阿婆主", "来到", "北京", "立方庭", "参观", "自然", "语义", "科技", "公司"]
  "tok/coarse": [
    ["2021年", "HanLPv2.1", "为", "生产", "环境", "带来", "次世代", "最", "先进", "的", "多语种", "NLP", "技术"],
    ["阿婆主", "来到", "北京立方庭", "参观", "自然语义科技公司"]
  "pos/ctb": [
    ["NT", "NR", "P", "NN", "NN", "VV", "NN", "AD", "VA", "DEC", "CD", "NN", "NR", "NN"],
    ["NN", "VV", "NR", "NR", "VV", "NN", "NN", "NN", "NN"]
  "pos/pku": [
    ["t", "nx", "p", "vn", "n", "v", "n", "d", "a", "u", "a", "n", "nx", "n"],
    ["n", "v", "ns", "ns", "v", "n", "n", "n", "n"]
  "pos/863": [
    ["nt", "w", "p", "v", "n", "v", "nt", "d", "a", "u", "a", "n", "ws", "n"],
    ["n", "v", "ns", "ni", "v", "n", "n", "n", "n"]
  "ner/msra": [
    [["2021年", "DATE", 0, 1], ["HanLPv2.1", "RATE", 1, 2]],
    [["北京立方庭", "ORGANIZATION", 2, 4], ["自然语义科技公司", "ORGANIZATION", 5, 9]]
  "ner/pku": [
    [["北京", "ns", 2, 3], ["立方庭", "ns", 3, 4]]
  "ner/ontonotes": [
    [["2021年", "DATE", 0, 1], ["HanLPv2.1", "CARDINAL", 1, 2]],
    [["北京", "GPE", 2, 3], ["立方庭", "FAC", 3, 4], ["自然语义科技公司", "ORG", 5, 9]]
  "srl": [
    [[["2021年", "ARGM-TMP", 0, 1], ["HanLPv2.1", "ARG0", 1, 2], ["为生产环境", "ARG2", 2, 5], ["带来", "PRED", 5, 6], ["次世代最先进的多语种NLP技术", "ARG1", 6, 14]], [["次世代", "ARGM-TMP", 6, 7], ["最", "ARGM-ADV", 7, 8], ["先进", "PRED", 8, 9], ["技术", "ARG0", 13, 14]]],
    [[["阿婆主", "ARG0", 0, 1], ["来到", "PRED", 1, 2], ["北京立方庭", "ARG1", 2, 4]], [["阿婆主", "ARG0", 0, 1], ["参观", "PRED", 4, 5], ["自然语义科技公司", "ARG1", 5, 9]]]
  "dep": [
    [[6, "tmod"], [6, "nsubj"], [6, "prep"], [5, "nn"], [3, "pobj"], [0, "root"], [9, "dep"], [9, "advmod"], [14, "rcmod"], [9, "cpm"], [12, "nummod"], [14, "nn"], [14, "nn"], [6, "dobj"]],
    [[2, "nsubj"], [0, "root"], [4, "nn"], [2, "dobj"], [2, "conj"], [7, "nn"], [9, "nn"], [9, "nn"], [5, "dobj"]]
  "sdp": [
    [[[6, "Time"]], [[6, "Exp"]], [[5, "mPrep"]], [[5, "Desc"]], [[6, "Datv"]], [[0, "Root"]], [[9, "Time"]], [[9, "mDegr"]], [[14, "Desc"]], [[9, "mAux"]], [[12, "Quan"]], [[14, "Desc"]], [[14, "Nmod"]], [[6, "Pat"]]],
    [[[2, "Agt"]], [[0, "Root"]], [[4, "Nmod"]], [[2, "Lfin"]], [[2, "ePurp"]], [[7, "Nmod"]], [[9, "Nmod"]], [[9, "Desc"]], [[5, "Cont"]]]
  "con": [
    ["TOP", [["IP", [["NP", [["NT", ["2021年"]]]], ["NP", [["NR", ["HanLPv2.1"]]]], ["VP", [["PP", [["P", ["为"]], ["NP", [["NN", ["生产"]], ["NN", ["环境"]]]]]], ["VP", [["VV", ["带来"]], ["NP", [["NP", [["CP", [["CP", [["IP", [["VP", [["NP", [["NN", ["次世代"]]]], ["ADVP", [["AD", ["最"]]]], ["VP", [["VA", ["先进"]]]]]]]], ["DEC", ["的"]]]]]], ["NP", [["QP", [["CD", ["多"]]]], ["NP", [["NN", ["语种"]]]]]]]], ["NP", [["NR", ["NLP"]], ["NN", ["技术"]]]]]]]]]]]]]],
    ["TOP", [["IP", [["NP", [["NN", ["阿婆主"]]]], ["VP", [["VP", [["VV", ["来到"]], ["NP", [["NR", ["北京"]], ["NR", ["立方庭"]]]]]], ["VP", [["VV", ["参观"]], ["NP", [["NN", ["自然"]], ["NN", ["语义"]], ["NP", [["NN", ["科技"]], ["NN", ["公司"]]]]]]]]]]]]]]

多任务模型里面包含多个任务(task),tok/fine、dep、con就是这个多任务模型CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ELECTRA_SMALL_ZH里面的任务(task),也可以这样查看:

tasks = list(HanLP.tasks.keys())
print(tasks)
['con', 'dep', 'ner/msra', 'ner/ontonotes', 'ner/pku', 'pos/863', 'pos/ctb', 'pos/pku', 'sdp', 'srl', 'tok/coarse', 'tok/fine']

tok/fine: tok是分词, fine是粗粒度。 '/'前面是任务,后面是标注标准

多任务模型的位置都在 hanlp.pretrained.mtl这个包下:

mtl — HanLP Documentation

对应的多任务模型类是hanlp.components.mtl.multi_task_learning.MultiTaskLearning

自定义任务

多任务模型可以选择需要执行的task,任务越少,速度越快

分词任务(默认细粒度)

HanLP('阿婆主来到北京立方庭参观自然语义科技公司。', tasks='tok').pretty_print()
' 阿婆主 来到 北京 立方庭 参观 自然 语义 科技 公司 。'

 执行粗颗粒度分词

HanLP('阿婆主来到北京立方庭参观自然语义科技公司。', tasks='tok/coarse').pretty_print()
'阿婆主 来到 北京立方庭 参观 自然语义科技公司 。'

同时执行细粒度和粗粒度分词

HanLP('阿婆主来到北京立方庭参观自然语义科技公司。', tasks='tok*')
{'tok/fine': ['阿婆主', '来到', '北京', '立方庭', '参观', '自然', '语义', '科技', '公司', '。'],
 'tok/coarse': ['阿婆主', '来到', '北京立方庭', '参观', '自然语义科技公司', '。']}

coarse为粗分,fine为细分。

执行粗颗粒分词和PKU词性标注

HanLP('阿婆主来到北京立方庭参观自然语义科技公司。', tasks=['tok/coarse', 'pos/pku'], skip_tasks='tok/fine').pretty_print()
'阿婆主/n 来到/v 北京立方庭/ns 参观/v 自然语义科技公司/n 。/w'
skip_tasks 是跳过的任务

在内存有限的场景下,用户还可以sha可以删除不必要的任务达到模型瘦身的效果。

HanLP: MultiTaskLearning = hanlp.load(hanlp.pretrained.mtl.CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ELECTRA_SMALL_ZH) # 世界最大中文语料库
tasks = list(HanLP.tasks.keys())
print(tasks)
for task in tasks:
    if task not in ('tok/fine', 'pos/pku'):
        del HanLP[task]
print(HanLP.tasks.keys())
doc =  HanLP(["2021年HanLPv2.1为生产环境带来次世代最先进的多语种NLP技术","阿婆主来到北京立方庭参观自然语义科技公司"])
print(doc)
['con', 'dep', 'ner/msra', 'ner/ontonotes', 'ner/pku', 'pos/863', 'pos/ctb', 'pos/pku', 'sdp', 'srl', 'tok/coarse', 'tok/fine']
dict_keys(['pos/pku', 'tok/fine'])
  "tok/fine": [
    ["2021年", "HanLPv2.1", "为", "生产", "环境", "带来", "次世代", "最", "先进", "的", "多", "语种", "NLP", "技术"],
    ["阿婆主", "来到", "北京", "立方庭", "参观", "自然", "语义", "科技", "公司"]
  "pos/pku": [
    ["t", "nx", "p", "vn", "n", "v", "n", "d", "a", "u", "a", "n", "nx", "n"],
    ["n", "v", "ns", "ns", "v", "n", "n", "n", "n"]

自定义字典

每个任务可以自定义词典,查看对应的教程即可,这里就举例ner(命名实体识别)任务:

doc =  HanLP(["2021年HanLPv2.1为生产环境带来次世代最先进的多语种NLP技术","阿婆主来到北京立方庭参观自然语义科技公司"],tasks=['ner/msra'])
print("after:")
print(doc)
ner = HanLP["ner/msra"]
ner.dict_whitelist={'多语种': 'CNN'}
doc =  HanLP(["2021年HanLPv2.1为生产环境带来次世代最先进的多语种NLP技术","阿婆主来到北京立方庭参观自然语义科技公司"],tasks=['ner/msra'])
print("before:")
print(doc)
after:
  "tok/fine": [
    ["2021年", "HanLPv2.1", "为", "生产", "环境", "带来", "次世代", "最", "先进", "的", "多", "语种", "NLP", "技术"],
    ["阿婆主", "来到", "北京", "立方庭", "参观", "自然", "语义", "科技", "公司"]
  "ner/msra": [
    [["2021年", "DATE", 0, 1], ["HanLPv2.1", "RATE", 1, 2]],
    [["北京立方庭", "ORGANIZATION", 2, 4], ["自然语义科技公司", "ORGANIZATION", 5, 9]]
before:
  "tok/fine": [
    ["2021年", "HanLPv2.1", "为", "生产", "环境", "带来", "次世代", "最", "先进", "的", "多", "语种", "NLP", "技术"],
    ["阿婆主", "来到", "北京", "立方庭", "参观", "自然", "语义", "科技", "公司"]
  "ner/msra": [
    [["2021年", "DATE", 0, 1], ["HanLPv2.1", "RATE", 1, 2], ["多语种", "CNN", 10, 12]],
    [["北京立方庭", "ORGANIZATION", 2, 4], ["自然语义科技公司", "ORGANIZATION", 5, 9]]

ner任务在多任务模型中自定义字典的具体教程:

https://github.com/hankcs/HanLP/blob/doc-zh/plugins/hanlp_demo/hanlp_demo/zh/ner_mtl.ipynb

多任务学习的优势在于速度和显存,然而精度往往不如单任务模型。

单任务模型的位置都在 hanlp.pretrained这个包下:

pretrained — HanLP Documentation

举例tok的任务模型使用:

hl = hanlp.load(hanlp.pretrained.tok.COARSE_ELECTRA_SMALL_ZH)
doc =  hl(["2021年HanLPv2.1为生产环境带来次世代最先进的多语种NLP技术","阿婆主来到北京立方庭参观自然语义科技公司"])
print(doc)
[['2021', '年', 'HanLPv2.1', '为', '生产', '环境', '带来', '次', '世代', '最', '先进', '的', '多', '语种', 'NLP', '技术'], ['阿婆主', '来到', '北京立方庭', '参观', '自然语义科技公司']]

自定义词典

单任务模型也是一样有自定义词典,用法和多任务模型里面一样,可以直接看看对应教程

流水线组合

HanLP预训练了许多单任务模型并设计了流水线模式将其组装起来。

import hanlp
HanLP = hanlp.pipeline() \
    .append(hanlp.utils.rules.split_sentence, output_key='sentences') \
    .append(hanlp.load('FINE_ELECTRA_SMALL_ZH'), output_key='tok') \
    .append(hanlp.load('CTB9_POS_ELECTRA_SMALL'), output_key='pos') \
    .append(hanlp.load('MSRA_NER_ELECTRA_SMALL_ZH'), output_key='ner', input_key='tok') \
    .append(hanlp.load('CTB9_DEP_ELECTRA_SMALL', conll=0), output_key='dep', input_key='tok')\
    .append(hanlp.load('CTB9_CON_ELECTRA_SMALL'), output_key='con', input_key='tok')
HanLP('2021年HanLPv2.1为生产环境带来次世代最先进的多语种NLP技术。阿婆主来到北京立方庭参观自然语义科技公司。')

个人感觉, 多任务模型就是官方通过流水线组装好的单任务模型

·教学常用的NLTK ( Natural Language Toolkit ) ·斯坦福大学开发的CoreNLP ·国内哈工大开发的LTP(Language TechnologyPlatform ) ·何哈开发的HanLP ( Han Language Processing ) 何晗开发的 HanLP ( Han Language Processing ) 是其中一种自然语言处理工具。这里主要介绍 Hanlp 在 cmd 下的安装和使用
HanLP安装使用(Windows) 安装Hanlp时候发现网上的一些介绍文章写的有些模糊,这里记录一下Python环境下安装与使用Hanlp。 首先,要明确HanLP是一个Java工具包,由很多模型、算法组成,而在学习自然语言的时候一般都会使用Python吧,因此,实质上是使用Python调用Hanlp。 具体安装步骤: 1.安装Java 和 Visual C++环境 首先是安装JDK,这个在O...
HanLP(Han Language Processing)是由一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环境中的应用。 HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。 1.创建java项目,导入HanLP必要的包 2.把对应的配置文件放置在src下 3.修改hanlp.properties配置文件,使其指向data(data中包含词典...
自然语言处理定义: 自然语言处理是一门计算机科学、人工智能以及语言学的交叉学科。虽然语言只是人工智能的一部分(人工智能还包括计算机视觉等),但它是非常独特的一部分。这个星球上有许多生物拥有超过人类的视觉系统,但只有人类才拥有这么高级的语言。 自然语言处理的目标是让计算机处理或说“理解”自然语言,以完成有意义的任务,比如订机票购物或QA等。完全理解和表达语言是极其困难的,完美的语言理解等效于实现...
1、hanlp理解 HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。 2、hanlp参考gitHup地址 https://github.com/hankcs/HanLP 3、hanlp IDEA项目搭建 (1)gitHub下载data数据包 (2)下...
伴随着深度学习的大红大紫,只要是在自己的成果里打上 deep learning 字样, 总会有人去看。深度学习可以称为当今机器学习领域的当之无愧的巨星,也特别 得到工业界的青睐。 在各种大举深度学习大旗的公司中,Google 公司无疑是旗举得最高的,口号 喊得最响亮的那一个。Google 正好也是互联网界璀璨巨星,与深度学习的联姻, 就像影视巨星刘德华和林志玲的结合那么光彩夺目。 巨星联姻产生的成果自然是天生的宠儿。2013 年末,Google 发布的 word2vec 工具引起了一帮人的热捧,互联网界大量 google 公司的粉丝们兴奋了,从而 google 公司的股票开始大涨,如今直逼苹果公司。 在大量赞叹 word2vec 的微博或者短文中,几乎都认为它是深度学习在自然 语言领域的一项了不起的应用,各种欢呼“深度学习在自然语言领域开始发力了”。 互联网界很多公司也开始跟进,使用 word2vec 产出了不少成果。身为一个 互联网民工,有必要对这种炙手可热的技术进行一定程度的理解。 好在 word2vec 也算是比较简单的,只是一个简单三层神经网络。在浏览了 多位大牛的博客,随笔和笔记后,整理成自己的博文,或者说抄出来自己的博文
文本处理的基本方法1. 分词1.1 什么是分词1.2 分词的作用1.3 流行中文分词工具jieba1.3.1 jieba的特性1.3.2 jieba的安装1.3.3 jieba的使用 1. 分词 1.1 什么是分词 分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。 我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符, 分词过程就是找到这样分界符的过程. 举个栗子: 工信处女干事每月经过下属科室都要亲口交代24
weixin_41511906: public static void postTest() { RestTemplate restTemplate = new RestTemplate(); // String url = "http://localhost:8088/jxm-qa/addProject"; String url = "http://localhost:8088/jxm-qa/qurePlan"; HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.APPLICATION_JSON); JSONObject body = new JSONObject(); body.put("current", "0"); body.put("planName", "ldkj"); body.put("size", "5"); HttpEntity<String> entity = new HttpEntity<>(body.toString(), httpHeaders); ResponseEntity<JSONObject> exchange = restTemplate.exchange(url, HttpMethod.GET, entity, JSONObject.class); System.out.println(exchange.getBody()); } 为什么我的get请求不可以 弄了好久也不行,post可以, Exception in thread "main" org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 null at org.springframework.web.client.HttpServerErrorException.create(HttpServerErrorException.java:79) RestTemplate 简单使用 Starry Sky001: 代码太多了,直接给demo项目也许会更好