中文实体命名识别工具使用汇总:Stanza、LAC、Ltp、Hanlp、foolnltk、NLTK、BosonNLP

实体命名识别

    • 相关知识
    • Stanford CoreNLP 命名实体识别
      • 一、简介:
      • 二、java版本使用
      • 三、python版本使用
    • NLTK 命名实体识别
      • 一、简介:
      • 二、搭建环境
      • 三、nltk使用
        • 1、英文实体命名初体验
        • 2、使用nltk来处理中文资料
          • 结巴分词使用
    • foolnltk 命名实体识别
      • 一、简介
      • 二、python版本使用
    • Ltp 实体命名识别
      • 一、简介
      • 二、使用
    • LAC 实体命名
      • 一、简介
      • 二、python版本使用
    • BosonNLP 实体识别
      • 一、简介
      • 二、python版本使用
    • Hanlp 实体识别
      • 一、简介
      • 二、python版本使用

相关知识

信息抽取:从数据库中抽取信息是容易的,但对于从自然文本中抽取信息则不那么直观。通常信息抽取的流程如下图:

img
分块是实体识别(NER)使用的基本技术,词性标注是分块所需的最主要信息。下面以名词短语(NP)为例,展示如何分块。类似的还可以对动词短语,介词短语等进行分块。
分块示意图

命名实体识别(Named Entity Recognition,简称NER)用于识别文本中具有特定意义的实体。需要识别的实体可以分为三大类(实体类、时间类和数字类)和七小类(人名、机构名、地名、时间、日期、货币和百分比)。

中文命名实体识别工具(NER)哪家强?

介绍几个专门面向中文的命名实体识别和关系抽取工具

Stanford CoreNLP 命名实体识别

一、简介:

CoreNLP是Java自然语言处理的一站式服务!CoreNLP使用户能够导出文本的语言注释,包括标记和句子边界、词性、命名实体、数值和时间值、依赖和选区解析、共指、情感、引用属性和关系。CoreNLP的核心是管道。管道接收原始文本,对文本运行一系列NLP注释器,并生成最终的注释集。管道产生核心文档,包含所有注释信息的数据对象,可以通过简单的API访问,并且可以序列化到Google协议缓冲区。

中文语料模型包中有一个默认的配置文件

StanfordCoreNLP-chinese.properties 

指定pipeline的操作步骤以及对应的语料文件的位置,可以自定义配置文件,再引入代码中。实际上我们可能用不到所有的步骤,或者要使用不同的语料库,因此可以自定义配置文件,然后再引入。那在我的项目中,我就直接读取了该properties文件。(有时候我们只想使用ner功能,但不想使用其他功能,想去掉。然而,Stanford CoreNLP有一些局限,就是在ner执行之前,一定需要tokenize, ssplit, pos, lemma 的引入,大大增加了耗时。)

更多用法参见官网。

二、java版本使用

idea+maven搭建工程

1、在pom.xml 添加依赖:

<properties><corenlp.version>3.9.1</corenlp.version>
</properties><dependencies><!--CoreNLP的算法包--><dependency><groupId>edu.stanford.nlp</groupId><artifactId>stanford-corenlp</artifactId><version>${corenlp.version}</version></dependency><!--英文语料包--><dependency><groupId>edu.stanford.nlp</groupId><artifactId>stanford-corenlp</artifactId><version>3.9.1</version><classifier>models</classifier></dependency><!--中文预料包--><dependency><groupId>edu.stanford.nlp</groupId><artifactId>stanford-corenlp</artifactId><version>${corenlp.version}</version><classifier>models-chinese</classifier></dependency>
</dependencies>

2、编写java程序

