Neural Architectures for Named Entity Recognition Note

Paper: 1603.01360.pdf

code:

核心思想:pretrained + character-based 词表示分别学习形态和拼写,Bi-LSTM + CRF 和基于转移的模型均可以对输出标签的依赖关系建模。

看了 Related Work 后发现很多想法其实早就冒出来了,不同的论文在不同点上使用了不同的方法,本篇恰好用这样的方法取得了最好的效果。其实,我觉得更加有意思的是基于转移的模型,它构建了一个 action 的时间序列,感觉更加抽象,想法更加精妙。

More

剑指 Offer2(Python 版)解析(上)

总览

具体实现和测试代码

系列解析(TBD):

  • Python 单例模式
  • 好玩儿的 DP
  • 递归还是递归
  • 双指针的威力
  • 双列表的威力
  • 有趣的排列组合

特别说明:下文中的实例代码一般仅包括核心算法(不一定能直接运行),完整的代码可以参考对应的链接。

More

Few-Shot Charge Prediction with Discriminative Legal Attributes Note

Paper: coling2018_attribute.pdf

code: thunlp/attribute_charge

核心思想:基于类别属性的注意力机制共同学习属性感知和无属性的文本表示。

这是 COLING2018 上的一篇老论文了,最近因为一些事情正好遇上,当时大概看了一下就发现这篇文章正好解决了我之前在做多分类任务时没有解决的问题。所以拿来记录一下,顺便研究下代码。

More

关系提取简述

之前整理过一篇关于信息提取的笔记,也是基于大名鼎鼎的 SLP 第 18 章的内容,最近在做一个 chatbot 的 NLMLayer 时涉及到了不少知识图谱有关的技术,由于 NLMLayer 默认的输入是 NLU 的 output,所以实体识别(包括实体和类别)已经自动完成了。接下来最重要的就是实体属性和关系提取了,所以这里就针对这块内容做一个整理。

属性一般的形式是(实体,属性,属性值),关系的一般形式是(实体,关系,实体)。简单来区分的话,关系涉及到两个实体,而属性只有一个实体。属性提取的文章比较少,关系提取方面倒是比较成熟,不过这两者之间其实可以借鉴的。具体的一些方法其实这里已经提到不少了,这里单独提出来再梳理一遍。

More

AINLP GPU 使用体验指南

AINLP-DBC GPU 是一个 GPU 算力服务平台,采用 DBC TOKEN 进行结算。在这里可以租用 GPU,也可以将自己的 GPU 出租出去。

注册

第一步:创建钱包

这里需要输入密码,之后会产生一个加密后的私钥文件,下载继续后会产生你真正的私钥。一定要记住你的密码并在物理介质上保存好加密后的私钥文件以及你的私钥。只有通过密码+加密的私钥文件,或者私钥才能打开你的钱包,如果都丢了,就等于你的钱包没了。

第二步:充值 DBC

点击 “如何购买 DBC” 链接,选择自己喜欢的方式充值即可,推荐使用支付宝,点击 “继续” 后,充值一定金额(比如 1块或者 0.1 块)就好了。这步其实就是给你的钱包地址充值一定数额的 DBC。大概等个几十秒就能在 “我的钱包” 里看到你购买金额对应的 DBC 数量了。

第三步:绑定邮箱

点击 “绑定邮箱” 后,输入邮箱地址,会给你发送一个类似 请输入如下数量dbc:0.7311,验证有效期为30分钟 内容的邮件,将对应的额度(比如这里的 0.7311)输入 “验证的 DBC 数量” 框即可完成绑定。

第四步:选择机器

在列表中选择一台符合自己要求的机器,点击 “租用” 后,填写租用时长(最短 1 小时),等待大约 1 分钟左右(验证机器环境),确认支付后就可以正式使用了。

More

自然语言记忆模块(NLM)

本文主要介绍自然语言的记忆(存储与查询)模块,初衷是作为 chatbot 的 Layer 之一,主要功能是记忆(存储)从对话或训练数据学到的 “知识”,然后在需要时唤起(查询) 。目前成熟的方法是以图数据库作为载体,将知识存储为一系列的 ”节点“ 和 ”关系“。之后再基于这些存储的 ”节点“ 和 ”关系“ 进行相关查询。也可以理解为构建 Data Model 的问题。

项目地址:https://github.com/hscspring/NLM

设计思想

图数据库的典型代表是 Neo4j,Neo4j 中有几个很重要的概念:标签、节点和关系。标签是一类节点,可以看作是节点的类别,节点一般是某一个实体;关系存在于两个实体间,可以有多种不同的关系。节点和关系可以有多个属性。实践来看,Python 语言可以使用社区的 technige/py2neo,当然还可以使用官方的 neo4j/neo4j-python-driver: Neo4j Bolt driver for Python,两者的目的都是将数据 import 进 database 并进行相应的查询。

Neo4j 的特点要求导入的数据尽量是结构化的,也就是我们要事先有实体和它的类别(实体的属性可有可无),实体与实体间的关系(关系的属性可有可无)。我们期待能从对话或无监督的语料中自动提取实体和关系,然后自动 import 进 Neo4j。为了避免导入数据的混乱,自然最好能有先验的 “类别”,比如节点类别 Person,Movie 等,关系类别 LOVES,ACTS 等。所以,对于文本输入,我们需要一个信息提取器,将文本中的符合先验类别的节点和关系提取出来。如果输入是 NLU 模块输出的 ”意图和实体“ ,则需要一个分类器,将意图分类到对应的 Relation 类别,将实体分类到 Node 类别。

More

Python 小白快速从入门到放弃:使用框架

随着学习的不断深入,我们肯定会越来越不满足只在 Jupyter Notebook 中写一些小任务。我们可能会希望做一个 Web 应用,或者一个小程序,甚至是一个 APP。对于这种系统性的工程项目,框架就必不可少了,它可以极大地提高我们的效率。这节课我们就以 Python 的 Django 框架为例来开发一个小的 Web 应用程序。

More