Java正则判断中文字符串句型_NLP中文句子类型判别和分类实现
目錄
一、中文句子類型主要類別
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、陳述句
陳述句的五種基本句型:
主語+謂語(及物動詞)+賓語
主語+謂語(及物動詞)+間接賓語+直接賓語
主語+謂語(及物動詞)v.+賓語+賓語補足語;
其中,主語為首中的主語一般為人稱,復合句一般有多個并列的動賓結構。
2、感嘆句
帶有濃厚的感情的句子。它表示快樂、驚訝、悲哀、厭惡、恐懼等濃厚的感情。感嘆句一般用降調,句末都用嘆號(!)表示
由嘆詞構成的感嘆句
哎呦!救命呦!
由名詞構成的感嘆句
天哪!這一定是沒了命了!
口號或祝詞式的感嘆句
各族人民大團結萬歲!
由“多、多么、好、真”等副詞和句尾語氣詞構成的感嘆句
那該有多好啊!
3、祈使句
祈使句的作用是要求、請求或命令、勸告、叮囑、建議別人做或不做一件事。
祈使句的句末一般用感嘆號,但是有些祈使句的語氣較弱,可以用句號結尾。
祈使句可以用語氣詞“吧”作結尾,也可以不用語氣詞。
祈使句可以表示命令、請求、禁止、勸阻等。 祈使句中的主語常常被省去。
(1)表示命令的祈使句:保持肅靜!起立!立定!站起來!快去救火!等
(2)表示請求的句式:請……(請等我一會);例:請給我們多提意見!您請坐啊!這個問題你來回答吧!幫幫我的忙吧!等
(3)表示禁止的句式:不準……,不要……,別……(此處不準停車!);例:別動!不許胡說!此處不準吸煙!你不要去!誰也不要隨便說話!等
(4)表示勸阻的句式:請勿……(請勿在車廂內飲食);例:要好好聽老師話啊!你們幾個休息一會兒吧!大家都少說幾句吧!你們可別拿他開玩笑了!
4、疑問句(參看)
(1)是非問句
主要特點是回答時用肯定或者否定答句,是非問句一般用語氣助詞“嗎”;
比如:會|是…嗎,好嗎,對嗎,是嗎,可以嗎,能嗎,信嗎,會嗎,怕嗎,算嗎等。
(2)特指問句(疑問詞問句)
特指問句的語序與陳述句相同,提問哪個部分,就把疑問詞語放在哪個部分的位置上,加上疑問語調,陳述句就變成了特指問句。
特指問句中的疑問詞語絕大多數為疑問代詞,如“誰、哪兒、什么”等;還有一些疑問詞語為“多+adj”格式,如“多大、多高、多長”等。
(3)選擇問句
選擇問句用選擇形式提出兩種(或多種)不同情況,要求對方選擇其中一種情況作為回答。選擇問句常用“是……還是……”連接,“是”也可以省略。
(4)正反問句
正反問句是把謂語的肯定形式和否定形式并列起來然后提問的疑問句,回答者可選擇其中之一作為回答。正反問句可以在句尾加或者不加“呢”,但是不能加“嗎”。
比如:會不會,是不是,能不能,信不信,怕不怕,可不可以,算不算等。
(5)反問句
反問句是用疑問句的形式來表示肯定或否定的意義,帶有很強的強調意味。
比如:難到,難道不,怎么會,怎能,怎么能,莫非,難不成,不是嗎等。
注意:是非問句和正反問句的差異,是非問句一般用語氣助詞“嗎”,是非問句和正反問句關聯性很大,有的比較難區分。
5、特殊句
關于特殊句中的把字句、被字句、存在句、連字句和是字句等都可以通過關鍵詞和語法結構判斷。
(1)存在句
存在句:某處(某人)有/沒有某物
(2)比較句
比較句:現代漢語比較句是指謂語中含有比較詞語或比較格式的句子。
介詞‘比’;太湖比西湖大
固定結構:跟(和,同,與,像)……一樣;今天跟昨天一樣暖和 ?(正則)
以‘有’引進比較對象的比較句;弟弟有(沒有)哥哥那么高
用‘不如’引入比較對象;看這種電影還不如去睡覺
以‘像’引進比較對象;安娜像她媽媽那么漂亮
用‘越來越’比較句子;天氣越來越暖和了
三、將句法分析與正則結合標注句子類型
數據集語料可以選擇公開的對話數據集:
可以使用LTP,StanfordCoreNLP等分析句子類型的語法結構;
根據句子特定結構的關鍵詞,構造正則表達式;
將正則表達式與句法分析結合對疑問句,陳述句和特殊句進行句子類型標注;
可以使用XGBoost等模型進行訓練和測試或者直接使用正則和句法結構進行判別;
四、句子類型調研及規則總結
根據正則和句法分析歸納總結句子類型的規則以及正則pattern和句法結構等;
使用人工標注的句子類型數據進行測試,并逐步完善句法規則;
測試結果達到預期
五、中文句子類型分類工具sentypes實現
1、基于C++中regex庫組件構建正則表達式接口類RegularEX;
2、完成句法分析LTP在Linux下的C++源碼的編譯和測試;
3、構建基于C++的句法分析類Parsing,利用該類能夠進行分詞、詞性標注和句法分析;
4、基于正則類RegularEX、句法分析類Parsing和句子類型規則等完成所有句子類型的分類代碼;
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)如果句子同時有兩種或多種句型,則按優先級標注句子類型;
總結
以上是生活随笔為你收集整理的Java正则判断中文字符串句型_NLP中文句子类型判别和分类实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 林峰资料(林峯个人资料)
- 下一篇: 七夕的来历(七夕节的来历和风俗简短)