首页 文章 精选 留言 我的

精选列表

搜索[依赖管理],共10000篇文章
优秀的个人博客,低调大师

下一代搜索引擎或将依赖人工智能、众包和超级计算机

我们所知的WordNet是一个英语“词汇数据库”,它将英语单词以“同义词集合(synset)”作为一个基本组织单位,集合里提供词汇的简短定义和使用示例,人脑如果有一个已知的概念,就可以在同义词集合中找到一个适合的词去表达这个概念。而现在,美国德克萨斯大学奥斯汀分校(UT Austin)的研究人员开发了一种将信息从WordNet数据库整合到信息检索(IR,information retrieval)系统的方法,便于通用搜索引擎以及医学知识或非英语文本等细分领域的研发。 说明之前,我们先来了解一下WordNet——由普林斯顿大学(Princeton)的心理学家、语言学家和计算机工程师联合设计的一种基于认知语言学的英语词典【常用的英语词典分为词典(Dictionary)、分类词汇汇编(Thesaurus)、同义词和反义词(Synonyms and Antonyms)、惯用法(Usage)、成语(Idioms)、俚语(Slang)和词源(Etymology)等等】。 (图中四种不同词性的网络之间并无连接,WordNet为其提供连接) 它是一个覆盖范围宽广的英语词汇语义网。名词,动词,形容词和副词各自被组织成一个同义词的网络,每个同义词集合都代表一个基本的语义概念,并且这些集合之间也由各种关系连接——它不是光把单词以字母顺序排列,而且按照单词的意义组成一个“单词的网络”。 为什么需要一个WordNet? 计算机提供了一个良好的模式演练场,通过它,人们可以测试各种关于人类认知能力的理论模型。 越来越多的人认识到,一个大的词库对自然语言理解,人工智能的各方面研究都具有重要的价值。 对大规模机器可读词典的需求同时也带来许多基础问题。首先是如何构造这样一个词库,是手工编制还是机器自动生成?第二,词典中应包含什么样的信息?第三,词典应如何设计,即信息如何组织,以及用户如何访问?实际上,这些问题涉及到词典的编纂方法,词典的内容,词典的使用方式这一系列非常基础的问题。 WordNet的内容是什么?对此公开资料显示,人们经常区分词语知识和世界知识,前者体现在词典中,后者体现在百科全书中,但事实上二者的界限是模糊的。比如hit(“打”)某人是一种带有敌意的行为,这是百科知识;而hit跟strike(“击”)多多少少同义,并且hit可以带一个直接宾语论元,这是词语知识。但hit的直接宾语应该是固体(而不是像gas这样的气体),这是词语知识还是百科知识就界限模糊了。不过毫无疑问,要理解语言,这两部分知识是缺一不可的。WordNet相当于一个统筹。 之所以有了WordNet,也就有了更多相关的应用落地,比如搜索引擎。那么,搜索引擎如何生成相关站点链接列表? 这要归功于信息检索演变进程中两股强大力量的发展:人工智能(尤其是自然语言处理)和众包。 当我们搜索一个信息,得到一系列信息,两者之间如何对应起来?对于我们所输入的词汇与大量预测网页之间的关系,计算机算法对此的解释是,主要基于其系统所接受的数以亿计的文本训练中语言连接的频率。 但这并不是信息的唯一来源。对于重要话题,专业的注解者会强化其语义关系,调整搜索结果和生成结果的算法,而通过网络检索者(也就是我们)的点击,算法会辨别出哪些链接是最佳结果。 尽管很不可思议,但这个模型带来的改变世界性的成功,也存在一定缺陷。因为搜索引擎给出的结果往往不像我们想的那样“智能”,它们仍然缺乏对人类语言和逻辑的真正理解。除此之外,它们有时会重复、加深我们的搜索结果中出现的偏差,而不是为我们提供新的信息或观点。 在研究过程中,美国德克萨斯大学奥斯汀分校信息学院副教授马修·里斯(Matthew Lease)提出一个设想:利用计算机和人类大脑的双重力量,或许能够创造更加智能的信息检索系统方式。 为了将人工智能与注释者的见解以及特定领域资源的信息编码整合在一起,里斯教授及其同事们正在开发一种新的信息检索方案,它将有利于通用搜索引擎以及医学知识或非英语文本等研发的细分领域。 8月初,在加拿大温哥华举办的计算机语言学协会年度会议上,里斯、德克萨斯大学奥斯汀分校和美国东北大学的几位合作者通过两篇论文,描述了他们新颖的信息检索系统想法。他们的研究借助了德克萨斯高级计算中心的超级计算资源。 在其中一篇论文中,以博士生An Nguyen为首,他们提出了一种方法,即结合多个注解者输入的信息,来确定所有给出的文本中最好的注解方案。他们将这种方法用在了两个问题的研究上: 分析自由文本搜索描述医学研究的文章,来提取每项研究的细节(例如,健康状况、患者统计信息、治疗手段和效果),以及通过识别命名实体分析突发新闻报道来识别事件、人以及所涉及的地方。 里斯同时提出,在自然语言处理中有一个重要挑战,即准确地在自由文本中查找所包含的重要信息,它将使我们把这些信息提取到数据库,并将其与其他数据结合在一起,以做出更加智能的决策和新发现。相关解决方案是,里斯这些研究人员已经大规模地利用众包来为医学和新闻文章注解,以确保其智能系统将能够更加精准地找到每一篇文章中所包含的关键信息。 习惯上,这些注解历来都是由相关领域专家完成的。然而,近来,众包已经成为一个以较低成本获取大量带标签数据的广受欢迎的方法。可以预见的是,这些来自非专业人士的注解质量要比那些领域专家的注解差,因此评估大众注解者的可靠性是很有必要的,而且将这些个人注解整合成一套“参考标准”一致的标签也很有必要。 里斯的研究团队还发现,他们的方法可以训练神经网络,这样它就可以非常准确地预测出命名实体,并在未命名文本中提取相关信息。这个新方法改进了现有的标记和训练方法。 该方法还为每一位工作人员的标签质量提供了评估,它可以在任务之间转移,而且对误差分析和智能路由任务很有用——可以识别出每个特定文本的最佳注解人选。 该图是一个局部权值共享分类的例子,如图所示,单词被分为了两组,里斯的研究小组在归属于同一组的单词中,随机地选择待共享权值后将其嵌入。权值共享限制了系统必须学习的自由参数的数量,提高了该神经模型的效率和精度,并成为了一个灵活结合先验知识的方法。在这一过程中,他们将最好的人类知识与机器学习结合在了一起。【贡献者:张烨(Ye Zhang);德州大学奥斯汀分校马修·里斯(Matthew Lease);美国东北大学拜伦·C·华莱士(Byron C. Wallace)】 第一篇论文:Learning to Effectively Select Topics For Information Retrieval Test Collections 链接:https://arxiv.org/pdf/1701.07810.pdf 利用现有知识创造更好的神经系统模型 该团队的另一篇论文以博士生张烨(Ye Zhang)为首,文章提出,自然语言处理(NLP)的神经模型往往会忽视现有资源,例如WordNet词汇数据库。 他们提出了一种方法,可以通过权值共享(weight sharing),利用这些现有的语言资源,为了自动文本分类改善自然语言处理模型。例如,该模型学习将医学文章进行分类,将描述临床试验的研究分类到与临床医学问题相关的定义下。 在权值共享下,相似的词汇将共享一个权值的其中一部分,或指定的数值。权值共享限制了系统必须学习的自由参数的数量,从而提高该神经模型的效率和精度,并起到一个灵活结合先验知识的方式。在这个过程中,他们将人类知识与机器学习结合在了一起。 “神经网络模型的参数有很多,并且需要大量的数据去配合它们。”里斯因此有了一个想法,如果能够以某种方式推出一些与其他先验词汇相关的词汇,那么就没必要非要为每个单独的词汇设置一个参数,而可以将多个单词配合使用一个参数,这样所需要学习模型的数据就比较少了。这种方法将在没有大量数据限制的情况下实现深度学习成果。 他们将一种形式的权值共享应用在了一段电影评论的情感分析和与贫血症有关的生物医学搜索中。在分类任务上,相比没有使用权值共享策略的情形,他们的方法不断获得了改进性能。 来自美国东北大学的合作者拜伦·华莱士(Byron Wallace)也认为,这种方式,相当于在数据驱动的神经网络模型中编写和开发专业领域知识提供了一个通用框架。”【华莱士曾经也是德州大学奥斯汀分校的教职工,而且也是德克萨斯高级计算中心(TACC)的老用户。】 里斯、华莱士和他们的合作者在德克萨斯高级计算中心的Maverick超级计算机上使用GPU(图形处理单元)对其机器学习系统进行分析和培训。 里斯表示:“训练神经计算模型处理大数据需要大量的计算时间。而TACC恰好就成为了一处很棒、很合适的资源,而且这不仅仅缘于其强大的可用存储,还得益于其大量的节点和可适用于神经模型训练的高效处理速度。” 据里斯说,除了GPU,TACC部署了英特尔先进的处理架构,机器学习库正在迎头赶上。 尽管许多深度学习库一直在对GPU的处理进行高度优化,但从长远来看,一旦其他架构也进行了优化,它们将变得更快。 TACC数据密集型计算主管尼尔·加夫尼(Niall Gaffney)表示,在TACC的与Caffe(加州大学伯克利分校开发的深度学习框架,已被充分应用到了英特尔的至强Phi处理器中)进行的前期工作中,他们发现,这些CPU的性能差不多与许多人工智能运行时的CPU性能相当。 加夫尼认为这相当于一个变革,毕竟它将能够提供更多可以满足这些研究人员的节点,同时也允许高性能计算机(HPC)用户可以在他们的分析阶段利用人工智能,而无需移动到一个不同的GPU启用系统。 通过提高自动信息提取和文本分类的核心自然语言处理技术,建立在这些技术上的网络搜索引擎可以继续提高。 里斯已经收到来自美国国家科学基金会(NSF)、美国博物馆和图书馆服务研究院(IMLS)和美国国防高级研究计划局(DARPA)的资助,来改善跨各种任务、规模和设置的众包质量。尽管商业网络搜索公司投入了大量资源来开发实用、有效的解决方案,但行业的需求迫使里斯仍然专注于商业应用问题和短期解决方案。这也是为什么像里斯这样的研究人员得以展开这些高风险、潜在变革性的研究之原因。 原文发布时间为:2017-8-14 本文作者:周雅 本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

