说明

我们在使用AllenNLP的时候,当使用自定义predictor的时候,默认的是输入json,我们可以修改为输入以行为单位的文本格式;

另外默认的输出是json,我们也可以自定义修改为文本,特别是在json.dumps的时候中文会默认是ASCII码,我们自定义的时候可以设置为False来输出中文字符;

另外默认的输出只有label,没有input_text作为参考,我们可以在outputs中新增,来方便地查看预测输出:

from copy import deepcopy
from typing import List, Dictfrom overrides import overrides
import numpy
import json
from allennlp.common.util import JsonDict, sanitizefrom allennlp.common.util import JsonDict
from allennlp.data import Instance
from allennlp.predictors.predictor import Predictor
from allennlp.data.fields import LabelField
from allennlp.data.tokenizers import CharacterTokenizer@Predictor.register("cnews_text_classifier")
class TextClassifierPredictor(Predictor):"""Predictor for any model that takes in a sentence and returnsa single class for it.  In particular, it can be used withthe [`BasicClassifier`](../models/basic_classifier.md) model.Registered as a `Predictor` with name "text_classifier"."""def __init__(self, model, dataset_reader):super(TextClassifierPredictor, self).__init__(model, dataset_reader)self.input_text = ""def predict(self, sentence: str) -> JsonDict:return self.predict_json({"sentence": sentence})@overridesdef load_line(self, line: str) -> JsonDict:"""如果你不想输入为json格式,可以可以@overrides这个函数"""return {"text": line}@overridesdef dump_line(self, outputs: JsonDict) -> str:"""如果你不想输出json格式,可以@overrides这个函数"""return json.dumps(outputs, ensure_ascii=False) + "\n"@overridesdef predict_instance(self, instance: Instance) -> JsonDict:outputs = self._model.forward_on_instance(instance)outputs["input_text"] = self.input_textreturn sanitize(outputs)@overridesdef _json_to_instance(self, json_dict: JsonDict) -> Instance:"""Expects JSON that looks like `{"sentence": "..."}`.Runs the underlying model, and adds the `"label"` to the output."""sentence = json_dict["text"]self.input_text = json_dict["text"]return self._dataset_reader.text_to_instance(sentence)@overridesdef predictions_to_labeled_instances(self, instance: Instance, outputs: Dict[str, numpy.ndarray]) -> List[Instance]:new_instance = deepcopy(instance)label = numpy.argmax(outputs["probs"])new_instance.add_field("label", LabelField(int(label), skip_indexing=True))return [new_instance]

【AllenNLP】: 自定义predictor—输入文本输出中文相关推荐

  1. python2.7输出语句,输入和输出 - 廖雪峰 Python 2.7 中文教程

    输出 用print加上字符串,就可以向屏幕上输出指定的文字.比如输出'hello, world',用代码实现如下: >>> print 'hello, world' print语句也 ...

  2. 用正则验证用户输入文本框的内容是否是中文汉字

    正则表达式:验证用户输入的是否是中文汉字:[\u4e00-\u9fa5]$   : 在网上也找了一些,可是多多少少都有些错,这个必须得自己动手尝试, 下面就是我做的例子: 1.首先,在前台添加一个Te ...

  3. 【Matlab】如何自定义无输入和无输出的函数?

    1.Introduction 话说,使用Matlab差不多一年了,也在博客分享了一些Matlab使用小技巧.然而,一年了,我从来没自定义过函数.代码都是顺序往下写,你知道我这一年是怎么过的吗!终于,在 ...

  4. Firefox/Chrome下flash的wmode参数设为opaque或transparent时输入文本框中无法输入中文汉字的解决方法

    一.前言 这段时间做个项目,要涉及到flash开发.真悲催,之前没有接触过flash开发,于是找个哥们临时教了一下Adobe Flash CS5 的使用方法,感觉还蛮简单,所见即所得,和MFC下的开发 ...

  5. Firefox/Chrome下flash的wmode参数设为opaque或transparent时输入文本框中无法输入中文汉字的解决方法...

    这段时间做个项目,要涉及到flash开发.真悲催,之前没有接触过flash开发,于是找个哥们临时教了一下Adobe Flash CS5 的使用方法,感觉还蛮简单,所见即所得,和MFC下的开发有点像,渐 ...

  6. (百分百解决)Vscode输入中文输出中文乱码/空白,或者直接输出中文乱码/空白

    首先,我踩了很多坑-,额,不讲故事了,直接讲方法↓ Vscode默认scanf("%s",&x)输入中文,然后printf("%s",x)是可以输出中文 ...

  7. python3中文手册-Python 输入和输出

    Python 输入和输出 在前面几个章节中,我们其实已经接触了 Python 的输入输出的功能.本章节我们将具体介绍 Python 的输入输出. 输出格式美化 Python两种输出值的方式: 表达式语 ...

  8. 如何使用python输入、输出文本?

    00:目录 01:概念 02:准备 03:输入与输出 03.01:输出 03.02:输入 03.02.01:基本 03.02.02:转换 04:尾声 01:概念 在程序中,一共有三个流程:输入.整理与 ...

  9. python给用户输出提示_python3.4控制用户输入与输出的方法

    一.输入 1.函数格式:input() 2.函数功能:接受一个标准输入数据,返回string类型.ctrl+z结束输入. 3.实例: 默认input():等待一个任意字符的输入 str=input(' ...

  10. 理解卷积神经网络中的输入与输出形状 | 视觉入门

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 译者|VK 来源|Towards Data Science 即使我 ...

最新文章

  1. NuGet 无法连接到远程服务器-解决方法
  2. 构建eureka高可用服务
  3. Java EE6事件:JMS的轻量级替代品
  4. 二、VC++环境的安装
  5. pd怎么卸载linux系统,parallels desktop11怎么卸载?parallels desktop11卸载方法
  6. java硬件编程_关于JAVA并发编程你需要知道的——硬件篇
  7. IE浏览器网页无法缩放怎么办 解决IE浏览器网页无法缩放的方法
  8. 使用nodejs爬前程无忧前端技能排行(半半成品)
  9. db2 导入数据_IBM BigInsights大数据迁移
  10. git-osc自己定义控件之:CircleImageView
  11. 文件服务器自动化管理
  12. ffmpeg aac解码pcm
  13. mac rz sz的使用
  14. 美赛数学建模O奖论文下载
  15. JAVASE篇的入门经典书籍推荐
  16. 利用ARP的攻击与欺骗实现网络监控和管理(长角牛监控机)
  17. 图像语义分割实践(三)模型搭建与实现
  18. 阿里研究院花几年心得终成趣谈网络协议,附技术官讲解
  19. 【Pyecharts】20W条淘宝文胸商品评论数据可视化~
  20. java中遍历HashMap的方法

热门文章

  1. 【数学模型】银行贷款计算系统含Matlab源码
  2. java获取微信用户信息(UnionID)
  3. 计算机网络期末4小时速成
  4. 解决Navicat 15注册机出现 rsa public key not found
  5. 2018年华北五省计算机应用大赛参赛作品--战拖儿app
  6. Scratch之猫和老鼠
  7. 单总线led驱动芯片WS2811在linux下的驱动
  8. macOS Monterey 12.0 Beta5 (21A5304g) 虚拟机 ISO 镜像
  9. Windows 7 系统的旧版IE浏览器升级到IE11
  10. linux(Ubuntu)下Navicat的激活与无限试用