句法分析判斷輸入的單詞序列(通常爲句子)的構成是否合乎給定的語法,並經過構造句法樹來肯定句子的結構以及各層次句法成分之間的關係,即肯定一個句子中的哪些詞構成一個短語,哪些詞是動詞的主語或賓語等問題。html
基於統計的方法是現階段句法分析的主流技術。常見的機率句法分析模型包括機率上下文無關模型、基於歷史的句法分析模型、層次化漸進式的句法分析模型和中心詞驅動的句法分析模型。綜合多種模型而實現的句法分析器種類繁多,目前在開源中文句法分析器中比較具備表明性有Stanford parser和 Berkeley parser。前者基於因子模型,後者基於非詞彙化分析模型。java
隨着天然語言應用的日益普遍,特別是對文本處理需求的進一步增長,句法分析的做用越發突出,它在機器翻譯、信息檢索與抽取、問答系統、語音識別等研究領域中都有重要的應用價值。git
Berkeley Parser是由伯克利大學天然語言處理小組開發的開源句法分析器,目前支持的語種主要有英文、中文、德文、阿拉伯文、保加利亞文、法文等。github
1) Berkeley Parser是一個純粹的基於 PCFG的句法分析器,只能進行成分句法分析。多線程
2) 分析器的輸入形式能夠文件爲單位 (每行一個句子),分析完成後獲得的輸出文件中包含了輸入文件中全部句子的句法分析結果。ide
3) 默認的分析結果輸出形式是文本,但爲了讓分析結果更加直觀,能夠設置程序的輸出形式爲句法分析樹圖像。工具
4) 可指定輸出基於一個句子的排名前 n的句法分析樹及每棵樹的機率值。性能
5) 分析器提供了用於讀取標準樹庫的代碼,可基於用戶指定的樹庫來訓練新的文法。ui
6) 支持多線程分析,在多處理機系統上能得到更高的句法分析性能。編碼
7) 因爲分析器不含分詞功能,因此必須先借助外部分詞工具來進行分詞,再將通過預處理的分詞結果串做爲句法分析器的輸入。
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)
(1)分詞包:BerkeleyParser-1.7.jar
(2)輸入文件:chinese-ansi-input.txt(ANSI編碼)
(3)待分析的句子:中國 的 神威 太湖 之 光 計算機 被 用於 天氣 預報 、 製藥 研究 和 工業 設計 等 領域 。
(4)使用模板文件:chn_sm5.gr
(5)輸出結果到文件:chinese-output.txt
(6)命令行運行的代碼:
(7)輸出文件的內容:
(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
參考文件