package com;import java.util.List;
import java.util.Map;
import java.util.Properties;import edu.stanford.nlp.coref.CorefCoreAnnotations;
import edu.stanford.nlp.coref.data.CorefChain;
import edu.stanford.nlp.ling.CoreAnnotations;
import edu.stanford.nlp.ling.CoreLabel;
import edu.stanford.nlp.pipeline.Annotation;
import edu.stanford.nlp.pipeline.StanfordCoreNLP;
import edu.stanford.nlp.semgraph.SemanticGraph;
import edu.stanford.nlp.semgraph.SemanticGraphCoreAnnotations;
import edu.stanford.nlp.trees.Tree;
import edu.stanford.nlp.trees.TreeCoreAnnotations;
import edu.stanford.nlp.util.CoreMap;
/**代码思想:将text字符串交给Stanford CoreNLP处理,StanfordCoreNLP的各个组件(annotator)按“tokenize(分词), ssplit(断句), pos(词性标注), lemma(词元化), ner(命名实体识别), parse(语法分析), dcoref(同义词分辨)”顺序进行处理。处理完后 List<CoreMap> sentences = document.get(SentencesAnnotation.class); 中包含了所有分析结果,遍历即可获知结果。**/public class StanfordChineseNlpExample2 {public static void main(String[] args) throws  Exception {StanfordChineseNlpExample2 nlp=new StanfordChineseNlpExample2();nlp.test();}public void test() throws Exception {//构造一个StanfordCoreNLP对象,配置NLP的功能,如lemma是词干化,ner是命名实体识别等StanfordCoreNLP pipeline = new StanfordCoreNLP("StanfordCoreNLP-chinese.properties");String text = "袁隆平是中国科学院的院士,他于2009年10月到中国山东省东营市东营区永乐机场附近承包了一千亩盐碱地,";long startTime = System.currentTimeMillis();// 创造一个空的Annotation对象Annotation document = new Annotation(text);// 对文本进行分析pipeline.annotate(document);//获取文本处理结果List<CoreMap> sentences = document.get(CoreAnnotations.SentencesAnnotation.class);for (CoreMap sentence : sentences) {// traversing the words in the current sentence// a CoreLabel is a CoreMap with additional token-specific methodsfor (CoreLabel token : sentence.get(CoreAnnotations.TokensAnnotation.class)) {// 获取句子的token(可以是作为分词后的词语)String word = token.get(CoreAnnotations.TextAnnotation.class);System.out.println(word);//词性标注String pos = token.get(CoreAnnotations.PartOfSpeechAnnotation.class);System.out.println(pos);// 命名实体识别String ne = token.get(CoreAnnotations.NormalizedNamedEntityTagAnnotation.class);String ner = token.get(CoreAnnotations.NamedEntityTagAnnotation.class);System.out.println(word + " | analysis : {  original : " + ner + "," + " normalized : "+ ne + "}");//词干化处理String lema = token.get(CoreAnnotations.LemmaAnnotation.class);System.out.println(lema);}// 句子的解析树Tree tree = sentence.get(TreeCoreAnnotations.TreeAnnotation.class);System.out.println("句子的解析树:");tree.pennPrint();// 句子的依赖图SemanticGraph graph =sentence.get(SemanticGraphCoreAnnotations.CollapsedCCProcessedDependenciesAnnotation.class);System.out.println("句子的依赖图");System.out.println(graph.toString(SemanticGraph.OutputFormat.LIST));}long endTime = System.currentTimeMillis();long time = endTime - startTime;System.out.println("The analysis lasts " + time + " seconds * 1000");// 指代词链// 每条链保存指代的集合// 句子和偏移量都从1开始Map<Integer, CorefChain> corefChains = document.get(CorefCoreAnnotations.CorefChainAnnotation.class);if (corefChains == null) {return;}for (Map.Entry<Integer, CorefChain> entry : corefChains.entrySet()) {System.out.println("Chain " + entry.getKey() + " ");for (CorefChain.CorefMention m : entry.getValue().getMentionsInTextualOrder()) {// We need to subtract one since the indices count from 1 but the Lists start from 0List<CoreLabel> tokens = sentences.get(m.sentNum - 1).get(CoreAnnotations.TokensAnnotation.class);// We subtract two for end: one for 0-based indexing, and one because we want last token of mention// not one following.System.out.println("  " + m + ", i.e., 0-based character offsets [" + tokens.get(m.startIndex - 1).beginPosition()+", " + tokens.get(m.endIndex - 2).endPosition() + ")");}}}
}

实体识别结果:

袁隆平 | analysis : {  original : PERSON, normalized : null}| analysis : {  original : O, normalized : null}
中国 | analysis : {  original : ORGANIZATION, normalized : null}
科学院 | analysis : {  original : ORGANIZATION, normalized : null}| analysis : {  original : O, normalized : null}
院士 | analysis : {  original : TITLE, normalized : null}
, | analysis : {  original : O, normalized : null}| analysis : {  original : O, normalized : null}| analysis : {  original : O, normalized : null}
2009年 | analysis : {  original : DATE, normalized : 2009-10-XX}
10月 | analysis : {  original : DATE, normalized : 2009-10-XX}| analysis : {  original : O, normalized : null}
中国 | analysis : {  original : COUNTRY, normalized : null}
山东省 | analysis : {  original : STATE_OR_PROVINCE, normalized : null}
东营市 | analysis : {  original : CITY, normalized : null}
东营区 | analysis : {  original : FACILITY, normalized : null}
永乐 | analysis : {  original : FACILITY, normalized : null}
机场 | analysis : {  original : FACILITY, normalized : null}
附近 | analysis : {  original : O, normalized : null}
承包 | analysis : {  original : O, normalized : null}| analysis : {  original : O, normalized : null}
一千 | analysis : {  original : NUMBER, normalized : 1000}| analysis : {  original : O, normalized : null}| analysis : {  original : O, normalized : null}
碱地 | analysis : {  original : O, normalized : null}
, | analysis : {  original : O, normalized : null}
The analysis lasts 989 seconds * 1000

大概可以识别到的类型有:人person、数字number、组织organization、头衔title、省/市/区/位置province/city/facility/location、日期/时间date/time

实时在线演示:https://corenlp.run/

三、python版本使用

  1. 安装斯坦福大学NLP组的Stanza 。(要求:Python3.6及以上的版本)
pip install stanza 
  1. 下载中文模型打包文件
import stanza
stanza.download('zh')

出现问题:[WinError 10054] 远程主机强迫关闭了一个现有的连接
解决方法:用梯子

  1. 使用
# coding utf-8
import stanza# 可以通过pipeline预加载不同语言的模型,也可以通过pipeline选择不同的处理模块,还可以选择是否使用GPU:
zh_nlp = stanza.Pipeline('zh', use_gpu=False)
text = "马云在1998年7月31日出生于江苏省盐城市大丰区。"doc = zh_nlp(text)
for sent in doc.sentences:print("Sentence:" + sent.text)  # 断句print("Tokenize:" + ' '.join(token.text for token in sent.tokens))  # 中文分词print("UPOS: " + ' '.join(f'{word.text}/{word.upos}' for word in sent.words))  # 词性标注(UPOS)print("XPOS: " + ' '.join(f'{word.text}/{word.xpos}' for word in sent.words))  # 词性标注(XPOS)print("NER: " + ' '.join(f'{ent.text}/{ent.type}' for ent in sent.ents))  # 命名实体识别
Sentence:马云在1998年7月31日出生于江苏省盐城市大丰区。
Tokenize:马云 在 1998 年 7 月 31 日 出生 于 江苏 省 盐城 市 大丰 区 。
UPOS: 马云/PROPN 在/ADP 1998/NUM 年/NOUN 7/NUM 月/NOUN 31/NUM 日/NOUN 出生/VERB 于/ADP 江苏/PROPN 省/PART 盐城/PROPN 市/PART 大丰/PROPN 区/PART 。/PUNCT
XPOS: 马云/NNP 在/IN 1998/CD 年/NNB 7/CD 月/NNB 31/CD 日/NNB 出生/VV 于/IN 江苏/NNP 省/SFN 盐城/NNP 市/SFN 大丰/NNP 区/SFN 。/.
NER: 马云/PERSON 1998年7月31日/DATE 江苏/GPE 盐城/GPE 大丰/GPE

更多详细信息见:斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

NLTK 命名实体识别

一、简介:

NLTK对于自然语言处理有很多开箱即用的API,本文主要介绍如何使用NLTK进行中文命名实体识别。由于NLTK不支持中文分词,所以本文使用了结巴分词。

二、搭建环境

环境:windows64+python3

前提:安装好python3,并且安装了numpy、matplotlib、pandas等一些常用的库

1、安装PyYAML模块和nltk模块

 pip install pyyaml nltk

2、下载NLTK的数据包

方式一:界面下载

在pycharm中写一个python脚本,如下:

import nltk
nltk.download()

运行脚本,出现如下界面,选择all,设置下载路径,点击下载:
在这里插入图片描述
下载时间很长,如果有个别数据包无法下载,可切换到All Packages标签页,双击指定的包来进行下载。
在这里插入图片描述

方式二:命令行下载

创建名称为 nltk_data 的文件夹(比如我创建在了anacondas的目录下)
在这里插入图片描述
文件夹位置要求,程序会按照如下顺序去找该文件夹,所以,你创建的文件夹在以下目录即可:

Searched in:

  • ‘C:\Users\10840/nltk_data’
    • ‘D:\develop\python\Anaconda3\nltk_data’
      • ‘D:\develop\python\Anaconda3\share\nltk_data’
      • ‘D:\develop\python\Anaconda3\lib\nltk_data’
      • ‘C:\Users\10840\AppData\Roaming\nltk_data’
      • ‘C:\nltk_data’
      • ‘D:\nltk_data’
      • ‘E:\nltk_data’
      • ’ ’

cmd 进入 nltk_data 文件夹目录,执行命令 python -m nltk.downloader all
在这里插入图片描述
关于下载的问题:[win error 10054] 远程主机强迫关闭了一个现有的连接

解决方法:1.使用梯子 2.从国内别人上传的云盘下载(文末链接中有)3. 直接到官网下载数据包。

只要将下载的数据包复制到你的 Download Directory目录下即可

三、nltk使用

用NLTK来实现文本信息提取的方法,包含4步:分词,词性标注,(分块)命名实体识别,实体关系识别。

分块可以简单的基于经验,使用正则表达式来匹配,也可以使用基于统计的分类算法来实现,NLTK有提供基于正则的分块器。

nltk 不提供中文分词。

1、英文实体命名初体验

import sys
import importlib
importlib.reload(sys)
import nltkarticle = "I came to Tsinghua University in Beijing"  # 文章
tokens = nltk.word_tokenize(article)  # 分词
print("tokens",tokens)
'''
tokens ['I', 'came', 'to', 'Tsinghua', 'University', 'in', 'Beijing']
'''tagged = nltk.pos_tag(tokens)  # 词性标注
print("tagged",tagged)
'''
tagged [('I', 'PRP'), ('came', 'VBD'), ('to', 'TO'), ('Tsinghua', 'NNP'), ('University', 'NNP'), ('in', 'IN'), ('Beijing', 'NNP')]
'''entities = nltk.chunk.ne_chunk(tagged)  # 命名实体识别
print(entities)
# 命名实体:确切的名词短语,指特定类型的个体,如日期、人、组织等
'''
(SI/PRPcame/VBDto/TO(ORGANIZATION Tsinghua/NNP University/NNP)in/IN(GPE Beijing/NNP))
'''    

NLTK 采用的是宾州中文树库标记:

2、使用nltk来处理中文资料

nltk 目前只能比较好的处理英文和其他的一些拉丁语系。由于中文汉字一个挨一个,nltk不支持。

所以可以采用其他分词工具对中文语料进行处理,再使用nltk对其进行实体识别。

分词工具有很多,这里使用 结巴分词。主页有详细介绍

结巴分词使用

1、安装

pip install jieba

2、使用:中文分词初体验

# encoding=utf-8
import jiebajieba.enable_paddle()  # 启动paddle模式。
strs=["我来到北京清华大学","乒乓球拍卖完了","中国科学技术大学"]
for str in strs:seg_list = jieba.cut(str,use_paddle=True) # 使用paddle模式print("Paddle Mode: " + '/'.join(list(seg_list)))seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("【全模式】: " + "/ ".join(seg_list))seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("【精确模式】: " + "/ ".join(seg_list))seg_list = jieba.cut("他来到了网易杭研大厦")
print("【新词识别】: "+", ".join(seg_list))seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")
print("【搜索引擎模式】: "+", ".join(seg_list))'''
Paddle Mode: 我/来到/北京清华大学
Paddle Mode: 乒乓球/拍卖/完/了
Paddle Mode: 中国科学技术大学【全模式】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
【精确模式】: 我/ 来到/ 北京/ 清华大学
【新词识别】: 他, 来到, 了, 网易, 杭研, 大厦
【搜索引擎模式】: 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, ,, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造
'''

这样,把分词的结果输出到文件中,NLTK就可以拿来做实体识别了,比如下面:

# encoding=utf-8
import sys
import importlib
importlib.reload(sys)
import nltk# 上中文
tokens = nltk.word_tokenize("我 来到 北京 清华大学")  # 分词
print("tokens",tokens)
tagged = nltk.pos_tag(tokens)  # 词性标注
print("tagged",tagged)
entities = nltk.chunk.ne_chunk(tagged)  # 命名实体识别
print(entities)'''
tokens ['我', '来到', '北京', '清华大学']
tagged [('我', 'JJ'), ('来到', 'NNP'), ('北京', 'NNP'), ('清华大学', 'NN')]
(S 我/JJ 来到/NNP 北京/NNP 清华大学/NN)
'''

参考资料:
python的nltk中文使用和学习资料汇总帮你入门提高
NLTK学习之四:文本信息抽取

foolnltk 命名实体识别

一、简介

foolnltk一个基于深度学习的中文分词工具,具有以下特点:

  • 可能不是最快的开源中文分词,但很可能是最准的开源中文分词
  • 基于 BiLSTM 模型训练而成
  • 包含分词,词性标注,实体识别, 都有比较高的准确率
  • 用户自定义词典
  • 可以定制自己的模型

有python版本和java版本,详情请见

二、python版本使用

1、 安装

pip install foolnltk

2、 使用

#coding utf-8
import fool
import os# 分词
text = "我来到北京清华大学"
print(fool.cut(text))
'''
[['我', '来到', '北京', '清华大学']]
'''# 用户自定义词典
# 词典格式格式如下,词的权重越高,词的长度越长就越越可能出现, 权重值请大于 1
# 难受香菇 10
# 什么鬼 10
# 分词工具 10
# 北京 10
# 北京天安门 10
fool.load_userdict(os.getcwd()+'\\mydictionary')# 词性标注
print(fool.pos_cut(text))
'''
[[('我', 'r'), ('来到', 'v'), ('北京', 'ns'), ('清华大学', 'nt')]]
'''# 实体识别
words, ners = fool.analysis(text)
print(ners)
'''
[[(3, 9, 'org', '北京清华大学')]]
'''

Ltp 实体命名识别

一、简介

哈工大的LTP,免费使用但限流量,需要给钱才行

LTP4文档,啊!其实官方文档里面已经写的清清楚楚了!

这个也能支持用户自定义词典

二、使用

1、安装

pip install ltp

2、使用

import os
from ltp import LTPltp = LTP()  # 默认加载 Small 模型
# user_dict.txt 是词典文件, max_window是最大前向分词窗口
ltp.init_dict(path=os.getcwd()+'\\mydictionary', max_window=4)seg, hidden = ltp.seg(["马云在1996年11月29日来到杭州的阿里巴巴公司。"])  # 分词
print(seg)
'''
[['马云', '在', '1996年', '11月', '29日', '来到', '杭州', '的', '阿里巴巴', '公司', '。']]
'''pos = ltp.pos(hidden)  # 词性标注
print(pos)
'''
[['nh', 'p', 'nt', 'nt', 'nt', 'v', 'ns', 'u', 'nz', 'n', 'wp']]
'''ner = ltp.ner(hidden)  # 命名实体识别
tag, start, end = ner[0][0]
print(ner)
for tag, start, end in ner[0]:print(tag, ":", "".join(seg[0][start:end + 1]))
'''
[[('Nh', 0, 0), ('Ns', 6, 6), ('Ni', 8, 9)]]
Nh : 马云
Ns : 杭州
Ni : 阿里巴巴公司
'''

LTP 提供最基本的三种实体类型人名 Nh地名 Ns机构名 Ni 的识别。

LAC 实体命名

LAC项目地址

一、简介

LAC全称Lexical Analysis of Chinese,是百度自然语言处理部研发的一款联合的词法分析工具,实现中文分词、词性标注、专名识别等功能。该工具具有以下特点与优势:

  • 效果好:通过深度学习模型联合学习分词、词性标注、专名识别任务,词语重要性,整体效果F1值超过0.91,词性标注F1值超过0.94,专名识别F1值超过0.85,效果业内领先。
  • 效率高:精简模型参数,结合Paddle预测库的性能优化,CPU单线程性能达800QPS,效率业内领先。
  • 可定制:实现简单可控的干预机制,精准匹配用户词典对模型进行干预。词典支持长片段形式,使得干预更为精准。
  • 调用便捷支持一键安装,同时提供了Python、Java和C++调用接口与调用示例,实现快速调用和集成。
  • 支持移动端: 定制超轻量级模型,体积仅为2M,主流千元手机单线程性能达200QPS,满足大多数移动端应用的需求,同等体积量级效果业内领先。

二、python版本使用

1、安装

pip install lac

2、使用

from LAC import LAC# 装载LAC模型
lac = LAC(mode='lac')# 单个样本输入,输入为Unicode编码的字符串
text = u"马云来到北京清华大学"
lac_result = lac.run(text)
print(lac_result)
'''
[['马云', '来到', '北京清华', '大学'], ['PER', 'v', 'ORG', 'n']]
'''# 批量样本输入, 输入为多个句子组成的list,平均速率更快
texts = [u"LAC是个优秀的分词工具", u"百度是一家高科技公司"]
lac_result = lac.run(texts)
print(lac_result)
'''
[[['LAC', '是', '个', '优秀', '的', '分词', '工具'], ['nz', 'v', 'q', 'a', 'u', 'n', 'n']],[['百度', '是', '一家', '高科技', '公司'], ['ORG', 'v', 'm', 'n', 'n']]]
'''

在这里插入图片描述

控制台输出以上内容,这个是初始化异常日志,不碍事,不喜欢的可以通过升级 paddlepaddle 版本到1.8以上 来关闭

pip install paddlepaddle==1.8

词性和专业名词类别:(专业名词只能识别4种:人物、地名、机构名、时间)
在这里插入图片描述

BosonNLP 实体识别

这个现在官方不给 SDK 的 tooken 了,所以不能用了,但是在线演示平台挺绚丽的。

bosonnlp的SDK文档

一、简介

BosonNLP实体识别引擎基于自主研发的结构化信息抽取算法,F1分数达到81%,相比于StanfordNER高出7个百分点。通过对行业语料的进一步学习,可以达到更高的准确率。

二、python版本使用

1、安装

pip install bosonnlp

2、使用

from bosonnlp import BosonNLP
import os
nlp = BosonNLP(os.environ['BOSON_API_TOKEN'])
nlp.ner('杨超越在1998年7月31日出生于江苏省盐城市大丰区。', sensitivity=2)

Hanlp 实体识别

pyhanlp 项目官方地址

一、简介

HanLP是一系列模型与算法组成的NLP工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。内部算法经过工业界和学术界考验。目前,基于深度学习的HanLP 2.0正处于alpha测试阶段,未来将实现知识图谱、问答系统、自动摘要、文本语义相似度、指代消解、三元组抽取、实体链接等功能。

我们介绍的Pyhanlp是HanLP1.x的Python接口,支持自动下载与升级HanLP1.x,兼容py2、py3。

二、python版本使用

1、安装

安装JDK

JDK官方下载地址
JDK的安装与环境变量配置
注意 保证JDK的位数、操作系统位数和Python位数一致。

安装Pyhanlp

pip install pyhanlp

2、使用

# coding utf-8
import pyhanlp
text = '杨超越在1998年7月31日出生于江苏省盐城市大丰区。'
NLPTokenizer = pyhanlp.JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')  # 加载模型
NER = NLPTokenizer.segment(text)  # 命名实体识别
print(NER)
'''
[杨超越/nr, 在/p, 1998年7月31日/t, 出生/v, 于/p, 江苏省盐城市/ns, 大丰区/ns, 。/w]
'''

不像前面介绍的几个工具可以直接获得实体,hanlp需要从词性标注里面提取实体,
人名nr、地名ns、机名nt、时间t。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | 基于知识图谱中图卷积神经网络的推荐系统

笔记整理&#xff1a;王若旭&#xff0c;浙江大学在读硕士&#xff0c;研究方向为关系抽取&#xff0c;零样本学习。本文发表于 www2019&#xff0c;参考链接&#xff1a;https://arxiv.org/pdf/1905.04413.pdf为了解决推荐系统中协同过滤方法面对的数据稀疏和冷启动的问题&…

NeurIPS 2020 | Glance and Focus: 通用、高效的神经网络自适应推理框架

文 | rainforest wang源 | 知乎本文主要介绍我们被NeurIPS 2020会议录用的一篇文章&#xff1a;Glance and Focus: a Dynamic Approach to Reducing Spatial Redundancy in Image Classification代码和预训练模型已经在Github上面放出&#xff1a;https://link.zhihu.com/?tar…

如何下载Android源码(非常详细,含自动恢复下载,编译,运行模拟器说明)

今天终于把代码下载完成&#xff0c;特此开一篇博文记录一下。上图&#xff1a; 为了下载这些源码&#xff0c;历时5天5夜&#xff0c;说为什么这么长时间&#xff0c;是因为太容易中断了&#xff0c;有时候下一晚上可能就一直没在下&#xff0c;在你入睡的时候它就自己断了&am…

NumPy快速入门-- Less 基础/线性代数

文章目录1. 广播&#xff08;Broadcasting&#xff09;规则2. 使用索引数组索引3. 使用布尔值作为数组索引4. ix_()函数5. 线性代数 简单数组操作6. 技巧和提示6.1 “自动”整形6.2 矢量堆叠1. 广播&#xff08;Broadcasting&#xff09;规则 Broadcasting允许通用函数以有意义…

Intel PAUSE指令变化影响到MySQL的性能,该如何解决?

MySQL得益于其开源属性、成熟的商业运作、良好的社区运营以及功能的不断迭代与完善&#xff0c;已经成为互联网关系型数据库的标配。可以说&#xff0c;X86服务器、Linux作为基础设施&#xff0c;跟MySQL一起构建了互联网数据存储服务的基石&#xff0c;三者相辅相成。本文将分…

会议 | CCKS 2019 全国知识图谱与语义计算大会在杭州隆重召开

本文转载自公众号&#xff1a;中国中文信息学会。2019 年全国知识图谱与语义计算大会(CCKS 2019)于 8 月 24 日至 27 日在杭州召开&#xff0c;由中国中文信息学会语言与知识计算专业委员会主办&#xff0c;浙江大学承办。本次会议主题是“知识智能”。大会吸引了来自海内外的八…

Hystrix 简介和使用

Hystrix一、概念二、使用1. 环境搭建2. 服务降级3. 异常熔断4. 自定义异常熔断器5.Hystrix仪表盘监控三、测试1. 异常熔断2. 超时熔断3. 熔断器获得异常4. 异常忽略5. 自定义异常熔断器一、概念 故障蔓延&#xff1a;由于一个服务变慢或没有响应导致大量请求堆积&#xff0c;进…

android中如何使用一张图片适配不同尺寸的APP引导页

在我们平常开发的过程中在做引导页适配的时候&#xff0c;有时候会犯难&#xff0c;怎么样作图可以将各种不同尺寸分辨率的手机都适配好也就是不变形不拉伸&#xff0c;官方给的说法也只是做多套图去适配不同的分辨率&#xff0c;遇到全屏展示引导这种问题的时候就有些力不从心…

还在用Tensorboard?机器学习实验管理平台大盘点

文 | SisyphusBJ源 | Pytorch Lightningwandb.aicomet.mlneptune.aiallegro trainsmlflowguild.aisacredtest-tubetensorboard相信很多同学看到上面这个列表的第一印象是懵的。我们先看下机器学习实验管理平台 到底是做神马滴&#xff1a;一句话概括就是&#xff1a;&#xff0…

论文浅尝 | 利用图 Transformer 实现基于知识图谱的文本生成

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士生&#xff0c;研究方向为跨语言知识图谱问答。来源&#xff1a;NAACL2019链接&#xff1a;https://arxiv.org/pdf/1904.02342.pdf本文关注如何从信息抽取结果&#xff08;特别是知识图谱&#xff09;出发&#xff0c;生…

LeetCode 230. 二叉搜索树中第K小的元素(中序遍历)

文章目录1. 题目信息2. 解题2.1 中序递归2.2 中序循环写法1. 题目信息 给定一个二叉搜索树&#xff0c;编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明&#xff1a; 你可以假设 k 总是有效的&#xff0c;1 ≤ k ≤ 二叉搜索树元素个数。 示例 1:输入: root …

Apache Doris在美团外卖数仓中的应用实践

序言 美团外卖数据仓库技术团队负责支撑日常业务运营及分析师的日常分析&#xff0c;由于外卖业务特点带来的数据生产成本较高和查询效率偏低的问题&#xff0c;他们通过引入Apache Doris引擎优化生产方案&#xff0c;实现了低成本生产与高效查询的平衡。并以此分析不同业务场景…

Feign 简介和使用

声明式服务消费Feign一、简介二、使用Feign实现服务消费者三、实现普通的服务提供者四、Feign服务调用测试五、Feign消费者测试负载均衡服务熔断一、简介 Feign是Netflix公司开发的一个声明式的REST调用客户端&#xff1b; Ribbon负载均衡、Hystrix服务熔断是我们Spring Cloud…

论文浅尝 | 面向自动问题生成的跨语言训练

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士生&#xff0c;研究方向为跨语言知识图谱问答。来源&#xff1a;ACL 2019链接&#xff1a;https://128.84.21.199/pdf/1906.02525.pdf动机现有问题生成方法需要大量的“文本-问题”有标注数据对作为训练数据集&#xff…

再见,Spark!Flink已成气候!

身为大数据工程师&#xff0c;你还在苦学Spark、Hadoop、Storm&#xff0c;却还没搞过Flink&#xff1f;醒醒吧&#xff01;刚过去的2020双11&#xff0c;阿里在Flink实时计算技术的驱动下全程保持了“如丝般顺滑”&#xff0c;基于Flink的阿里巴巴实时计算平台简直强无敌。最恐…

Java线程池实现原理及其在美团业务中的实践

随着计算机行业的飞速发展&#xff0c;摩尔定律逐渐失效&#xff0c;多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池&#xff1a;ThreadPoolExecutor类&#xff0c;帮助开发人员管理线程并方便地执行并行任务。了解并合理使…

Zuul 简介和使用

Zuul背景Zuul的作用Zuul API网关Zuul请求过滤Zuul路由规则Zuul异常处理背景 通过之前的学习&#xff0c;我们知道注册中心Eureka&#xff0c;可以讲服务注册到该注册中心&#xff0c;Ribbon和Feign可以实现服务负载均衡地调用&#xff0c;Hystrix可以实现服务熔断&#xff0c;…

技术动态 | 知识图谱上的实体链接

本文转载自公众号&#xff1a;知识工场 1、什么是实体链接实体链接&#xff08;entity linking&#xff09;就是将一段文本中的某些字符串映射到知识库中对应的实体上。比如对于文本“郑雯出任复旦大学新闻学院副院长”&#xff0c;就应当将字符串“郑雯”、“复旦大学…

卖萌屋学术站开放注册啦!寻募种子用户,超多特权放出!

文&#xff1a;夕小瑶消失一个多月的小夕又突然出现啦&#xff01;要问小夕最近业余时间在做什么&#xff0c;那就是跟小伙伴们开发学术站啦~&#xff08;等...等再肝一版&#xff0c;小夕就继续给大家写文章(&#xff61; ́︿ ̀&#xff61;)众所周知&#xff0c;卖萌屋学术…

LeetCode 11. 盛最多水的容器(双指针)

文章目录1. 题目信息2. 解题1. 题目信息 给定 n 个非负整数 a1&#xff0c;a2&#xff0c;…&#xff0c;an&#xff0c;每个数代表坐标中的一个点 (i, ai) 。 在坐标内画 n 条垂直线&#xff0c;垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。 找出其中的两条线&#xff0c;…