当前位置:  开发笔记 > 编程语言 > 正文

自然语言解析,实际例子

如何解决《自然语言解析,实际例子》经验,为你挑选了2个好方法。

我希望使用自然语言解析库来进行简单的聊天机器人.我可以获得词性标签,但我总是想知道.你怎么用POS做的.如果我知道演讲的部分,那么呢?

我想这会对回复有所帮助.但是我可以使用哪些数据结构和架构.



1> Kaarel..:

词性标注器为输入文本中的单词指定标签.例如,流行的Penn Treebank标签集有大约40个标签,例如"复数名词","比较形容词","过去时动词"等.标签也解决了一些模糊性.例如,许多英语单词形式可以是名词或动词,但在其他词语的上下文中,它们的词性是明确的.因此,使用POS标签注释您的文本,您可以回答以下问题:我有多少名词?有多少句子不包含动词?等等.

对于聊天机器人,你显然需要更多.你需要找出文本中的主语和对象,以及它们附加的动词(谓词); 你需要解决anaphors(指向哪个人),否定和量词的范围是什么(例如每个,超过3个)等等.

理想情况下,您需要将输入文本映射到某些逻辑表示(例如一阶逻辑),这可以让您引入推理以确定两个句子在意义上是否相等,或者在蕴涵关系中是否等等.

而POS标签会映射句子

Mary likes no man who owns a cat.

这样的结构

Mary/NNP likes/VBZ no/DT man/NN who/WP owns/VBZ a/DT cat/NN ./.

你宁愿需要这样的东西:

SubClassOf(
   ObjectIntersectionOf(
      Class(:man)
      ObjectSomeValuesFrom(
         ObjectProperty(:own)
         Class(:cat)
      )
   )
   ObjectComplementOf(
      ObjectSomeValuesFrom(
         ObjectInverseOf(ObjectProperty(:like))
         ObjectOneOf(
            NamedIndividual(:Mary)
         )
      )
   )
)

当然,虽然POS标签器的精确度和召回率接近100%,但更复杂的自动处理会更糟糕.

一个优秀的NLP Java库是LingPipe.但是,它不会超出POS标记,分块和命名实体识别.



2> Pontus Gagge..:

自然语言处理广泛而深入,根源至少可以追溯到60年代.你可以开始阅读一般的计算语言学,自然语言生成,生成语法,马尔可夫链,聊天机器人等等.

维基百科有一个简短的库列表,我想你可能已经看过了.Java在NLP中没有悠久的传统,尽管我没有看过斯坦福大学的图书馆.

如果不深入学习语言学和语法,我怀疑你会得到非常令人印象深刻的结果.不是每个人最喜欢的学校科目(或者我听说过 - 爱过我自己!).

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有