精华内容
下载资源
问答
  • 中文自然语言处理NLP

    千次阅读 2019-06-12 20:02:37
    近年来,随着互联网的发展,计算机处理自然语言需求变得越来越迫切,除了比较悠久的机器翻译外,自然语言处理在信息检索、信息抽取、数据挖掘、舆情分析、文本摘要、自动问答系统等方面都获得了很广泛的应用。...

    1. NLP流程和开元框架

    近年来,随着互联网的发展,计算机处理自然语言的需求变得越来越迫切,除了比较悠久的机器翻译外,自然语言处理在信息检索、信息抽取、数据挖掘、舆情分析、文本摘要、自动问答系统等方面都获得了很广泛的应用。
      有关自然语言,特别是语义方面的诸多问题仍未得到解决。目前,完全句法分析、浅层句法分析、信息抽取、词义消歧、潜在语义分析、文本蕴含和指代消解。这些技术都不能完美或者完全的翻译出语言的本义。与程序语言不同,人类语言不具备完整的逻辑结构。
    在这里插入图片描述

    右侧偏重于语义方面,命名实体识别主要用来用识别语料中的专有名词和未登录词的成词情况,如人名、地名、组织结构。但是准确的命名实体识别是以准确的分词和词性标注为前提的。

    语义组块用来确定一个以上的词汇构成的短语结构,即短语级别的标注。主要识别名词性短语、动词性短语、介词短语以及其他类型的短语结构。即语义组块的识别特征必须包含中文分词(命名实体识别)和词性标注。

    语义角色标注是以句子中的谓语动词为中心预测出句子的各个语法成分的语义特征,是句子解析的最后一个环节。语义组块、语义角色标注等分析结果,可以通过机器学习方法转换为知识库的RDF三元组形式,并直接用于自动问答系统。

    在详细讲解NLP的各个模块之前,首先要介绍几个开源的中文类NLP系统。

    优秀的中文分词系统:ICTCLAS分词系统(C++),Ansj中文分词系统(Java),结巴分词(python)

    按照使用的算法不同,下面介绍两大类中文分词模块

    • 基于条件随机场(CRF)的中文分词算法的开源系统
    • 基于张华平NShort的中文分词算法的开源系统

    2. pyltp安装部署

    哈工大提供的pyltp扩展包,扩展包的源码和案例可以从https://github.com/HIT-SCIR/pyltp 下载。下面介绍部署过程

    (1)pyltp安装

    pip install pyltp

    (2)部署语言模型库

    https://pan.baidu.com/share/link?shareid=1988562907&uk=2738088569#list/path=%2F&parentPath=%2F

    2.1使用Ltp3.3进行中文分词

    (1)Ltp3.3安装成功后,新建一个Python文件:

    from pyltp import Segmentor #导入ltp库
    
    model_path = "ltp_data_v3.4.0/cws.model"  #Ltp3.3分词模型库
    segmentor = Segmentor() #实例化分词模块
    segmentor.load(model_path) #加载分词库
    #这里不使用外部词典,仅用Ltp3.3进行中文分词
    
    words = segmentor.segment("在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根节点出发深度探索解空间树")
    print("|".join(words)) #分词后的结果
    

    在|包含|问题|的|所有|解|的|解|空间|树|中|,|按照|深度|优先|搜索|的|策略|,|从|根节点|出发|深度|探索|解|空间|树

    (2) 分词结果的后处理

    观察上述分析结果。“解|空间”、“解|空间|树”、“深度优先”都可以看做一个完整的专有名称:解空间、解空间树、深度优先,而分词器划分的粒度过细。为了获得更精确的结果,可以讲错分的结果合并为专有名词。这就是分词结果的后处理过程。

    postdict={"解|空间":"解空间","深度|优先":"深度优先"}
    #分词后处理--矫正一些错误的记过
    seg_sent = "|".join(words)
    for key in postdict:
        seg_sent=seg_sent.replace(key,postdict[key])
    print(seg_sent)
    
    

    在|包含|问题|的|所有|解|的|解空间|树|中|,|按照|深度优先|搜索|的|策略|,|从|根节点|出发|深度|探索|解空间|树

    2.2使用jieba分词模块

    张华平NShort的中文分词算法是目前大规模中文分词的主流算法。在商用领域,大多数搜索引擎公司都使用该算法作为主要的分词算法。具有算法原理简单、容易理解、便于训练、大规模分词的效率高、模型支持增量扩展、模型占用资源低等优势。

    结巴分词可以支持以下三种分词模式:

    • 精确模式:试图将句子最精确的分开,适合文本分析(类似Ltp的分词模式)
    • 全模式,把句子中所有可以成词的词语都扫描出来,速度非常快,但不能解决歧义
    • 搜索引擎模式,在精确模式的基础上对长词再次切分,提高召回率,适合用户搜索引擎分词
    • 支持繁体分词
    • 支持基于概率的用户词典
    # -*- coding: UTF-8 -*-
    
    import sys
    import os
    import jieba #导入结巴分词库
    
    #结巴分词--全模式
    sent = "在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根节点出发深度探索解空间树"
    wordlist = jieba.cut(sent,cut_all=True)
    print("|".join(wordlist))
    print(type(wordlist))
    
    #结巴分词--精确切分
    wordlist1 = jieba.cut(sent) #cut_all=False
    print("|".join(wordlist1))
    
    #结巴分词--搜索引擎模式
    wordlist2 = jieba.cut_for_search(sent)
    print("|".join(wordlist2))
    
    # jieba.load_userdict('data/userdict.txt') #加载外部词典
    # wordlist3 = jieba.cut(sent) #结巴分词--精确切分
    # print("|".join(wordlist3))
    

    在|包含|问题|的|所有|解|的|解空|空间|树|中|||按照|深度|优先|搜索|的|策略|||从|根|节点|点出|出发|深度|探索|索解|解空|空间|树
    <class ‘generator’>
    在|包含|问题|的|所有|解|的|解|空间|树中|,|按照|深度|优先|搜索|的|策略|,|从根|节点|出发|深度|探索|解|空间|树
    在|包含|问题|的|所有|解|的|解|空间|树中|,|按照|深度|优先|搜索|的|策略|,|从根|节点|出发|深度|探索|解|空间|树

    2.3词性标注

    中文的词性标注比较统一,大多数使用HMM(隐马尔科夫模型)或者最大熵算法,如前文的结巴分词的词性标注实现。为了提高精度,也有使用CRF算法的,如Ltp3.4中的词性标注。

    # -*- coding: UTF-8 -*-
    from pyltp import *#导入ltp库
    
    model_path = "ltp_data_v3.4.0/cws.model"  #Ltp3.3分词模型库
    segmentor = Segmentor() #实例化分词模块
    segmentor.load(model_path) #加载分词库
    
    words = segmentor.segment("在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根节点出发深度探索解空间树")
    postdict={"解|空间":"解空间","深度|优先":"深度优先"}
    #分词后处理--矫正一些错误的记过
    seg_sent = "|".join(words)
    for key in postdict:
        seg_sent=seg_sent.replace(key,postdict[key])
    print(seg_sent)
    
    words_tag = seg_sent.split("|")
    postagger = Postagger() #实例化词性标注类
    postagger.load("ltp_data_v3.4.0/pos.model") #导入词性标注库
    postags = postagger.postag(words_tag)
    for word,postag in zip(words_tag,postags):
        print(word+"/"+postag)
    

    在|包含|问题|的|所有|解|的|解空间|树|中|,|按照|深度优先|搜索|的|策略|,|从|根节点|出发|深度|探索|解空间|树
    在/p
    包含/v
    问题/n
    的/u
    所有/b
    解/v
    的/u
    解空间/n
    树/n
    中/nd
    ,/wp
    按照/p
    深度优先/d
    搜索/v
    的/u
    策略/n
    ,/wp
    从/p
    根节点/n
    出发/v
    深度/n
    探索/v
    解空间/v
    树/n

    # -*- coding: UTF-8 -*-
    
    import jieba.posseg as pseg
    import jieba
    sent = "在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根节点出发深度探索解空间树"
    # jieba.load_userdict('data/userdict.txt') #加载外部词典
    words = pseg.cut(sent)
    for word,flag in words:
        print('%s %s'%(word,flag))
    

    在 p
    包含 v
    问题 n
    的 uj
    所有 b
    解 v
    的 uj
    解 v
    空间 n
    树中 s
    , x
    按照 p
    深度 ns
    优先 vn
    搜索 v
    的 uj
    策略 n
    , x
    从 p
    根 a
    节点 n
    出发 v
    深度 ns
    探索 v
    解 v
    空间 n
    树 v

    3 StandfordNLP

    在使用StandfordNLP系统进行中文词性标注之前,需要安装JDK环境。然后在https://nlp.stanford.edu/software/CRF-NER.shtml 中的https://stanfordnlp.github.io/CoreNLP/index.html#download 中下载两个文件。分别是stanford-chinese-corenlp-2018-10-05-models.jar和stanford-corenlp-full-2018-10-05.zip。
    将stanford-chinese-corenlp-2018-10-05-models.jar复制到stanford-corenlp-full-2018-10-05中
    在这里插入图片描述

    在Python环境下调用Stanfordcorenlp(要事先安装jdk1.8)

    pip install stanfordcorenlp

    • 方式一:直接使用路径
    from stanfordcorenlp import StanfordCoreNLP
     
    nlp = StanfordCoreNLP(r'/root/pyspark/NLP/stanford-corenlp-full-2018-10-05')
    #这里改成你stanford-corenlp所在的目录
    sentence = 'Guangdong University of Foreign Studies is located in Guangzhou.'
    print('Tokenize:', nlp.word_tokenize(sentence))
    print('Part of Speech:', nlp.pos_tag(sentence))
    print('Named Entities:', nlp.ner(sentence))
    print('Constituency Parsing:', nlp.parse(sentence))
    print('Dependency Parsing:', nlp.dependency_parse(sentence))
     
    nlp.close() # Do not forget to close! The backend server will consume a lot memery.
    
    

    Tokenize: [‘Guangdong’, ‘University’, ‘of’, ‘Foreign’, ‘Studies’, ‘is’, ‘located’, ‘in’, ‘Guangzhou’, ‘.’]
    Part of Speech: [(‘Guangdong’, ‘NNP’), (‘University’, ‘NNP’), (‘of’, ‘IN’), (‘Foreign’, ‘NNP’), (‘Studies’, ‘NNPS’), (‘is’, ‘VBZ’), (‘located’, ‘JJ’), (‘in’, ‘IN’), (‘Guangzhou’, ‘NNP’), (’.’, ‘.’)]
    Named Entities: [(‘Guangdong’, ‘ORGANIZATION’), (‘University’, ‘ORGANIZATION’), (‘of’, ‘ORGANIZATION’), (‘Foreign’, ‘ORGANIZATION’), (‘Studies’, ‘ORGANIZATION’), (‘is’, ‘O’), (‘located’, ‘O’), (‘in’, ‘O’), (‘Guangzhou’, ‘CITY’), (’.’, ‘O’)]
    Constituency Parsing: (ROOT
    (S
    (NP
    (NP (NNP Guangdong) (NNP University))
    (PP (IN of)
    (NP (NNP Foreign) (NNPS Studies))))
    (VP (VBZ is)
    (ADJP (JJ located)
    (PP (IN in)
    (NP (NNP Guangzhou)))))
    (. .)))
    Dependency Parsing: [(‘ROOT’, 0, 7), (‘compound’, 2, 1), (‘nsubjpass’, 7, 2), (‘case’, 5, 3), (‘compound’, 5, 4), (‘nmod’, 2, 5), (‘auxpass’, 7, 6), (‘case’, 9, 8), (‘nmod’, 7, 9), (‘punct’, 7, 10)]

    • 启动CoreNLP服务器命令
      java -mx4g -cp “*” edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9001 -timeout 15000
    # coding=utf-8
     
    from stanfordcorenlp import StanfordCoreNLP
    nlp = StanfordCoreNLP('http://localhost', port=9001)
    #这里改成了我们server的地址
    sentence = 'Functions shall be declared at file scope.'
    print(nlp.word_tokenize(sentence))
    print(nlp.pos_tag(sentence))
    print(nlp.ner(sentence))
    print(nlp.parse(sentence))
    print(nlp.dependency_parse(sentence))
    nlp.close()
    
    

    [‘Functions’, ‘shall’, ‘be’, ‘declared’, ‘at’, ‘file’, ‘scope’, ‘.’]
    [(‘Functions’, ‘NNS’), (‘shall’, ‘MD’), (‘be’, ‘VB’), (‘declared’, ‘VBN’), (‘at’, ‘IN’), (‘file’, ‘NN’), (‘scope’, ‘NN’), (’.’, ‘.’)]
    [(‘Functions’, ‘O’), (‘shall’, ‘O’), (‘be’, ‘O’), (‘declared’, ‘O’), (‘at’, ‘O’), (‘file’, ‘O’), (‘scope’, ‘O’), (’.’, ‘O’)]
    (ROOT
    (S
    (NP (NNS Functions))
    (VP (MD shall)
    (VP (VB be)
    (VP (VBN declared)
    (PP (IN at)
    (NP (NN file) (NN scope))))))
    (. .)))
    [(‘ROOT’, 0, 4), (‘nsubjpass’, 4, 1), (‘aux’, 4, 2), (‘auxpass’, 4, 3), (‘case’, 7, 5), (‘compound’, 7, 6), (‘nmod’, 4, 7), (‘punct’, 4, 8)]

    在这里插入图片描述

    ROOT:要处理文本的语句
    IP:简单从句
    NP:名词短语
    VP:动词短语
    PU:断句符,通常是句号、问号、感叹号等标点符号
    LCP:方位词短语
    PP:介词短语
    CP:由‘的’构成的表示修饰性关系的短语
    DNP:由‘的’构成的表示所属关系的短语
    ADVP:副词短语
    ADJP:形容词短语
    DP:限定词短语
    QP:量词短语
    NN:常用名词
    NR:固有名词
    NT:时间名词
    PN:代词
    VV:动词
    VC:是
    CC:表示连词
    VE:有
    VA:表语形容词
    AS:内容标记(如:了)
    VRD:动补复合词
    CD: 表示基数词
    DT: determiner 表示限定词
    EX: existential there 存在句
    FW: foreign word 外来词
    IN: preposition or conjunction, subordinating 介词或从属连词
    JJ: adjective or numeral, ordinal 形容词或序数词
    JJR: adjective, comparative 形容词比较级
    JJS: adjective, superlative 形容词最高级
    LS: list item marker 列表标识
    MD: modal auxiliary 情态助动词
    PDT: pre-determiner 前位限定词
    POS: genitive marker 所有格标记
    PRP: pronoun, personal 人称代词
    RB: adverb 副词
    RBR: adverb, comparative 副词比较级
    RBS: adverb, superlative 副词最高级
    RP: particle 小品词 
    SYM: symbol 符号
    TO:”to” as preposition or infinitive marker 作为介词或不定式标记 
    WDT: WH-determiner WH限定词
    WP: WH-pronoun WH代词
    WP$: WH-pronoun, possessive WH所有格代词
    WRB:Wh-adverb WH副词
    
    关系表示
    abbrev: abbreviation modifier,缩写
    acomp: adjectival complement,形容词的补充;
    advcl : adverbial clause modifier,状语从句修饰词
    advmod: adverbial modifier状语
    agent: agent,代理,一般有by的时候会出现这个
    amod: adjectival modifier形容词
    appos: appositional modifier,同位词
    attr: attributive,属性
    aux: auxiliary,非主要动词和助词,如BE,HAVE SHOULD/COULD等到
    auxpass: passive auxiliary 被动词
    cc: coordination,并列关系,一般取第一个词
    ccomp: clausal complement从句补充
    complm: complementizer,引导从句的词好重聚中的主要动词
    conj : conjunct,连接两个并列的词。
    cop: copula。系动词(如be,seem,appear等),(命题主词与谓词间的)连系
    csubj : clausal subject,从主关系
    csubjpass: clausal passive subject 主从被动关系
    dep: dependent依赖关系
    det: determiner决定词,如冠词等
    dobj : direct object直接宾语
    expl: expletive,主要是抓取there
    infmod: infinitival modifier,动词不定式
    iobj : indirect object,非直接宾语,也就是所以的间接宾语;
    mark: marker,主要出现在有“that” or “whether”“because”, “when”,
    mwe: multi-word expression,多个词的表示
    neg: negation modifier否定词
    nn: noun compound modifier名词组合形式
    npadvmod: noun phrase as adverbial modifier名词作状语
    nsubj : nominal subject,名词主语
    nsubjpass: passive nominal subject,被动的名词主语
    num: numeric modifier,数值修饰
    number: element of compound number,组合数字
    parataxis: parataxis: parataxis,并列关系
    partmod: participial modifier动词形式的修饰
    pcomp: prepositional complement,介词补充
    pobj : object of a preposition,介词的宾语
    poss: possession modifier,所有形式,所有格,所属
    possessive: possessive modifier,这个表示所有者和那个’S的关系
    preconj : preconjunct,常常是出现在 “either”, “both”, “neither”的情况下
    predet: predeterminer,前缀决定,常常是表示所有
    prep: prepositional modifier
    prepc: prepositional clausal modifier
    prt: phrasal verb particle,动词短语
    punct: punctuation,这个很少见,但是保留下来了,结果当中不会出现这个
    purpcl : purpose clause modifier,目的从句
    quantmod: quantifier phrase modifier,数量短语
    rcmod: relative clause modifier相关关系
    ref : referent,指示物,指代
    rel : relative
    root: root,最重要的词,从它开始,根节点
    tmod: temporal modifier
    xcomp: open clausal complement
    xsubj : controlling subject 掌控者
    中心语为谓词
      subj — 主语
     nsubj — 名词性主语(nominal subject) (同步,建设)
       top — 主题(topic) (是,建筑)
    npsubj — 被动型主语(nominal passive subject),专指由“被”引导的被动句中的主语,一般是谓词语义上的受事 (称作,镍)
     csubj — 从句主语(clausal subject),中文不存在
     xsubj — x主语,一般是一个主语下面含多个从句 (完善,有些)
    中心语为谓词或介词   
       obj — 宾语
      dobj — 直接宾语 (颁布,文件)
      iobj — 间接宾语(indirect object),基本不存在
     range — 间接宾语为数量词,又称为与格 (成交,元)
      pobj — 介词宾语 (根据,要求)
      lobj — 时间介词 (来,近年)
    中心语为谓词
      comp — 补语
     ccomp — 从句补语,一般由两个动词构成,中心语引导后一个动词所在的从句(IP) (出现,纳入)
     xcomp — x从句补语(xclausal complement),不存在   
     acomp — 形容词补语(adjectival complement)
     tcomp — 时间补语(temporal complement) (遇到,以前)
    lccomp — 位置补语(localizer complement) (占,以上)
           — 结果补语(resultative complement)
    中心语为名词
       mod — 修饰语(modifier)
      pass — 被动修饰(passive)
      tmod — 时间修饰(temporal modifier)
     rcmod — 关系从句修饰(relative clause modifier) (问题,遇到)
     numod — 数量修饰(numeric modifier) (规定,若干)
    ornmod — 序数修饰(numeric modifier)
       clf — 类别修饰(classifier modifier) (文件,件)
      nmod — 复合名词修饰(noun compound modifier) (浦东,上海)
      amod — 形容词修饰(adjetive modifier) (情况,新)
    advmod — 副词修饰(adverbial modifier) (做到,基本)
      vmod — 动词修饰(verb modifier,participle modifier)
    prnmod — 插入词修饰(parenthetical modifier)
       neg — 不定修饰(negative modifier) (遇到,不)
       det — 限定词修饰(determiner modifier) (活动,这些)
     possm — 所属标记(possessive marker),NP
      poss — 所属修饰(possessive modifier),NP
      dvpm — DVP标记(dvp marker),DVP (简单,的)
    dvpmod — DVP修饰(dvp modifier),DVP (采取,简单)
      assm — 关联标记(associative marker),DNP (开发,的)
    assmod — 关联修饰(associative modifier),NP|QP (教训,特区)
      prep — 介词修饰(prepositional modifier) NP|VP|IP(采取,对)
     clmod — 从句修饰(clause modifier) (因为,开始)
     plmod — 介词性地点修饰(prepositional localizer modifier) (在,上)
       asp — 时态标词(aspect marker) (做到,了)
    partmod– 分词修饰(participial modifier) 不存在
       etc — 等关系(etc) (办法,等)
    中心语为实词
      conj — 联合(conjunct)
       cop — 系动(copula) 双指助动词????
        cc — 连接(coordination),指中心词与连词 (开发,与)
    其它
      attr — 属性关系 (是,工程)
    cordmod– 并列联合动词(coordinated verb compound) (颁布,实行)
      mmod — 情态动词(modal verb) (得到,能)
        ba — 把字关系
    tclaus — 时间从句 (以后,积累)
           — semantic dependent
       cpm — 补语化成分(complementizer),一般指“的”引导的CP (振兴,的)
    
    展开全文
  • 基于机器学习的自动问答系统构建

    千次阅读 2016-09-06 10:24:03
    自动问答系统能够使用户以自然语言提问的形式而不是关键词的组合,提出信息查询需求,系统依据对问题进行分析,从各种数据资源中自动找出准确的答案。从系统功能上讲,自动问答分为开放域自动问答和限定域自动问答。...

      自动问答系统是当前自然语言处理领域一个非常热的方向。它综合运用了知识表示、信息检索、自然语言处理等技术。自动问答系统能够使用户以自然语言提问的形式而不是关键词的组合,提出信息查询需求,系统依据对问题进行分析,从各种数据资源中自动找出准确的答案。从系统功能上讲,自动问答分为开放域自动问答和限定域自动问答。开放域是指不限定问题领域,用户随意提问,系统从海量数据中寻找答案;限定域是指系统事先声明,只能回答某一个领域的问题,其他领域问题无法回答。

      为了测试这个方面可行与否,近期,利用百度知道的相关问答语料,测试了下。


      具体步骤:

      (1)数据预处理:将百度知道的原始数据通过预处理整合成格式规范的数据导入数据库中,方便后续处理,就形成了训练数据所需的原始数据集。

       (2)构建分类器:利用所给数据训练文本分类器模型,在用户提出测试问题时可以将测试问题贴上类别标签,锁定答案的知识范围;、

      (3) 相似问题检索:将测试问题与训练语料库中相同类别下的其它问题进行文本相似度计算,找出相似度较高的问题作为相似问题集合

    (4) 答案抽取:将相似问题集合中的所有答案进行排序,选出最佳答案反馈给用户。


    里面的核心技术是分类器的构建,由于还没采用深度学习的办法,目前只采用SVM分类器进行测试,发现还是可行的。而相似问题计算这种,有很多现成的东东。


      用JAVA代码实现,测试结果如下:


      

    展开全文
  • 自动问答系统能够使用户以自然语言提问的形式而不是关键词的组合,提出信息查询需求,系统依据对问题进行分析,从各种数据资源中自动找出准确的答案。从系统功能上讲,自动问答分为开放域自动问答和限定域自动问答。...

    自动问答系统是当前自然语言处理领域一个非常热的方向。它综合运用了知识表示、信息检索、自然语言处理等技术。自动问答系统能够使用户以自然语言提问的形式而不是关键词的组合,提出信息查询需求,系统依据对问题进行分析,从各种数据资源中自动找出准确的答案。从系统功能上讲,自动问答分为开放域自动问答和限定域自动问答。开放域是指不限定问题领域,用户随意提问,系统从海量数据中寻找答案;限定域是指系统事先声明,只能回答某一个领域的问题,其他领域问题无法回答。

      为了测试这个方面可行与否,近期,利用百度知道的相关问答语料,测试了下。


      具体步骤:

      (1)数据预处理:将百度知道的原始数据通过预处理整合成格式规范的数据导入数据库中,方便后续处理,就形成了训练数据所需的原始数据集。

      (2)构建分类器:利用所给数据训练文本分类器模型,在用户提出测试问题时可以将测试问题贴上类别标签,锁定答案的知识范围;、

      (3) 相似问题检索:将测试问题与训练语料库中相同类别下的其它问题进行文本相似度计算,找出相似度较高的问题作为相似问题集合

           (4) 答案抽取:将相似问题集合中的所有答案进行排序,选出最佳答案反馈给用户。

    展开全文
  • ...  自动问答系统是当前自然语言处理...自动问答系统能够使用户以自然语言提问的形式而不是关键词的组合,提出信息查询需求,系统依据对问题进行分析,从各种数据资源中自动找出准确的答案。从系统功能上讲,自动...

    原文出处:https://blog.csdn.net/sparkexpert/article/details/52447553 

     自动问答系统是当前自然语言处理领域一个非常热的方向。它综合运用了知识表示、信息检索、自然语言处理等技术。自动问答系统能够使用户以自然语言提问的形式而不是关键词的组合,提出信息查询需求,系统依据对问题进行分析,从各种数据资源中自动找出准确的答案。从系统功能上讲,自动问答分为开放域自动问答和限定域自动问答。开放域是指不限定问题领域,用户随意提问,系统从海量数据中寻找答案;限定域是指系统事先声明,只能回答某一个领域的问题,其他领域问题无法回答。

      为了测试这个方面可行与否,近期,利用百度知道的相关问答语料,测试了下。

     

      具体步骤:

      (1)数据预处理:将百度知道的原始数据通过预处理整合成格式规范的数据导入数据库中,方便后续处理,就形成了训练数据所需的原始数据集。

       (2)构建分类器:利用所给数据训练文本分类器模型,在用户提出测试问题时可以将测试问题贴上类别标签,锁定答案的知识范围;、

      (3) 相似问题检索:将测试问题与训练语料库中相同类别下的其它问题进行文本相似度计算,找出相似度较高的问题作为相似问题集合

    (4) 答案抽取:将相似问题集合中的所有答案进行排序,选出最佳答案反馈给用户。

     

    里面的核心技术是分类器的构建,由于还没采用深度学习的办法,目前只采用SVM分类器进行测试,发现还是可行的。而相似问题计算这种,有很多现成的东东。

     

      用JAVA代码实现,测试结果如下:



     

     

    展开全文
  • 从网页公开数据的分析和抽取、情感分析、机器翻译、智能客服、问答系统到聊天机器人,它的重要性不言而喻。整个课程设计紧密围绕学术界最新进展以及工业界的需求,涵盖了能想到的所有核心知识点,并且结合了大量实战...
  • 通过微信公众帐号的对接,Wecenter利用结构化知识库和自然语言的检索,让企业拥有一个专业化的智能交流服务(类似苹果siri),建立一个微信端的crm系统。通过微薄的帐号管理,可以及时的了解微薄数据流中提到的关键...
  • 命名实体识别是信息提取、问答系统、句法分析、机器翻译、面向Semantic Web的元数据标注等应用领域的重要基础工具,在自然语言处理技术走向实用化的过程中占有重要地位。 2.2建设目标 通过建设一个网页可以有效...
  • 九十年代中期,系统的主要特点:利用浅层自然语言处理技术分析问题,并利用信息检索等技术从大规模文本或网页红抽取答案。 由于用户需求的多样性和自然语言的复杂性,没有得到广泛应用。 两大困难:...
  • 实际上我是想说,对于一个DBA来讲,当你拿到一个数据库的时候,你首先需要做的是用最短的时间来了解一下跑在这个库上的是一个什么系统,比如是在线事务(OLTP)系统还是在线分析(OLAP)系统,这对于你做出性能上的...
  • 需求模型的表现形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。需求概念模型的要求包括实现的独立性:不模拟数据的表示和内部组织等;需求模拟技术又分为企业模拟、功能需求模拟和非功能需求...
  • 人群定位:熟悉自然语言处理基本方法,对学习知识图谱算法有需求的学员。 先修内容:Python编程语言 难度系数:中 学习目标 理解知识图谱的基本原理,熟悉Neo4j并具备基本的调用相应python库进行操作的能力。 ...
  • (特别是: python自然语言处理) 2. 论文的实现: 1) 各种高大上的论文实现,却还是没看到一个像样的GitHub项目!(可能我的搜索能力差了点,一直没找到) 2)国外就不举例了,我看不懂! 3. 开源的框架 1)国外...
  • (特别是: python自然语言处理) 2. 论文的实现: 1) 各种高大上的论文实现,却还是没看到一个像样的GitHub项目!(可能我的搜索能力差了点,一直没找到) 2)国外就不举例了,我看不懂! 3. 开源的框架 1)国外...

空空如也

空空如也

1 2 3 4 5
收藏数 92
精华内容 36
关键字:

自然语言问答系统需求分析