博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习笔记CB004:提问、检索、回答、NLPIR
阅读量:6767 次
发布时间:2019-06-26

本文共 5429 字,大约阅读时间需要 18 分钟。

hot3.png

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

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

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

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

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

NLPIR, pip install pynlpir 。下载授权文件

# coding:utf-8import sysimport importlibimportlib.reload(sys)import pynlpirpynlpir.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 自然语言处理》

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

转载于:https://my.oschina.net/u/3482787/blog/1623371

你可能感兴趣的文章
使用 IntraWeb (13) - 基本控件之 TIWLabel、TIWLink、TIWURL、TIWURLWindow
查看>>
浅析新手学seo的困惑及其应对方法
查看>>
MySQL数据库基础教程(下)
查看>>
在Windows 10中启用客户端Hyper-V
查看>>
Delphi 的接口(4) - 接口的属性
查看>>
怎么样编写Protobuf的.proto文件
查看>>
Python代码打包放到PyPI上
查看>>
tree
查看>>
Linux学习笔记——基本命令
查看>>
JAVA阻塞线程池
查看>>
求100以内的素数?
查看>>
Iometer 测试 磁盘 I/O
查看>>
cube和物化视图
查看>>
ffmpeg的中文文档(二)
查看>>
MySQL5.7多实例自动化部署脚本
查看>>
我的友情链接
查看>>
理解Java对象序列化
查看>>
使用python构建基于hadoop的mapreduce日志分析平台
查看>>
Apache虚拟机vhost.conf详细配置
查看>>
Win10下启用Windows照片查看器
查看>>