句法分析判斷輸入的單詞序列(通常爲句子)的構成是否合乎給定的語法,並經過構造句法樹來肯定句子的結構以及各層次句法成分之間的關係,即肯定一個句子中的哪些詞構成一個短語,哪些詞是動詞的主語或賓語等問題。html
基於統計的方法是現階段句法分析的主流技術。常見的機率句法分析模型包括機率上下文無關模型、基於歷史的句法分析模型、層次化漸進式的句法分析模型和中心詞驅動的句法分析模型。綜合多種模型而實現的句法分析器種類繁多,目前在開源中文句法分析器中比較具備表明性有Stanford parser和 Berkeley parser。前者基於因子模型,後者基於非詞彙化分析模型。java
隨着天然語言應用的日益普遍,特別是對文本處理需求的進一步增長,句法分析的做用越發突出,它在機器翻譯、信息檢索與抽取、問答系統、語音識別等研究領域中都有重要的應用價值。api
Stanford parser 是由斯坦福大學天然語言處理小組開發的開源句法分析器,是基於機率統計句法分析的一個 JAVA 實現。 分析器目前提供了5箇中文文法。函數
①既是一個高度優化的機率上下文無關文法和詞彙化依存分析器,也是一個詞彙化上下文無關文法分析器。工具
②基於權威可靠的賓州樹庫(Penn Treebank)做爲分析器的訓練數據,目前已面向英文、中文、德文、阿拉伯文、意大利文、保加利亞文、葡萄牙文等語種提供句法分析功能。性能
③提供了多樣化的分析輸出形式,除句法分析樹輸出外,還支持分詞和詞性標註文本輸出、短語結構樹輸出、斯坦福依存關係輸出等。學習
④分析器內置了分詞工具、詞性標註工具、基於自定義樹庫的分析器訓練工具等句法分析輔助程序。優化
⑤經過設置不一樣的運行參數,可實現句法分析模型選擇、自定義詞性標記集、文本編碼設置和轉換、語法關係導入和導出等功能的定製。網站
1. 在Stanford官方網站下載最新安裝包ui
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.jar,stanford-parser.jar,slf4j-simple.jar, slf4j-api.jar
4.從步驟2中解壓的文件中把ParserDemo.java和ParserDemo2.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做爲要句法分析的語料文件。
Example :分詞&詞性標註、句法分析樹、依存句法分析
「中國的神威太湖之光計算機被用於天氣預報、製藥研究和工業設計等領域。」
①分詞並詞性標註結果:
②句法分析樹結果:
③依存句法分析結果:
①
定義modelpath用來存放模型文件。中文處理方面的模型文件有:chineseFactored.ser.gz、chinesePCFG.ser.gz、xinhuaFactored.ser.gz、xinhuaFactoredSegmenting.ser.gz、xinhuaPCFG.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個數據正在分析句子中「製藥研究」的依賴關係,調試結果以下:
調試結果分析結束。
⑥
輸出句子的詞性標註結果。
參考資料
【1】《大規模語料庫上的Stanford和Berkeley句法分析器性能對比分析》項煒,金澎;文獻編號1009-3044(2013)08-1984-03
【2】Stanford Parser中標記的中文釋義參考-《Stanford Parser學習入門(3)-標記》-http://www.cnblogs.com/csts/p/5445719.html
參考文件