优秀的个人博客,低调大师

HarmonyOS网络管理开发—Socket连接

简介 Socket连接主要是通过Socket进行数据传输,支持TCP/UDP/TLS协议。 基本概念 ​ ● Socket:套接字,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。 ​ ● TCP:传输控制协议(Transmission Control Protocol)。是一种面向连接的、可靠的、基于字节流的传输层通信协议。 ​ ● UDP:用户数据报协议协议(User Datagram Protocol)。是一个简单的面向消息的传输层,不需要连接。 ​ ● TLS:安全传输层协议(Transport Layer Security)。用于在两个通信应用程序之间提供保密性和数据完整性。 场景介绍 应用通过Socket进行数据传输,支持TCP/UDP/TLS协议。主要场景有: ​ ● 应用通过TCP/UDP Socket进行数据传输 ​ ● 应用通过TLS Socket进行加密数据传输 接口说明 完整的JS API说明以及实例代码请参考:Socket连接。 Socket连接主要由socket模块提供。具体接口说明如下表。 接口名 功能描述 constructUDPSocketInstance() 创建一个UDPSocket对象。 constructTCPSocketInstance() 创建一个TCPSocket对象。 bind() 绑定IP地址和端口。 send() 发送数据。 close() 关闭连接。 getState() 获取Socket状态。 connect() 连接到指定的IP地址和端口(仅TCP支持) getRemoteAddress() 获取对端Socket地址(仅TCP支持,需要先调用connect方法) on(type: 'message') 订阅Socket连接的接收消息事件。 off(type: 'message') 取消订阅Socket连接的接收消息事件。 on(type: 'close') 订阅Socket连接的关闭事件。 off(type: 'close') 取消订阅Socket连接的关闭事件。 on(type: 'error') 订阅Socket连接的Error事件。 off(type: 'error') 取消订阅Socket连接的Error事件。 on(type: 'listening') 订阅UDPSocket连接的数据包消息事件(仅UDP支持)。 off(type: 'listening') 取消订阅UDPSocket连接的数据包消息事件(仅UDP支持)。 on(type: 'connect') 订阅TCPSocket的连接事件(仅TCP支持)。 off(type: 'connect') 取消订阅TCPSocket的连接事件(仅TCP支持)。 TLS Socket连接主要由tls_socket模块提供。具体接口说明如下表。 接口名 功能描述 constructTLSSocketInstance() 创建一个TLSSocket对象。 bind() 绑定IP地址和端口号。 close(type: 'error') 关闭连接。 connect() 连接到指定的IP地址和端口。 getCertificate() 返回表示本地证书的对象。 getCipherSuite() 返回包含协商的密码套件信息的列表。 getProtocol() 返回包含当前连接协商的SSL/TLS协议版本的字符串。 getRemoteAddress() 获取TLSSocket连接的对端地址。 getRemoteCertificate() 返回表示对等证书的对象。 getSignatureAlgorithms() 在服务器和客户端之间共享的签名算法列表,按优先级降序排列。 getState() 获取TLSSocket连接的状态。 off(type: 'close') 取消订阅TLSSocket连接的关闭事件。 off(type: 'error') 取消订阅TLSSocket连接的Error事件。 off(type: 'message') 取消订阅TLSSocket连接的接收消息事件。 on(type: 'close') 订阅TLSSocket连接的关闭事件。 on(type: 'error') 订阅TLSSocket连接的Error事件。 on(type: 'message') 订阅TLSSocket连接的接收消息事件。 send() 发送数据。 setExtraOptions() 设置TLSSocket连接的其他属性。 应用TCP/UDP协议进行通信 UDP与TCP流程大体类似,下面以TCP为例: ​ 1. import需要的socket模块。 ​ 2. 创建一个TCPSocket连接,返回一个TCPSocket对象。 ​ 3. (可选)订阅TCPSocket相关的订阅事件。 ​ 4. 绑定IP地址和端口,端口可以指定或由系统随机分配。 ​ 5. 连接到指定的IP地址和端口。 ​ 6. 发送数据。 ​ 7. Socket连接使用完毕后,主动关闭。 import socket from '@ohos.net.socket' // 创建一个TCPSocket连接,返回一个TCPSocket对象。 let tcp = socket.constructTCPSocketInstance(); // 订阅TCPSocket相关的订阅事件 tcp.on('message', value => { console.log("on message") let buffer = value.message let dataView = new DataView(buffer) let str = "" for (let i = 0; i < dataView.byteLength; ++i) { str += String.fromCharCode(dataView.getUint8(i)) } console.log("on connect received:" + str) }); tcp.on('connect', () => { console.log("on connect") }); tcp.on('close', () => { console.log("on close") }); // 绑定IP地址和端口。 let bindAddress = { address: '192.168.xx.xx', port: 1234, // 绑定端口,如1234 family: 1 }; tcp.bind(bindAddress, err => { if (err) { console.log('bind fail'); return; } console.log('bind success'); // 连接到指定的IP地址和端口。 let connectAddress = { address: '192.168.xx.xx', port: 5678, // 连接端口,如5678 family: 1 }; tcp.connect({ address: connectAddress, timeout: 6000 }, err => { if (err) { console.log('connect fail'); return; } console.log('connect success'); // 发送数据 tcp.send({ data: 'Hello, server!' }, err => { if (err) { console.log('send fail'); return; } console.log('send success'); }) }); }); // 连接使用完毕后,主动关闭。取消相关事件的订阅。 setTimeout(() => { tcp.close((err) => { console.log('close socket.') }); tcp.off('message'); tcp.off('connect'); tcp.off('close'); }, 30 * 1000); 应用通过TLS Socket进行加密数据传输 开发步骤 客户端TLS Socket流程: ​ 1. import需要的socket模块。 ​ 2. 绑定服务器IP和端口号。 ​ 3. 双向认证上传客户端CA证书及数字证书;单向认证上传客户端CA证书。 ​ 4. 创建一个TLSSocket连接,返回一个TLSSocket对象。 ​ 5. (可选)订阅TLSSocket相关的订阅事件。 ​ 6. 发送数据。 ​ 7. TLSSocket连接使用完毕后,主动关闭。 import socket from '@ohos.net.socket' // 创建一个(双向认证)TLS Socket连接,返回一个TLS Socket对象。 let tlsTwoWay = socket.constructTLSSocketInstance(); // 订阅TLS Socket相关的订阅事件 tlsTwoWay.on('message', value => { console.log("on message") let buffer = value.message let dataView = new DataView(buffer) let str = "" for (let i = 0; i < dataView.byteLength; ++i) { str += String.fromCharCode(dataView.getUint8(i)) } console.log("on connect received:" + str) }); tlsTwoWay.on('connect', () => { console.log("on connect") }); tlsTwoWay.on('close', () => { console.log("on close") }); // 绑定本地IP地址和端口。 tlsTwoWay.bind({ address: '192.168.xxx.xxx', port: xxxx, family: 1 }, err => { if (err) { console.log('bind fail'); return; } console.log('bind success'); }); // 设置通信过程中使用参数 let options = { ALPNProtocols: ["spdy/1", "http/1.1"], // 连接到指定的IP地址和端口。 address: { address: "192.168.xx.xxx", port: xxxx, // 端口 family: 1, }, // 设置用于通信过程中完成校验的参数。 secureOptions: { key: "xxxx", // 密钥 cert: "xxxx", // 数字证书 ca: ["xxxx"], // CA证书 passwd: "xxxx", // 生成密钥时的密码 protocols: [socket.Protocol.TLSv12], // 通信协议 useRemoteCipherPrefer: true, // 是否优先使用对端密码套件 signatureAlgorithms: "rsa_pss_rsae_sha256:ECDSA+SHA256", // 签名算法 cipherSuite: "AES256-SHA256", // 密码套件 }, }; // 建立连接 tlsTwoWay.connect(options, (err, data) => { console.error(err); console.log(data); }); // 连接使用完毕后,主动关闭。取消相关事件的订阅。 tlsTwoWay.close((err) => { if (err) { console.log("close callback error = " + err); } else { console.log("close success"); } tlsTwoWay.off('message'); tlsTwoWay.off('connect'); tlsTwoWay.off('close'); }); // 创建一个(单向认证)TLS Socket连接,返回一个TLS Socket对象。 let tlsOneWay = socket.constructTLSSocketInstance(); // One way authentication // 订阅TLS Socket相关的订阅事件 tlsTwoWay.on('message', value => { console.log("on message") let buffer = value.message let dataView = new DataView(buffer) let str = "" for (let i = 0;i < dataView.byteLength; ++i) { str += String.fromCharCode(dataView.getUint8(i)) } console.log("on connect received:" + str) }); tlsTwoWay.on('connect', () => { console.log("on connect") }); tlsTwoWay.on('close', () => { console.log("on close") }); // 绑定本地IP地址和端口。 tlsOneWay.bind({ address: '192.168.xxx.xxx', port: xxxx, family: 1 }, err => { if (err) { console.log('bind fail'); return; } console.log('bind success'); }); // 设置通信过程中使用参数 let oneWayOptions = { address: { address: "192.168.xxx.xxx", port: xxxx, family: 1, }, secureOptions: { ca: ["xxxx","xxxx"], // CA证书 cipherSuite: "AES256-SHA256", // 密码套件 }, }; // 建立连接 tlsOneWay.connect(oneWayOptions, (err, data) => { console.error(err); console.log(data); }); // 连接使用完毕后,主动关闭。取消相关事件的订阅。 tlsTwoWay.close((err) => { if (err) { console.log("close callback error = " + err); } else { console.log("close success"); } tlsTwoWay.off('message'); tlsTwoWay.off('connect'); tlsTwoWay.off('close'); }); 本文由博客一文多发平台 OpenWrite 发布!

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册