NLP中文句子类型判别和分类实现

依然范特西╮ 提交于 2019-12-18 08:21:15

目录

一、中文句子类型主要类别

1、陈述句(statement)

2、特殊句(special)

3、疑问句(question)

二、中文句子类型简单分析

三、将句法分析与正则结合标注句子类型

四、句子类型调研及规则总结

五、中文句子类型分类工具sentypes实现


一、中文句子类型主要类别

1、陈述句(statement)

  • 主语为首(subject_front),例:大家对这件事都很热心
  • 主题为首(theme_front),例:红绿灯,真好玩
  • 复合句(complex),例:他们飞的好高好远,穿过白云,越过海洋

2、特殊句(special)

  • 把字句(ba_struct),例:阳光把冷冷的冬天赶走了
  • 被字句(bei_struct),例:衣服被雨淋湿了
  • 存在句(exist),例:门口有两头狮子
  • 感叹句(sigh),例:真谢谢你!
  • 祈使句(Imperative),例:小心!
  • 连字句(lian_struct),例:我不但眼睛不舒服,好像连耳朵也优点疼
  • 是字句(shi_struct),例:我的爸爸是老师
  • 比较句(compare),例:我的力气比你大

3、疑问句(question)

  • 疑问词问句(特指问句)(question_words),例:你什么时候回来
  • 是非问句(whether),例:你今天会准时下课吗
  • 选择问句(choice),例:他是坐火车来的,还是坐汽车来的
  • 正反问句(pos_and_neg),例:你怕不怕风吹
  • 附加问句(attach),例:这是小明的,是不是
  • 反问句(contrary),例:难道你不喜欢他吗

二、中文句子类型简单分析

1、陈述句

陈述句的五种基本句型:

2、感叹句

带有浓厚的感情的句子。它表示快乐、惊讶、悲哀、厌恶、恐惧等浓厚的感情。感叹句一般用降调,句末都用叹号(!)表示

叹词构成的感叹句

哎呦!救命呦!

名词构成的感叹句

天哪!这一定是没了命了

口号祝词式的感叹句

各族人民大团结万岁!

“多、多么、好、真”等副词和句尾语气词构成的感叹句

那该有多好啊!

3、祈使句

  • 祈使句的作用是要求、请求或命令、劝告、叮嘱、建议别人做或不做一件事
  • 祈使句的句末一般用感叹号,但是有些祈使句的语气较弱,可以用句号结尾。
  • 祈使句可以用语气词“吧”作结尾,也可以不用语气词。
  • 祈使句可以表示命令、请求、禁止、劝阻等。 祈使句中的主语常常被省去。

(1)表示命令的祈使句:保持肃静!起立!立定!站起来!快去救火!等

(2)表示请求的句式:请……(请等我一会);例:请给我们多提意见!您请坐啊!这个问题你来回答吧!帮帮我的忙吧!等

(3)表示禁止的句式:不准……,不要……,别……(此处不准停车!);例:别动!不许胡说!此处不准吸烟!你不要去!谁也不要随便说话!等

(4)表示劝阻的句式:请勿……(请勿在车厢内饮食);例:要好好听老师话啊!你们几个休息一会儿吧!大家都少说几句吧!你们可别拿他开玩笑了!

4、疑问句参看

(1)是非问句

主要特点是回答时用肯定或者否定答句,是非问句一般用语气助词“吗”;

比如:会|是…吗,好吗,对吗,是吗,可以吗,能吗,信吗,会吗,怕吗,算吗等。

(2)特指问句(疑问词问句)

特指问句的语序与陈述句相同,提问哪个部分,就把疑问词语放在哪个部分的位置上,加上疑问语调,陈述句就变成了特指问句。

特指问句中的疑问词语绝大多数为疑问代词,如“谁、哪儿、什么”等;还有一些疑问词语为“多+adj”格式,如“多大、多高、多长”等。

(3)选择问句

选择问句用选择形式提出两种(或多种)不同情况,要求对方选择其中一种情况作为回答。选择问句常用“是……还是……”连接,“是”也可以省略。

