学习笔记CB004:提问、检索、回答、NLPIR

聊天机器人,提问、检索、回答。

提问,查询关键词生成、答案类型确定、句法和语义分析。查询关键词生成,提问提取关键词,中心词关联扩展词。答案类型确定,确定提问类型。句法和语义分析,问题深层含义剖析。检索,搜索,根据查询关键词信息检索,返回句子或段落。答案抽取,分析和推理检索句子或段落,抽取提问一致实体,根据概率最大对候选答案排序。

海量文本知识表示,网络文本资源获取、机器学习方法、大规模语义计算和推理、知识表示体系、知识库构建。问句解析,中文分词、词性标注、实体标注、概念类别标注、句法分析、语义分析、逻辑结构标注、指代消解、关联关系标注、问句分类、答案类别确定。答案生成过滤,候选答案抽取、关系推演、吻哈程度判断、噪声过滤。

聊天机器人技术类型。基于检索技术,信息检索,简单易实现,无法从句法关系和语义关系给出答案,无法推理问题。基于模式匹配技术,把问题往梳理好的模式匹配,推理简单,模式涵盖不全。基于自然语言理解技术,把浅层分析加句法分析、语义分析。基于统计翻译模型技术,把问句疑问词留出来,和候选答案资源匹配。

问句解析。哈工大LTP(语言技术平台)、博森科技、jieba分词、中科院张华平博士NLPIR汉语分词系统。

NLPIR,http://pynlpir.readthedocs.io/en/latest/。安装 pip install pynlpir 。下载授权文件 https://github.com/NLPIR-team/NLPIR/blob/master/License/license%20for%20a%20month/NLPIR-ICTCLAS分词系统授权/NLPIR.user,替换pynlpir/Data目录的已过期文件。

# coding:utf-8

import sys

import importlib

importlib.reload(sys)

import pynlpi

pynlpir.open()

# s = '聊天机器人到底该怎么做呢?'

s = '海洋是如何形成的'

# 分词 分析功能全打开 不使用英文

segments = pynlpir.segment(s, pos_names='all', pos_english=False)

for segment in segments:

print(segment[0], 't', segment[1])

# 关键词提取

key_words = pynlpir.get_key_words(s, weighted=True)

for key_word in key_words:

print(key_word[0], 't', key_word[1])

pynlpir.close()

segment 切词,返回tuple(token, pos),token切词,pos 语言属性。调用segment方法,指定pos_names参数'all' 、'child' 、'parent',默认parent 表示获取词性最顶级词性。child 表示获取词性最具体信息。all 表示获取词性相关所有词性信息,从顶级词性到该词性路径。

词性分类表。nlpir 源代码 /pynlpir/pos_map.py,全部词性分类及其子类别:

POS_MAP = {

'n': ('名词', 'noun', {

'nr': ('人名', 'personal name', {

'nr1': ('汉语姓氏', 'Chinese surname'),

'nr2': ('汉语名字', 'Chinese given name'),

'nrj': ('日语人名', 'Japanese personal name'),

'nrf': ('音译人名', 'transcribed personal name')

}),

'ns': ('地名', 'toponym', {

'nsf': ('音译地名', 'transcribed toponym'),

}),

'nt': ('机构团体名', 'organization/group name'),

'nz': ('其它专名', 'other proper noun'),

'nl': ('名词性惯用语', 'noun phrase'),

'ng': ('名词性语素', 'noun morpheme'),

}),

't': ('时间词', 'time word', {

'tg': ('时间词性语素', 'time morpheme'),

}),

's': ('处所词', 'locative word'),

'f': ('方位词', 'noun of locality'),

'v': ('动词', 'verb', {

'vd': ('副动词', 'auxiliary verb'),

'vn': ('名动词', 'noun-verb'),

'vshi': ('动词"是"', 'verb 是'),

'vyou': ('动词"有"', 'verb 有'),

'vf': ('趋向动词', 'directional verb'),

'vx': ('行事动词', 'performative verb'),

'vi': ('不及物动词', 'intransitive verb'),

'vl': ('动词性惯用语', 'verb phrase'),

'vg': ('动词性语素', 'verb morpheme'),

}),

'a': ('形容词', 'adjective', {

'ad': ('副形词', 'auxiliary adjective'),

'an': ('名形词', 'noun-adjective'),

'ag': ('形容词性语素', 'adjective morpheme'),

'al': ('形容词性惯用语', 'adjective phrase'),

}),

'b': ('区别词', 'distinguishing word', {

'bl': ('区别词性惯用语', 'distinguishing phrase'),

}),

'z': ('状态词', 'status word'),

'r': ('代词', 'pronoun', {

'rr': ('人称代词', 'personal pronoun'),

'rz': ('指示代词', 'demonstrative pronoun', {

'rzt': ('时间指示代词', 'temporal demonstrative pronoun'),

'rzs': ('处所指示代词', 'locative demonstrative pronoun'),

'rzv': ('谓词性指示代词', 'predicate demonstrative pronoun'),

}),

'ry': ('疑问代词', 'interrogative pronoun', {

'ryt': ('时间疑问代词', 'temporal interrogative pronoun'),

'rys': ('处所疑问代词', 'locative interrogative pronoun'),

'ryv': ('谓词性疑问代词', 'predicate interrogative pronoun'),

}),

'rg': ('代词性语素', 'pronoun morpheme'),

}),

'm': ('数词', 'numeral', {

'mq': ('数量词', 'numeral-plus-classifier compound'),

}),

'q': ('量词', 'classifier', {

'qv': ('动量词', 'verbal classifier'),

'qt': ('时量词', 'temporal classifier'),

}),

'd': ('副词', 'adverb'),

'p': ('介词', 'preposition', {

'pba': ('介词“把”', 'preposition 把'),

'pbei': ('介词“被”', 'preposition 被'),

}),

'c': ('连词', 'conjunction', {

'cc': ('并列连词', 'coordinating conjunction'),

}),

'u': ('助词', 'particle', {

'uzhe': ('着', 'particle 着'),

'ule': ('了/喽', 'particle 了/喽'),

'uguo': ('过', 'particle 过'),

'ude1': ('的/底', 'particle 的/底'),

'ude2': ('地', 'particle 地'),

'ude3': ('得', 'particle 得'),

'usuo': ('所', 'particle 所'),

'udeng': ('等/等等/云云', 'particle 等/等等/云云'),

'uyy': ('一样/一般/似的/般', 'particle 一样/一般/似的/般'),

'udh': ('的话', 'particle 的话'),

'uls': ('来讲/来说/而言/说来', 'particle 来讲/来说/而言/说来'),

'uzhi': ('之', 'particle 之'),

'ulian': ('连', 'particle 连'),

}),

'e': ('叹词', 'interjection'),

'y': ('语气词', 'modal particle'),

'o': ('拟声词', 'onomatopoeia'),

'h': ('前缀', 'prefix'),

'k': ('后缀', 'suffix'),

'x': ('字符串', 'string', {

'xe': ('Email字符串', 'email address'),

'xs': ('微博会话分隔符', 'hashtag'),

'xm': ('表情符合', 'emoticon'),

'xu': ('网址URL', 'URL'),

'xx': ('非语素字', 'non-morpheme character'),

}),

'w': ('标点符号', 'punctuation mark', {

'wkz': ('左括号', 'left parenthesis/bracket'),

'wky': ('右括号', 'right parenthesis/bracket'),

'wyz': ('左引号', 'left quotation mark'),

'wyy': ('右引号', 'right quotation mark'),

'wj': ('句号', 'period'),

'ww': ('问号', 'question mark'),

'wt': ('叹号', 'exclamation mark'),

'wd': ('逗号', 'comma'),

'wf': ('分号', 'semicolon'),

'wn': ('顿号', 'enumeration comma'),

'wm': ('冒号', 'colon'),

'ws': ('省略号', 'ellipsis'),

'wp': ('破折号', 'dash'),

'wb': ('百分号千分号', 'percent/per mille sign'),

'wh': ('单位符号', 'unit of measure sign'),

}),

}

