ChatGPT+NLP下的Prompt模板工具:PromptSource、ChatIE代表性开源项目介绍

来自:老刘说NLP

求职/进NLP群—>加入NLP交流群

我们在之前的文章中介绍到,prompt是影响下游任务的关键所在,当我们在应用chatgpt进行nlp任务落地时,如何选择合适的prompt,对于SFT以及推理环节尤为重要。

不过,硬想不是办法,我们可以充分参考开源的一些已有工作,幸运的是,这类工作已然存在。

因此,本文主要介绍PromptSource英文常用评测任务prompt生成工具包、ChatIE:面向RE\EE\NER三种任务的prompt生成两种代表性工具,尤其是对后者的逻辑进行解析,供大家一起参考。

一、PromptSource英文常用评测任务prompt生成工具

PromptSource是一个用于创建、共享和使用自然语言提示的工具包,截至2022年1月20日,P3中有约2000个prompt,涵盖170多个英语数据集。

ChatGPT+NLP下的Prompt模板工具:PromptSource、ChatIE代表性开源项目介绍_第1张图片

项目地址:https://github.com/bigscience-workshop/promptsource

1、storycloze的prompt

templates:
  1a4946f9-a0e2-4fbb-aee8-b26ead2cf6b8: !Template
    answer_choices: '{{sentence_quiz1}} ||| {{sentence_quiz2}}'
    id: 1a4946f9-a0e2-4fbb-aee8-b26ead2cf6b8
    jinja: '{{input_sentence_1}} {{input_sentence_2}} {{input_sentence_3}} {{input_sentence_4}}
      What is a possible continuation for the story given the following options ?
      - {{answer_choices | join("\n- ")}} ||| {{answer_choices[answer_right_ending
      -1]}}'
    metadata: !TemplateMetadata
      choices_in_prompt: true
      languages:
      - en
      metrics:
      - Accuracy
      original_task: true
    name: Answer Given options
    reference: ''
  1a9d53bc-eb77-4e7c-af6e-3d15b79d6cf1: !Template
    answer_choices: '{{sentence_quiz1}} ||| {{sentence_quiz2}}'
    id: 1a9d53bc-eb77-4e7c-af6e-3d15b79d6cf1
    jinja: "Read the following story :\n\n{{input_sentence_1}}\n{{input_sentence_2}}\n\
      {{input_sentence_3}}\n{{input_sentence_4}}\n\nChoose a possible ending for the\
      \ previous story from the following options: \n- {{answer_choices | join(\"\\\
      n- \")}}\n|||\n\n{{answer_choices[answer_right_ending -1]}}"
    metadata: !TemplateMetadata
      choices_in_prompt: true
      languages:
      - en
      metrics:
      - Accuracy
      original_task: true
    name: Choose Story Ending
    reference: ''

2、Squad任务的prompt

templates:
  3d85b5b0-51db-4d72-8ead-d0b3654025ee: !Template
    answer_choices: null
    id: 3d85b5b0-51db-4d72-8ead-d0b3654025ee
    jinja: 'Refer to the passage below and answer the following question:
      Passage: {{context}}
      Question: {{question}}
      |||
      {{answers["text"][0]}}'
    metadata: !TemplateMetadata
      choices_in_prompt: false
      languages:
      - en
      metrics:
      - Squad
      original_task: true
    name: answer_question_given_context
    reference: ''

3、MathQA任务的prompt

a313a5f8-53cd-4b76-abb6-fea2ac4e9ef4: !Template
    answer_choices: a ||| b ||| c ||| d ||| e
    id: a313a5f8-53cd-4b76-abb6-fea2ac4e9ef4
    jinja: "One of the five choices are correctly answers the math problem. Can you\
      \ choose the right one? \n\n{{options}}\n\nProblem: {{Problem}}\n|||\n{{correct}}"
    metadata: !TemplateMetadata
      choices_in_prompt: true
      languages:
      - en
      metrics:
      - Accuracy
      original_task: true
    name: first_choice_then_problem
    reference: First give the list of choices and then describe the problem
  a3c2ec72-4af5-42aa-9e8e-ef475fa7c039: !Template
    answer_choices: general ||| physics ||| gain ||| geometry ||| probability |||
      other
    id: a3c2ec72-4af5-42aa-9e8e-ef475fa7c039
    jinja: "Given the problem below, in what category would you classify it?\n===\n\
      {{Problem}} \n\nCategories:\n{{answer_choices | join(\"\\n\")}}\n|||\n{{category}}\n"
    metadata: !TemplateMetadata
      choices_in_prompt: true
      languages:
      - en
      metrics:
      - Accuracy
      original_task: false
    name: problem_set_type
    reference: The template asks to generate the category of the problem set