(4)正反问句

正反问句是把谓语的肯定形式和否定形式并列起来然后提问的疑问句,回答者可选择其中之一作为回答。正反问句可以在句尾加或者不加“呢”,但是不能加“吗”。

比如:会不会,是不是,能不能,信不信,怕不怕,可不可以,算不算等。

(5)反问句

反问句是用疑问句的形式来表示肯定或否定的意义,带有很强的强调意味。

比如:难到,难道不,怎么会,怎能,怎么能,莫非,难不成,不是吗等。

注意:是非问句和正反问句的差异,是非问句一般用语气助词“吗”,是非问句和正反问句关联性很大,有的比较难区分。

5、特殊句

   关于特殊句中的把字句、被字句、存在句、连字句和是字句等都可以通过关键词和语法结构判断。

(1)存在句

存在句:某处(某人)有/没有某物

(2)比较句

比较句:现代汉语比较句是指谓语中含有比较词语或比较格式的句子。

介词‘比’;太湖比西湖大

固定结构:跟(和,同,与,像)……一样;今天跟昨天一样暖和  (正则)

以‘有’引进比较对象的比较句;弟弟有(没有)哥哥那么高

用‘不如’引入比较对象;看这种电影还不如去睡觉

以‘像’引进比较对象;安娜像她妈妈那么漂亮  

用‘越来越’比较句子;天气越来越暖和了

三、将句法分析与正则结合标注句子类型

  1. 数据集语料可以选择公开的对话数据集:对话数据集下载
  2. 可以使用LTP,StanfordCoreNLP等分析句子类型的语法结构;LTP中文句法分析
  3. 根据句子特定结构的关键词,构造正则表达式;
  4. 将正则表达式与句法分析结合对疑问句,陈述句和特殊句进行句子类型标注;
  5. 可以使用XGBoost等模型进行训练和测试或者直接使用正则和句法结构进行判别;

四、句子类型调研及规则总结

  1. 使用语料:对话语料数据集
  2. 将正则和句法分析结合分析句子:基于Python的正则表达式基于Python的LTP句法分析
  3. 根据正则和句法分析归纳总结句子类型的规则以及正则pattern和句法结构等;
  4. 使用人工标注的句子类型数据进行测试,并逐步完善句法规则;
  5. 测试结果达到预期

五、中文句子类型分类工具sentypes实现

1、基于C++中regex库组件构建正则表达式接口类RegularEX

2、完成句法分析LTP在Linux下的C++源码的编译和测试;

3、构建基于C++的句法分析类Parsing,利用该类能够进行分词、词性标注和句法分析;

4、基于正则类RegularEX、句法分析类Parsing和句子类型规则等完成所有句子类型的分类代码;

5、编写Makefile文件

6、将库文件,模型文件和代码等文件打包,在该文件夹下,执行make命令,即可生成可执行文件sentypes,即为句子类型分类工具;

文件主要包括:(1)依赖的库文件:include、lib、thirdparty;(2)LTP模型:ltp_model;(3)句法分析和正则表达式类的头文件:parsing.h、regular_ex.h;(4)句子类型分类主程序:sentence_type.cpp;(5)Makefile文件

7、sentypes工具包含两个命令参数,分别是输入文件和输出文件,其中,输入文件是句子文件,输出文件是标注好句子类型的结果文件;

例:Linux下运行sentypes工具

$ ./sentypes data/test_sen data/results

其中,输入文件test_sen的格式及部分内容如下

输出文件results的格式及结果如下

注:

句子类型判别工具sentypes的句子优先级为:正反问句,反问句,选择问句,疑问词问句,是非问句;祈使句,把字句,被子句,比较句,存在句,是字句,连字句;陈述句;其他句子。

(1)目前句子类型共包含14类,其中疑问句型5类,特殊句型7类,陈述句中将简单句和复合句归为一类,即主语为首的陈述句型,未识别的句型标注为“other”类。

(2)如果句子同时有两种或多种句型,则按优先级标注句子类型;

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!