参考资料:

《Python 自然语言处理》

http://www.shareditor.com/blogshow?blogId=73

http://www.shareditor.com/blogshow?blogId=74

欢迎推荐上海机器学习工作机会,我的微信:qingxingfengzi

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ATYUN订阅号

在Python中使用NLTK建立一个简单的Chatbot

也许你听说过Duolingo(多邻国):一种流行的语言学习应用程序,它可以通过游戏来练习一种新的语言。由于其创新的外语教学风格,它非常受欢迎。它的思想很简单:每...

4525
来自专栏专知

命名实体识别从数据集到算法实现

命名实体识别(Named Entity Recognition, NER)是 NLP 的基础任务,指从文本中识别出命名性指称项,为关系抽取等任务做铺垫。狭义上,...

6937
来自专栏AI科技大本营的专栏

计算机如何理解我们的语言?NLP is fun!

【导读】我们从日常每天都会用到的推荐系统到现在研究火热的开放性聊天、对话机器人,越来越多的产品与应用的背后都需要自然语言处理(NLP)和知识图谱的技术。也有越来...

943
来自专栏人工智能LeadAI

python根据BM25实现文本检索

目的 给定一个或多个搜索词,如“高血压 患者”,从已有的若干篇文本中找出最相关的(n篇)文本。 理论知识 文本检索(text retrieve)的常用策略是:用...

7875
来自专栏Data Analysis & Viz

乱炖“简书交友”数据之代码

上一篇文章乱炖数据之2700余篇“简书交友”专题文章数据的花式玩法发布后,不少人想学习下代码,由于此前不曾在GitHub上开源过,流程还不熟悉,再者本项目中很多...

791
来自专栏高性能服务器开发

一个Sqrt函数引发的血案

好吧,我承认我标题党了,不过既然你来了,就认真看下去吧,保证你有收获。 我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你...

3295
来自专栏Python中文社区

Python自然语言处理分析倚天屠龙记

最近在了解到,在机器学习中,自然语言处理是较大的一个分支。存在许多挑战。例如: 如何分词,识别实体关系,实体间关系,关系网络展示等。

2065
来自专栏深度学习自然语言处理

详解依存树的来龙去脉及用法

这开始介绍依存树的来龙去脉! 来历 a.简单的短语分词(正向逆向最大匹配,n-gram,机器学习...)(以单个词为重点) 比如: 猴子喜欢吃香蕉。->猴子 喜...

37110
来自专栏数据派THU

自然语言处理数据集免费资源开放(附学习资料)

作者:Jason Brownlee 翻译:梁傅淇 本文长度为1500字,建议阅读3分钟 本文提供了七个不同分类的自然语言处理小型标准数据集的下载链接,对于有志于...

4196

Python NLTK 自然语言处理入门与例程

那么 NLP 到底是什么?学习 NLP 能带来什么好处?

1.7K7

扫码关注云+社区