4、使用方式

# Load an example from the datasets ag_news
>>> from datasets import load_dataset
>>> dataset = load_dataset("ag_news", split="train")
>>> example = dataset[1]

# Load prompts for this dataset
>>> from promptsource.templates import DatasetTemplates
>>> ag_news_prompts = DatasetTemplates('ag_news')

# Print all the prompts available for this dataset. The keys of the dict are the uuids the uniquely identify each of the prompt, and the values are instances of `Template` which wraps prompts
>>> print(ag_news_prompts.templates)
{'24e44a81-a18a-42dd-a71c-5b31b2d2cb39': , '8fdc1056-1029-41a1-9c67-354fc2b8ceaf': , '918267e0-af68-4117-892d-2dbe66a58ce9': , '9345df33-4f23-4944-a33c-eef94e626862': , '98534347-fff7-4c39-a795-4e69a44791f7': , 'b401b0ee-6ffe-4a91-8e15-77ee073cd858': , 'cb355f33-7e8c-4455-a72b-48d315bd4f60': }

# Select a prompt by its name
>>> prompt = ag_news_prompts["classify_question_first"]

# Apply the prompt to the example
>>> result = prompt.apply(example)
>>> print("INPUT: ", result[0])
INPUT:  What label best describes this news article?
Carlyle Looks Toward Commercial Aerospace (Reuters) Reuters - Private investment firm Carlyle Group,\which has a reputation for making well-timed and occasionally\controversial plays in the defense industry, has quietly placed\its bets on another part of the market.
>>> print("TARGET: ", result[1])
TARGET:  Business

二、ChatIE:面向RE\EE\NER三种任务的prompt生成工具

最近有篇文章《Zero-Shot Information Extraction via Chatting with ChatGPT》很有趣,该工作将零样本IE任务转变为一个两阶段框架的多轮问答问题(Chat IE),并在三个IE任务中广泛评估了该框架:实体关系三元组抽取、命名实体识别和事件抽取。在两个语言的6个数据集上的实验结果表明,Chat IE取得了非常好的效果,甚至在几个数据集上(例如NYT11-HRL)上超过了全监督模型的表现。

地址:https://github.com/cocacola-lab/ChatIE
ChatGPT+NLP下的Prompt模板工具:PromptSource、ChatIE代表性开源项目介绍_第2张图片

ChatGPT+NLP下的Prompt模板工具:PromptSource、ChatIE代表性开源项目介绍_第3张图片

其实现基本原理为,通过制定任务实体关系三元组抽取、命名实体识别和事件抽取,并为每个任务设计了2个步骤的prompt-pattern,第一步用于识别类型,第二步用于识别指定类型的值。将抽取的任务定义(抽取要素)进行prompt填充,然后调用chatgpt接口,在取得结果后进行规则解析,结构化相应答案。

例如,关系抽取的具体执行步骤包括:针对每类prompt,分别调用prompt-pattern,得到相应结果:

def chat_re(inda, chatbot):
    def ask(p):
        for data in chatbot.ask(
            p
        ):
            response = data["message"]
        return response
    typelist = inda['type']
    sent = inda['sentence']
    lang = inda['lang']
    out = [] # 输出列表 [(e1,r1,e2)]
    try:
        print('---stage1---')
        # 构造prompt
        stage1_tl = list(typelist.keys())
        s1p = re_s1_p[lang].format(sent, str(stage1_tl))
        print(s1p)
        # 请求chatgpt
        text1 = ask(s1p)
        print(text1)
        # 正则提取结果
        res1 = re.findall(r'\(.*?\)', text1)
        print(res1)
        if res1!=[]:
            rels = [temp[1:-1].split(',') for temp in res1]
            rels = list(set([re.sub('[\'"]','', j).strip() for i in rels for j in i]))
        else:
            rels = []
        print(rels)
    except Exception as e:
        print(e)
        print('re stage 1 none out or error')
        return ['error-stage1']
  
    try:
        print('---stage2---')
        for r in rels:
            if r in typelist:
                # 构造prompt
                st, ot = typelist[r]
                s2p = re_s2_p[lang].format(st, ot, r, st, ot)
                print(s2p)
                # 请求chatgpt
                text2 = ask(s2p)
                print(text2)
                # 正则提取结果
                res2 = re.findall(r'\|.*?\|.*?\|', text2)
                print(res2)
                # 进一步处理结果
                count=0
                for so in res2:
                    count+=1
                    if count <=2: # 过滤表头
                        continue
                    so = so[1:-1].split('|')
                    so = [re.sub('[\'"]','', i).strip() for i in so]
                    if len(so)==2:
                        s, o = so
                        out.append((s, r, o))
    except Exception as e:
        print(e)
        print('re stage 2 none out or error')
        if out == []:
            out.append('error-stage2')
        return out
    if out == []:
        out.append('none-none')
    else:
        out = list(set(out))
    # out = [('滴答', '歌手', '陈思成'), ('兰花指', '歌手', '阿里郎'), ('滴答', '歌手', '张碧晨')]
    return out

