一、句法分析
1、定義
句法分析判斷輸入的單詞序列(一般為句子)的構成是否合乎給定的語法,並通過構造句法樹來確定句子的結構以及各層次句法成分之間的關系,即確定一個句子中的哪些詞構成一個短語,哪些詞是動詞的主語或賓語等問題。
2、主流技術
基於統計的方法是現階段句法分析的主流技術。常見的概率句法分析模型包括概率上下文無關模型、基於歷史的句法分析模型、層次化漸進式的句法分析模型和中心詞驅動的句法分析模型。綜合多種模型而實現的句法分析器種類繁多,目前在開源中文句法分析器中比較具有代表性有Stanford parser和 Berkeley parser。前者基於因子模型,后者基於非詞匯化分析模型。
3、應用領域
隨着自然語言應用的日益廣泛,特別是對文本處理需求的進一步增加,句法分析的作用愈加突出,它在機器翻譯、信息檢索與抽取、問答系統、語音識別等研究領域中都有重要的應用價值。
二、Berkeley Parser
1、簡介
Berkeley Parser是由伯克利大學自然語言處理小組開發的開源句法分析器,目前支持的語種主要有英文、中文、德文、阿拉伯文、保加利亞文、法文等。
2、特點
1) Berkeley Parser是一個純粹的基於 PCFG的句法分析器,只能進行成分句法分析。
2) 分析器的輸入形式可以文件為單位 (每行一個句子),分析完成后得到的輸出文件中包含了輸入文件中所有句子的句法分析結果。
3) 默認的分析結果輸出形式是文本,但為了讓分析結果更加直觀,可以設置程序的輸出形式為句法分析樹圖像。
4) 可指定輸出基於一個句子的排名前 n的句法分析樹及每棵樹的概率值。
5) 分析器提供了用於讀取標准樹庫的代碼,可基於用戶指定的樹庫來訓練新的文法。
6) 支持多線程分析,在多處理機系統上能獲得更高的句法分析性能。
7) 由於分析器不含分詞功能,所以必須先借助外部分詞工具來進行分詞,再將經過預處理的分詞結果串作為句法分析器的輸入。
三、使用Berkeley Parser教程——命令行中運行
1. 在Berkeley Parser的github上找到Berkeley Parser的jar包和模型文件並下載。(https://github.com/slavpetrov/berkeleyparser)
2. 一個簡易的Berkeley Parser工具只需要包含:
①berkeleyParser.jar
②模板文件:中文為chn_sm5.gr,英文為eng_sm6.gr
③輸入文件
3. 分析器不含分詞功能,所以必須先借助外部分詞工具來進行分詞,再將經過預處理的分詞結果串作為句法分析器的輸入。
4. 進行parse之前需要將分詞文本中的英文小括號”(“ 和“)”分別轉化為”-LRB-”和”-RRB-”。Berkeley parser不能自動的進行這樣的轉化。中文parser輸入輸出標記不能用參數-inputFile和-outputFile,必須用”<”和”>”指定,否則會出現亂碼問題。
5. 基本命令:
①打印parser的所有選項:
輸入:
輸出:
②對英文句子進行句法分析:
輸入:
③對中文句子進行句法分析:
輸入: 
(參數解釋:-mx1g 給java虛擬機分配的最大內存為1)
四、使用Berkeley Parser實例
1、中文句法分析
(1)分詞包:BerkeleyParser-1.7.jar
(2)輸入文件:chinese-ansi-input.txt(ANSI編碼)
(3)待分析的句子:中國 的 神威 太湖 之 光 計算機 被 用於 天氣 預報 、 制葯 研究 和 工業 設計 等 領域 。
(4)使用模板文件:chn_sm5.gr
(5)輸出結果到文件:chinese-output.txt
(6)命令行運行的代碼:

(7)輸出文件的內容:

2、英文句法分析
(1)分詞包:BerkeleyParser-1.7.jar
(2)輸入文件:english-input.txt(UTF8編碼)
(3)待分析的句子:One meets its destiny on the road he takes to avoid it.
(4)使用模板文件:eng_sm6.gr
(5)輸出結果到文件:english-output.txt
(6)命令行運行的代碼:

(7)輸出文件的內容:

參考資料
【1】文獻《大規模語料庫上的Stanford和Berkeley句法分析器性能對比分析》項煒,金澎;
【2】Berkeley parser -《句法分析工具指南(parser guideline) 》- http://3y.uu456.com/bp-8d672929ed630b1c59eeb595-1.html
參考文件


