HongJiapeng的个人博客分享 http://blog.sciencenet.cn/u/HongJiapeng

博文

瞎扯 · 语义分析与理解

已有 2399 次阅读 2014-8-26 10:33 |系统分类:科研笔记

前言  

       最近不知道哪来的想法,突然拿到一个句子就开始分析它的结构和语义。然后连可行性什么的都没有考虑就开始研究需要定义哪些东西。。。再然后在思考的时候还感觉有点心得。

       只是,现在想想,好像没有什么实质性的内容。主要还是自己一开始就没有考虑好就开始着手研究,然后就像瞎扯一样做出了一点现在在我看来没有什么意义的东西。我实现不了,也不知道能否实现。如果有哪位大侠能够把它程序话,那想必也是极好的。只是我就没有那个能力了。

       鉴于我水平太差,只能把想法贴上来,后续的研究可能也不会进行了。如果我真的有能力把它程序话的话,我会坚持把这个想法形成一个体系。现在,就只是叹息了。。。

       废话好多。接下来就把我胡思乱想的内容贴上来,总共有三部分内容,每部分在做的时候想法也有些不同,因此对语句的语义解析程度也不同。大虾们看到下面的瞎扯(应该不会看到滴)请勿喷。。。

       Warning:下方纯属瞎扯,慎入。

Part 1

       从几个例子开始:

1.    今天       你             订阅   ...报纸   了吗?

      =>时间     主语                 事情 /问题

      =>@today    自己      是不是订阅...了?/有没有订阅...?

      =>  @today ,@ask(@myself 有没有@do(订阅...))?

 

本例子属于咨询、提问类。

 

2.    你          觉得             他说的      是对      的吗?

     =>主语       表看法                   看法类问题

     =>@myself    看法/观点     问题主语    是不是对的 ?        

     =>@myself , @comment(@say(他), @state(对)) ?

 

本例子属于看法、观点类。

 

3.   大四了 ,                                  旅行          还是         实习   ?  

   =>   时间           主语缺省                 选择类问题

   =>@time(大四)    默认为@myself   @do(旅行)   还是/or   @do(实习) ?  

   =>       @time(大四) , @myself @do(旅行) 还是/or @do(实习) ?

 

本例子属于选择类。

 

  • 注:上面的例子的表示形式还不够规范!比如有必要定义@say(),@comment(),@ask()吗?还是将它们设计为一个大类里面的一个子类(继承),还是有更加规范统一的定义?需要好好考虑一下。

 

 

Part 2

       考虑到一般的事件都涉及到“时间”,“地点”,“人物”,“事情”,在语义分析上,一个事件能表达一个完整的语义。因此,我们至少需要设计以下几个函数/类/方法(系统预定义):

 

  • @time()     ------->  @now() ; @today()

  • @people()  ------->  @myself() ; @speaker()

  • @place()    ------->  @here() ; @everywhere()

  • @do()        ------->  @doNothing() ; @nowDoing()

  • @reason()  ------->  @noReason()

  • ......

       此外,还应该预定义一些常量:

  • UNKNOWN -------未知,适用于上面各种类型

  • ......

       还应该有一些常用的介词、否定词、疑问词、谓语动词等:

  • 还是/or

  • 是不是/is or not

  • 有没有/do @people() ... have?

  • 不是/not

  • 没有/do not have

  • 却、但是/but

  • 是/is

  • 有/has、have

  • 还、仍然/still

  • ......

       除此之外,还应该有什么?远不止现在所想到的。

 

Part 3

       再举几个例子分析一下:



       下面的例子说明了有必要定义@consensus()、@comment()来表达一类观点、判断。

 

1.               当局集团                          当年          是           吃卢布奶       长大的。

   =>               主语                               时间     表判断                事    情

   =>   @abstractPeople(当局集团)     @time(当年)    是    @do(吃卢布奶)--->@do(长大)  

   =>@consensus(@time(当年), @abstractPeople(当局集团) , @do(长大, @reason(@do(吃卢布奶))))

 

·        

    • 在@consensus()方法中,一般不包含表示判断的谓语动词,如:是/不是/有/没有

    • @consensus()和@comment()方法的不同之处在于,@comment()表示自己需要就某个问题给出评论、观点,而  @consensus()则表示语句块中的主语的观点。

 

2.    如何     看待   台湾媒体    因    柯震东     被捕     事件   认为    中国法制     还    停留    在古代?

   =>       提出疑问       主语                 表   示   原  因                   事     情 /观     点

   =>给出看法 @abstractPeople(台湾媒体)  @reason(@people(柯震东), @do(被捕)) @consensus(@abstractPeople(中国法制), still @do(停留) @abstractPlace(@time(古代)))  

   =>@comment(@abstractPeople(台湾媒体),@consensus(@abstractPeople(中国法制), still @do(停留, @abstractPlace(@time(古代))),@reason(@people(柯震东), @do(被捕))))

 

·        

    • 这里还可以考虑将被动句改为主动句,不过修改过程中涉及到主语的寻找问题,在句子中未必会给出主语,因此保留被动句也是可行的,只是机器始终不了解被动句改为主动句之后主语是谁,可能需要一个学习的过程,让机器认识、学习一些基本常识,比如“被捕”意味着一般是警察去逮捕...。

    • 这里出现了一个新的表达,@abstractPlace(@time())在这里应该表示一个特定的时空。是否需要增加一种新的方法(@space_time())还需要再讨论,目前来说,用抽象地点(@abstractPlace())嵌套时间(@time())可以表示常见的时空。

    • 这个句子设计到了@consensus()方法和@comment()方法,表现了两个方法的不同之处。

 

       由此,考虑增加一些方法:

  • @comment()

  • @consensus()

  • @people()      ------->  @abstractPeople()

  • @place()        ------->  @abstractPlace()

 

       这个东西有作用吗?现在想想,我真的没想到!不过看到这些内容还是有点激动。不过大概过些时日就会觉得这个一无是处了。把这些瞎扯的内容搬上博客来,希望不会被投诉!

 




https://blog.sciencenet.cn/blog-1748154-822371.html


下一篇:胡思乱想与科研
收藏 IP: 202.38.236.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-9-27 11:55

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部