2、实体识别prompt

1)任务要素定义:

df_nert = {
    'chinese': ['组织机构', '地点', '人物'],
    'english': ['PER', 'LOC', 'ORG', 'MISC'],
}

2)构造prompt的pattern:

ner_s1_p = {
    'chinese': '''给定的句子为:"{}"\n\n给定实体类型列表:{}\n\n在这个句子中,可能包含了哪些实体类型?\n如果不存在则回答:无\n按照元组形式回复,如 (实体类型1, 实体类型2, ……):''',
    'english': '''The given sentence is "{}"\n\nGiven a list of entity types: {}\n\nWhat entity types may be included in this sentence?\nIf not present, answer: none.\nRespond as a list, e.g. [entity type 1, entity type 2, ......]:'''
}

ner_s2_p = {
    'chinese': '''根据给定的句子,请识别出其中类型是"{}"的实体。\n如果不存在则回答:无\n按照表格形式回复,表格有两列且表头为(实体类型,实体名称):''',
    'english': '''According to the given sentence, please identify the entity whose type is "{}".\nIf not present, answer: none.\nRespond in the form of a table with two columns and a header of (entity type, entity name):'''
}

2、关系抽取prompt

1)任务要素定义:

df_ret = {
    'english': {
            'location-located_in': ['location', 'location'],
            'administrative_division-country': ['location', 'country'],
            'person-place_lived': ['person', 'location'],
            'person-company': ['person', 'organization'],
            'person-nationality': ['person', 'country'],
            'company-founders': ['organization', 'person'],
            'country-administrative_divisions': ['country', 'location'],
            'person-children': ['person', 'person'],
            'country-capital': ['country', 'city'],
            'deceased_person-place_of_death': ['person', 'location'],
            'neighborhood-neighborhood_of': ['location', 'location'],
            'person-place_of_birth': ['person', 'location'],
            },
    'chinese': {'所属专辑': ['歌曲', '音乐专辑'], '成立日期': ['机构', 'Date'], '海拔': ['地点', 'Number'], '官方语言': ['国家', '语言'], '占地面积': ['机构', 'Number'], '父亲': ['人物', '人物'], 
                '歌手': ['歌曲', '人物'], '制片人': ['影视作品', '人物'], '导演': ['影视作品', '人物'], '首都': ['国家', '城市'], '主演': ['影视作品', '人物'], '董事长': ['企业', '人物'], '祖籍': ['人物', '地点'], 
                '妻子': ['人物', '人物'], '母亲': ['人物', '人物'], '气候': ['行政区', '气候'], '面积': ['行政区', 'Number'], '主角': ['文学作品', '人物'], '邮政编码': ['行政区', 'Text'], '简称': ['机构', 'Text'], 
                '出品公司': ['影视作品', '企业'], '注册资本': ['企业', 'Number'], '编剧': ['影视作品', '人物'], '创始人': ['企业', '人物'], '毕业院校': ['人物', '学校'], '国籍': ['人物', '国家'], 
                '专业代码': ['学科专业', 'Text'], '朝代': ['历史人物', 'Text'], '作者': ['图书作品', '人物'], '作词': ['歌曲', '人物'], '所在城市': ['景点', '城市'], '嘉宾': ['电视综艺', '人物'], '总部地点': ['企业', '地点'], 
                '人口数量': ['行政区', 'Number'], '代言人': ['企业/品牌', '人物'], '改编自': ['影视作品', '作品'], '校长': ['学校', '人物'], '丈夫': ['人物', '人物'], '主持人': ['电视综艺', '人物'], '主题曲': ['影视作品', '歌曲'], 
                '修业年限': ['学科专业', 'Number'], '作曲': ['歌曲', '人物'], '号': ['历史人物', 'Text'], '上映时间': ['影视作品', 'Date'], '票房': ['影视作品', 'Number'], '饰演': ['娱乐人物', '人物'], '配音': ['娱乐人物', '人物'], '获奖': ['娱乐人物', '奖项']
                }
}

