使用Stanford Parser進行句法分析

原文:http://www.cnblogs.com/Denise-hzf/p/6612574.html

一、句法分析

1、定義

  句法分析判斷輸入的單詞序列(一般爲句子)的構成是否合乎給定的語法,並通過構造句法樹來確定句子的結構以及各層次句法成分之間的關係,即確定一個句子中的哪些詞構成一個短語,哪些詞是動詞的主語或賓語等問題。

2、主流技術

  基於統計的方法是現階段句法分析的主流技術。常見的概率句法分析模型包括概率上下文無關模型、基於歷史的句法分析模型、層次化漸進式的句法分析模型和中心詞驅動的句法分析模型。綜合多種模型而實現的句法分析器種類繁多,目前在開源中文句法分析器中比較具有代表性有Stanford parserBerkeley parser。前者基於因子模型,後者基於非詞彙化分析模型。

3、應用領域

  隨着自然語言應用的日益廣泛,特別是對文本處理需求的進一步增加,句法分析的作用愈加突出,它在機器翻譯、信息檢索與抽取、問答系統、語音識別等研究領域中都有重要的應用價值。

 

二、Stanford Parser

1、簡介

Stanford parser 是由斯坦福大學自然語言處理小組開發的開源句法分析器,是基於概率統計句法分析的一個 JAVA 實現。 分析器目前提供了5箇中文文法。

 

2、優點

①既是一個高度優化的概率上下文無關文法和詞彙化依存分析器,也是一個詞彙化上下文無關文法分析器。

②基於權威可靠的賓州樹庫(Penn Treebank)作爲分析器的訓練數據,目前已面向英文、中文、德文、阿拉伯文、意大利文、保加利亞文、葡萄牙文等語種提供句法分析功能。

③提供了多樣化的分析輸出形式,除句法分析樹輸出外,還支持分詞和詞性標註文本輸出、短語結構樹輸出、斯坦福依存關係輸出等。

④分析器內置了分詞工具、詞性標註工具、基於自定義樹庫的分析器訓練工具等句法分析輔助程序。

⑤通過設置不同的運行參數,可實現句法分析模型選擇、自定義詞性標記集、文本編碼設置和轉換、語法關係導入和導出等功能的定製。

 

三、使用Stanford Parser教程

(一)IDE中運行

1. 在Stanford官方網站下載最新安裝包

http://nlp.stanford.edu/software/lex-parser.html#Download

 

2. 解壓下載後的zip包 stanford-parser-full-2015-12-09.zip,裏面會有數據,依賴包以及demo,還有相關的source code和java doc

3. 使用Eclipse創建項目,名爲stanfordparser,在build path中引入stanford-parser-3.6.0-models.jarstanford-parser.jarslf4j-simple.jar slf4j-api.jar

4.從步驟2中解壓的文件中把ParserDemo.javaParserDemo2.java和data文件夾都複製到Eclipse項目中。

5. 以ParserDemo.java爲例,在Eclipse中右鍵點擊ParserDemo.java文件,設置運行參數Arguments爲:

edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz data/english-onesent.txt

(注意gz和data之間有個空格,空格前是第一個參數,空格後是第二個參數。)

第一個參數是PCFG路徑,models裏已經提供,第二個參數是待分析的數據文件,在data文件夾中。

6.運行,輸出的結果爲:

 

 

(二)命令行中運行

在已解壓的stanford-parser-full-2015-12-09文件夾中,找到lexparser.bat文件。在命令窗口中運行這個文件,得到如下結果,即爲命令行運行結果。

 

 

(三)可視化界面查看句法分析結果

1.在已解壓的stanford-parser-full-2015-12-09文件夾中,找到lexparser-gui.bat文件。在命令窗口中運行這個文件,得到如下可視化界面。

2.點擊Load File選擇要進行句法分析的語料文件。點擊Load Parser選擇model文件,解析器選擇英文。最後點擊Parser>即可生成解析樹。

 

上圖用了stanford-parser-3.6.0-models.jar的model文件,用了english-onesent.txt作爲要句法分析的語料文件。


 

 

上圖用了stanford-chinese-corenlp-2016-01-19-models.jar的model文件,用了chinese-onesent-utf8.txt作爲要句法分析的語料文件。


 

 

四、使用Stanford Parser的實例分析

Example :分詞&詞性標註、句法分析樹、依存句法分析

1、先貼全部代碼

 

 

2、分析的句子

“中國的神威太湖之光計算機被用於天氣預報、製藥研究和工業設計等領域。”

 

3、運行結果

①分詞並詞性標註結果:

 

②句法分析樹結果:

 

③依存句法分析結果:

 

 

4、代碼分析

① 

定義modelpath用來存放模型文件。中文處理方面的模型文件有:chineseFactored.ser.gzchinesePCFG.ser.gzxinhuaFactored.ser.gzxinhuaFactoredSegmenting.ser.gzxinhuaPCFG.ser.gz等。其中factored包含詞彙化信息,PCFG是更快更小的模板,xinhua是根據大陸的《新華日報》訓練的語料,而chinese同時包含香港和臺灣的語料,本程序使用的xinhuaFactoredSegmenting.ser.gz可以對未分詞的句子進行句法解析。

 

 ② 

初始化用於句法分析的類LexicalizedParser,函數loadModel 加載模型文件。

 

 ③ 

調用ParserGrammar.class裏的parse函數,該函數調用tokenize解析函數:首先初始化treebankLanguageBank抽象類的getTokenizerFactory方法,生成解析器tokenizer,將句子分詞並進行詞性標註,結果放在tokens然後返回。

 

 ④ 

調用Tree.class裏的pennPrint方法打印句法分析樹。

 

 ⑤ 

實例化ChineseGrammaticalStructure類。調用GrammaticalStructure類的typedDependenciesCollapsed函數,它會調用typedDependencies方法對句子進行依存句法分析。

例如:調試過程中,運行typedDependencies方法對句子進行依存句法分析中,過程變量elementData的第10個數據正在分析句子中“製藥研究”的依賴關係,調試結果如下:

  • “製藥研究”的支配詞(governor)是“研究”,詞性是“NN”,即下圖的gov-label-values[3]&[4]

 

  • “製藥研究”的從屬詞(dependent)是“製藥”,詞性是“NN”,即下圖的dep-label-values[3]&[4]

 

 

  • “製藥研究”的依存關係(reln)是“nn(名詞組合形式)”,即下圖的reln-shortName

 

  調試結果分析結束。

 

⑥ 

輸出句子的詞性標註結果。

 

參考資料

【1】《大規模語料庫上的Stanford和Berkeley句法分析器性能對比分析》項煒,金澎;文獻編號1009-3044(2013)08-1984-03

【2】Stanford Parser中標記的中文釋義參考-《Stanford Parser學習入門(3)-標記》-http://www.cnblogs.com/csts/p/5445719.html

 

參考文件 

 

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章