2)构造prompt的pattern:

re_s1_p = {
    'chinese': '''给定的句子为:"{}"\n\n给定关系列表:{}\n\n在这个句子中,可能包含了哪些关系?\n请给出关系列表中的关系。\n如果不存在则回答:无\n按照元组形式回复,如 (关系1, 关系2, ……):''',
    
    'english': '''The given sentence is "{}"\n\nList of given relations: {}\n\nWhat relations in the given list might be included in this given sentence?\nIf not present, answer: none.\nRespond as a tuple, e.g. (relation 1, relation 2, ......):''',
}

re_s2_p = {
    'chinese': '''根据给定的句子,两个实体的类型分别为({},{})且之间的关系为{},请找出这两个实体,如果有多组,则按组全部列出。\n如果不存在则回答:无\n按照表格形式回复,表格有两列且表头为({},{}):''',
    'english': '''According to the given sentence, the two entities are of type ('{}', '{}') and the relation between them is '{}', find the two entities and list them all by group if there are multiple groups.\nIf not present, answer: none.\nRespond in the form of a table with two columns and a header of ('{}', '{}'):''',
}`

3、事件抽取prompt

1)任务要素定义:

df_eet = {
    'chinese': {'灾害/意外-坠机': ['时间', '地点', '死亡人数', '受伤人数'], '司法行为-举报': ['时间', '举报发起方', '举报对象'], '财经/交易-涨价': ['时间', '涨价幅度', '涨价物', '涨价方'], '组织关系-解雇': ['时间', '解雇方', '被解雇人员'], '组织关系-停职': ['时间', '所属组织', '停职人员'], '财经/交易-加息': ['时间', '加息幅度', '加息机构'], '交往-探班': ['时间', '探班主体', '探班对象'], '人生-怀孕': ['时间', '怀孕者'], '组织关系-辞/离职': ['时间', '离职者', '原所属组织'], '组织关系-裁员': ['时间', '裁员方', '裁员人数'], '灾害/意外-车祸': ['时间', '地点', '死亡人数', '受伤人数'], 
                '人生-离婚': ['时间', '离婚双方'], '司法行为-起诉': ['时间', '被告', '原告'], '竞赛行为-禁赛': ['时间', '禁赛时长', '被禁赛人员', '禁赛机构'], '人生-婚礼': ['时间', '地点', '参礼人员', '结婚双方'], '财经/交易-涨停': ['时间', '涨停股票'], '财经/交易-上市': ['时间', '地点', '上市企业', '融资金额'], '组织关系-解散': ['时间', '解散方'], '财经/交易-跌停': ['时间', '跌停股票'], '财经/交易-降价': ['时间', '降价方', '降价物', '降价幅度'], '组织行为-罢工': ['时间', '所属组织', '罢工人数', '罢工人员'], '司法行为-开庭': ['时间', '开庭法院', '开庭案件'], 
                '竞赛行为-退役': ['时间', '退役者'], '人生-求婚': ['时间', '求婚者', '求婚对象'], '人生-庆生': ['时间', '生日方', '生日方年龄', '庆祝方'], '交往-会见': ['时间', '地点', '会见主体', '会见对象'], '竞赛行为-退赛': ['时间', '退赛赛事', '退赛方'], '交往-道歉': ['时间', '道歉对象', '道歉者'], '司法行为-入狱': ['时间', '入狱者', '刑期'], '组织关系-加盟': ['时间', '加盟者', '所加盟组织'], '人生-分手': ['时间', '分手双方'], '灾害/意外-袭击': ['时间', '地点', '袭击对象', '死亡人数', '袭击者', '受伤人数'], '灾害/意外-坍/垮塌': ['时间', '坍塌主体', '死亡人数', '受伤人数'], 
                '组织关系-解约': ['时间', '被解约方', '解约方'], '产品行为-下架': ['时间', '下架产品', '被下架方', '下架方'], '灾害/意外-起火': ['时间', '地点', '死亡人数', '受伤人数'], '灾害/意外-爆炸': ['时间', '地点', '死亡人数', '受伤人数'], '产品行为-上映': ['时间', '上映方', '上映影视'], '人生-订婚': ['时间', '订婚主体'], '组织关系-退出': ['时间', '退出方', '原所属组织'], '交往-点赞': ['时间', '点赞方', '点赞对象'], '产品行为-发布': ['时间', '发布产品', '发布方'], '人生-结婚': ['时间', '结婚双方'], '组织行为-闭幕': ['时间', '地点', '活动名称'], 
                '人生-死亡': ['时间', '地点', '死者年龄', '死者'], '竞赛行为-夺冠': ['时间', '冠军', '夺冠赛事'], '人生-失联': ['时间', '地点', '失联者'], '财经/交易-出售/收购': ['时间', '出售方', '交易物', '出售价格', '收购方'], '竞赛行为-晋级': ['时间', '晋级方', '晋级赛事'], '竞赛行为-胜负': ['时间', '败者', '胜者', '赛事名称'], '财经/交易-降息': ['时间', '降息幅度', '降息机构'], '组织行为-开幕': ['时间', '地点', '活动名称'], '司法行为-拘捕': ['时间', '拘捕者', '被拘捕者'], '交往-感谢': ['时间', '致谢人', '被感谢人'], '司法行为-约谈': ['时间', '约谈对象', '约谈发起方'], 
                '灾害/意外-地震': ['时间', '死亡人数', '震级', '震源深度', '震中', '受伤人数'], '人生-产子/女': ['时间', '产子者', '出生者'], '财经/交易-融资': ['时间', '跟投方', '领投方', '融资轮次', '融资金额', '融资方'], '司法行为-罚款': ['时间', '罚款对象', '执法机构', '罚款金额'], '人生-出轨': ['时间', '出轨方', '出轨对象'], '灾害/意外-洪灾': ['时间', '地点', '死亡人数', '受伤人数'], '组织行为-游行': ['时间', '地点', '游行组织', '游行人数'], '司法行为-立案': ['时间', '立案机构', '立案对象'], '产品行为-获奖': ['时间', '获奖人', '奖项', '颁奖机构'], '产品行为-召回': ['时间', '召回内容', '召回方']},
    'english': {'Justice:Appeal': ['Defendant', 'Adjudicator', 'Crime', 'Time', 'Place'], 'Justice:Extradite': ['Agent', 'Person', 'Destination', 'Origin', 'Crime', 'Time'], 'Justice:Acquit': ['Defendant', 'Adjudicator', 'Crime', 'Time', 'Place'], 'Life:Be-Born': ['Person', 'Time', 'Place'], 'Life:Divorce': ['Person', 'Time', 'Place'], 'Personnel:Nominate': ['Person', 'Agent', 'Position', 'Time', 'Place'], 'Life:Marry': ['Person', 'Time', 'Place'], 'Personnel:End-Position': ['Person', 'Entity', 'Position', 'Time', 'Place'], 
                'Justice:Pardon': ['Defendant', 'Prosecutor', 'Adjudicator', 'Crime', 'Time', 'Place'], 'Business:Merge-Org': ['Org', 'Time', 'Place'], 'Conflict:Attack': ['Attacker', 'Target', 'Instrument', 'Time', 'Place'], 'Justice:Charge-Indict': ['Defendant', 'Prosecutor', 'Adjudicator', 'Crime', 'Time', 'Place'], 'Personnel:Start-Position': ['Person', 'Entity', 'Position', 'Time', 'Place'], 'Business:Start-Org': ['Agent', 'Org', 'Time', 'Place'], 'Business:End-Org': ['Org', 'Time', 'Place'], 
                'Life:Injure': ['Agent', 'Victim', 'Instrument', 'Time', 'Place'], 'Justice:Fine': ['Entity', 'Adjudicator', 'Money', 'Crime', 'Time', 'Place'], 'Justice:Sentence': ['Defendant', 'Adjudicator', 'Crime', 'Sentence', 'Time', 'Place'], 'Transaction:Transfer-Money': ['Giver', 'Recipient', 'Beneficiary', 'Money', 'Time', 'Place'], 'Justice:Execute': ['Person', 'Agent', 'Crime', 'Time', 'Place'], 'Justice:Sue': ['Plaintiff', 'Defendant', 'Adjudicator', 'Crime', 'Time', 'Place'], 
                'Justice:Arrest-Jail': ['Person', 'Agent', 'Crime', 'Time', 'Place'], 'Justice:Trial-Hearing': ['Defendant', 'Prosecutor', 'Adjudicator', 'Crime', 'Time', 'Place'], 'Movement:Transport': ['Agent', 'Artifact', 'Vehicle', 'Price', 'Origin'], 'Contact:Meet': ['Entity', 'Time', 'Place'], 'Personnel:Elect': ['Person', 'Entity', 'Position', 'Time', 'Place'], 'Business:Declare-Bankruptcy': ['Org', 'Time', 'Place'], 'Transaction:Transfer-Ownership': ['Buyer', 'Seller', 'Beneficiary', 'Artifact', 'Price', 'Time', 'Place'], 
                'Justice:Release-Parole': ['Person', 'Entity', 'Crime', 'Time', 'Place'], 'Conflict:Demonstrate': ['Entity', 'Time', 'Place'], 'Contact:Phone-Write': ['Entity', 'Time'], 'Justice:Convict': ['Defendant', 'Adjudicator', 'Crime', 'Time', 'Place'], 'Life:Die': ['Agent', 'Victim', 'Instrument', 'Time', 'Place']},
}

2)构造prompt的pattern:

ee_s1_p = {
    'chinese': '''给定的句子为:"{}"\n\n给定事件类型列表:{}\n\n在这个句子中,可能包含了哪些事件类型?\n请给出事件类型列表中的事件类型。\n如果不存在则回答:无\n按照元组形式回复,如 (事件类型1, 事件类型2, ……):''',
    'english': '''The given sentence is "{}"\n\nGiven a list of event types: {}\n\nWhat event types in the given list might be included in this given sentence?\nIf not present, answer: none.\nRespond as a tuple, e.g. (event type 1, event type 2, ......):'''
}


ee_s2_p = {
    'chinese': '''事件类型"{}"对应的论元角色列表为:{}。\n在给定的句子中,根据论元角色提取出事件论元。\n如果论元角色没有相应的论元内容,则论元内容回答:无\n按照表格形式回复,表格有两列且表头为(论元角色,论元内容):''',
    'english': '''The list of argument roles corresponding to event type "{}" is: {}.\nIn the given sentence, extract event arguments according to their role.\nIf the argument role does not have a corresponding argument content, then the argument content answer: None\nRespond in the form of a table with two columns and a header of (argument role, argument content):'''
}

总结

本文主要介绍了PromptSource英文常用评测任务prompt生成工具包、ChatIE:面向RE\EE\NER三种任务的prompt生成。

对于具体的使用,大家可以参考参考文献链接进行进一步查看,并实践。

最后,感谢开源工作者的无私奉献。

参考文献

1、https://github.com/cocacola-lab/ChatIE
2、https://github.com/bigscience-workshop/promptsource

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

就职于360人工智能研究院、曾就职于中国科学院软件研究所。

求职/进NLP群—>加入NLP交流群

知识星球:NLP学术交流与求职群

持续发布自然语言处理NLP每日优质论文解读、相关一手资料、AI算法岗位等最新信息。

加入星球,你将获得:

1. 最新最优质的的论文速读。用几秒钟就可掌握论文大致内容,包含论文一句话总结、大致内容、研究方向以及pdf下载等。

2. 最新入门和进阶学习资料。包含机器学习、深度学习、NLP等领域。

3. 具体细分NLP方向包括不限于:情感分析、关系抽取、知识图谱、句法分析、语义分析、机器翻译、人机对话、文本生成、命名实体识别、指代消解、大语言模型、零样本学习、小样本学习、代码生成、多模态、知识蒸馏、模型压缩、AIGC、PyTorch、TensorFlow等细方向。

4. NLP、搜广推、CV等AI岗位招聘信息。可安排模拟面试。

ChatGPT+NLP下的Prompt模板工具:PromptSource、ChatIE代表性开源项目介绍_第4张图片

你可能感兴趣的:(chatgpt,自然语言处理,人工智能)