句翻譯x模板 再談*小熵原理:“飛象過河”之句模版和語言結(jié)構(gòu) | 附開源NLP庫
日期:2023-03-11 12:39:36 / 人氣: 653 / 發(fā)布者:成都翻譯公司
事實(shí)上,有了前一文的構(gòu)建詞庫的經(jīng)驗(yàn),事實(shí)上就不難構(gòu)思生成句子模版的算法了。每個(gè)語義塊由一個(gè)主的句模版生成,其中句模版的占位符部分也是一個(gè)語義塊;有了對句子結(jié)構(gòu)的假設(shè),我們就可以描述句模版識別算法了。因?yàn)闃?gòu)建句模版是基于詞來統(tǒng)計(jì)的,因此還需要一個(gè)分詞函數(shù),可以用自帶的分詞器,也可以用外部的,比如結(jié)巴分詞?;诰淠0鎭磉M(jìn)行句子結(jié)構(gòu)解析。作者丨蘇健林
單位丨廣州火焰信息技術(shù)有限公司
研究方向丨NLP,神經(jīng)網(wǎng)絡(luò)
個(gè)人主頁丨kexue.fm
在上一篇文章中,我們根據(jù)*小熵原理進(jìn)行了一系列數(shù)學(xué)推導(dǎo),*終得到(2.15)和(2.17)) ,這告訴我們應(yīng)該合并互信息比較大的兩個(gè)元素,這樣有助于降低“學(xué)習(xí)難度”。
從單詞到單詞,從單詞到短語,檢查相鄰元素是否可以組合成一個(gè)好的“套路”。但為什么例程必須相鄰?
當(dāng)然,它不一定是相鄰的。當(dāng)我們學(xué)習(xí)一門語言時(shí),我們不僅會學(xué)習(xí)單詞和短語,還會學(xué)習(xí)“固定搭配”,這意味著如何使用單詞是合理的。這是語法的一種體現(xiàn),也是本文所要表達(dá)的。查詢,希望*終實(shí)現(xiàn)一定程度的無監(jiān)督句法分析。
因?yàn)檫@次考慮的是跨鄰詞的語言聯(lián)想,我把它命名為“飛象過江”,正是:“套路寶典”的第二種——“飛象過江”。
語言結(jié)構(gòu)
對于大多數(shù)人來說,他們并不真正了解什么是語法。他們腦子里只有一些“固定搭配”、“固定風(fēng)格”,或者更正式的稱呼“模板”。在大多數(shù)情況下,我們會根據(jù)模板說合理的話。不同的人可能有不同的說話模板。這是個(gè)人的說話風(fēng)格,甚至是“口頭禪”。
句子模板
比如“What is the Y of X”就是一個(gè)簡單的模板,里面有一些明確的詞“of”、“is”、“what”,還有一些占位符X、Y,就用兩個(gè)X和Y代替一個(gè)名詞,你得到一個(gè)語法句子(如果它是真的,那是另一回事)。此類模板的例子有很多,例如“X 和 Y”、“X 的 Y”、“X 可以是 Y”、“Y 有什么 X 有”、“是 XY 還是 Z”等等。
▲句子模板和相互嵌套的例子
當(dāng)然,雖然可以提取出盡可能多的模板,但有限的模板無法覆蓋千變?nèi)f化的語言想象,所以更重要的是,它是基于模板的嵌套使用。例如,對于模板“X 的 Y 是什么”,可以將 X 替換為模板“A 和 B”以得到“(A 和 B) 的 Y 是什么”。這樣,如果模板相互嵌套,你可以得到相當(dāng)多的句子。
等價(jià)類
那么,有了模板“X的Y是什么?”,我們怎么知道X和Y分別可以填什么?
剛才我們說“隨機(jī)使用兩個(gè)名詞”,但是按照我們的想法,到現(xiàn)在我們只會建立一個(gè)詞庫。我們甚至不知道什么是“名詞”,更不用說我們應(yīng)該填寫名詞了。. 事實(shí)上,我們不需要提前知道任何事情。我們可以通過一個(gè)大的語料庫來提取每個(gè)候選位置的“等價(jià)類”。X的候選詞構(gòu)成一個(gè)詞等價(jià)類,Y的候選詞也構(gòu)成一個(gè)詞。等價(jià)類等
▲句型和等價(jià)物的概念
當(dāng)然,這樣的場景是理想的。其實(shí)我們能得到的原始語料要差很多,但不管怎樣,我們還是先解決理想情況,實(shí)際使用的時(shí)候再考慮一般情況。
下面我們來探討如何從大量原始語料中一一獲取句子模板,考慮如何識別句子中使用的句子模板,甚至挖掘出句子的層次結(jié)構(gòu)。
生成模板
其實(shí),有了上一篇建詞庫的經(jīng)驗(yàn),想出一個(gè)生成句子模板的算法其實(shí)并不難。
在構(gòu)建詞庫時(shí),我們的統(tǒng)計(jì)對象是單詞?,F(xiàn)在我們的統(tǒng)計(jì)對象是詞。另外,詞是由相鄰的詞組成,但句子模板可能不是由相鄰的詞組成(否則會退化為詞或詞組),所以我們還需要考慮跨詞共現(xiàn),也就是Skip Word2Vec 中的 Gram 模型。
有向無環(huán)圖
有向無環(huán)圖(DAG)實(shí)際上是 NLP 中經(jīng)常遇到的一種圖論模型。實(shí)際上,一元分詞模型也可以直接抽象為有向無環(huán)圖上的*短路徑規(guī)劃問題。這里的候選模板集的構(gòu)建也需要一個(gè)有向無環(huán)圖。
因?yàn)榭紤]了Skip Gram模型,我們可以把句子中的“compact”(較大的互信息)“詞對”連接起來。從圖論的角度來看,這構(gòu)成了一個(gè)“有向無環(huán)圖”:
我們直接把圖上的所有路徑都取出來,如果穿過相鄰的節(jié)點(diǎn),則插入一個(gè)占位符(下面全X代表占位符),這樣就可以得到候選模板集了。例如從上圖中提取的候選模板為:
算法步驟
我們可以將上述過程詳細(xì)描述如下:
1. 將語料分成句子,切詞;
2. 選擇一個(gè)窗口大小的窗口,從語料中統(tǒng)計(jì)每個(gè)詞(pa, pb)的出現(xiàn)頻率,以及窗口大小(pab)中任意兩個(gè)詞的共現(xiàn)頻率;
3. 分別設(shè)置頻率閾值min_prob和互信息閾值min_pmi;
4. 遍歷所有句子:
4.1. 為每個(gè)句子構(gòu)造一張圖片,句子中的詞作為圖片上的點(diǎn)處理;
4.2. 句子窗口中的詞對(a, b),若滿足pab>min_prob和>mi_pmi句翻譯x模板,則在圖;
4.3. 找出圖上的所有路徑(孤立點(diǎn)也算路徑),作為候選模板加入統(tǒng)計(jì);
5. 統(tǒng)計(jì)每個(gè)“準(zhǔn)模板”出現(xiàn)的頻率,將“準(zhǔn)模板”按頻率降序排序,只取第一部分。
這個(gè)算法可以用來提取句子模板,也可以簡單的提取詞組(phrases),只要窗口設(shè)置為1就可以了。 所以基本上包括了上一篇提到的詞庫構(gòu)建,所以上面的算法是一個(gè)泛化提取框架。
效果展示
以下是從百度知道的問題集中提取的一些句子模板(數(shù)字是統(tǒng)計(jì)的頻率,可以忽略):
請注意,實(shí)際上,由兩個(gè)占位符(如“X of X”和“X how X”)夾在中間的單詞模板是微不足道的。它只告訴我們這個(gè)詞可以插入一個(gè)句子中。因此,為了看效果,我們排除了這種類型的模板,得到:
從結(jié)果來看,我們的句子模板生成確實(shí)有效。因?yàn)檫@些句子模板幫助我們發(fā)現(xiàn)語言使用的規(guī)則。例如:
1.“X?”、“X?”、“How about X”模板的占位符出現(xiàn)在前面,表示這些詞可以放在問題的末尾(我們使用的語料庫是問題);
2.模板的占位符如“IX”、“Seeking X”、“Why X”、“Excuse me X”出現(xiàn)在后面,表示這些詞可以放在問句的開頭;
3. “Thank you”和“What to do”模板沒有出現(xiàn)在占位符中,表示可以自行組成句子;
4. “X 意味著 X”、“X 有什么 X 有”等模板反映了語言的一些固定搭配。
從一般的角度來看,這些模板在句法層面描述了語言現(xiàn)象。當(dāng)然,為了不與當(dāng)前主流的句法分析相混淆,我們不妨稱之為語言結(jié)構(gòu)規(guī)律,或者直接稱之為“句子模板”。
結(jié)構(gòu)分析
和分詞一樣,在構(gòu)造句子模板的時(shí)候,我們也需要一個(gè)算法來識別句子中使用了哪些模板。只有這樣,才能從語料中識別出單詞的等價(jià)類。
回顧分詞算法,分詞只是一個(gè)句子切分問題。被分割的詞沒有“洞”(占位符)。如果要識別句子中使用了哪些模板,這些模板都有“洞”。并且可能相互嵌套,造成識別困難。然而,一旦我們能夠做到這一點(diǎn),我們就會得到句子的層次分解,這是一個(gè)非常有吸引力的目標(biāo)。
投射假設(shè)
為了實(shí)現(xiàn)句子的層次分解,我們可以先借鑒句法分析中普遍使用的“投射假設(shè)”。
語言的投影大致是指,如果一個(gè)句子可以分成幾個(gè)“語義塊”,那么這些語義塊是不重疊的。換句話說,如果第3個(gè)詞1、2、構(gòu)成語義塊,第5個(gè)詞構(gòu)成語義塊,這種情況是允許的,并且1、2、4個(gè)詞形成語義塊,第5個(gè)詞3、形成語義塊。這種情況是不可能的。大多數(shù)語言,包括中文和英文,基本滿足投影。
結(jié)構(gòu)假設(shè)
為了完成句子層次的分解,我們需要對句子的構(gòu)成結(jié)構(gòu)做更完整的假設(shè)。受投射假設(shè)的啟發(fā),作者認(rèn)為句子的結(jié)構(gòu)可以假設(shè)如下:
1. 每個(gè)語義塊都是句子的一個(gè)連續(xù)子串,句子本身也被視為一個(gè)語義塊;
2. 每個(gè)語義塊由一個(gè)主句模板生成,句子模板的占位符部分也是一個(gè)語義塊;
3. 每一個(gè)單獨(dú)的詞都可以看作是一個(gè)瑣碎的句子模板,或者是一個(gè)*小粒度的語義塊。
說白了,這三個(gè)假設(shè)可以概括為一個(gè)句子:每個(gè)句子都是通過嵌套句子模板生成的。
乍一看,這個(gè)假設(shè)不夠合理,但仔細(xì)想想,你會發(fā)現(xiàn)這個(gè)假設(shè)足以描述大多數(shù)句子的結(jié)構(gòu)。讀者可能會懷疑“是否可以并行使用兩個(gè)句子模板而不是嵌套”?答案是:不應(yīng)該。
因?yàn)槿绻l(fā)生這種情況,您只需要將“并行”本身視為模板。例如,如果將“X and X”視為模板,則“X and X”模板中的兩個(gè)語義塊是平行的。是的,它甚至可以與自身嵌套以獲得“X and (X and X)”來描述更多并行現(xiàn)象。
正是因?yàn)槲覀儗φZ言結(jié)構(gòu)做了這個(gè)假設(shè),所以一旦我們確定了一個(gè)句子的*優(yōu)句子模板組合,我們就得到了句子層次——因?yàn)楦鶕?jù)假設(shè),模板以嵌套的方式組合是的,嵌套表示遞歸,遞歸是一個(gè)層次樹結(jié)構(gòu)。
分解算法
在句子結(jié)構(gòu)的假設(shè)下,我們可以描述句子模板識別算法。首先,讓我們重述分詞算法。一元分詞算法的思想是將句子切分成詞,使這些詞的概率的對數(shù)之和*大(信息量之和*?。?。
還可以改變表達(dá)方式:找一系列詞來覆蓋句子中的每個(gè)詞,不重復(fù),使這些詞的概率的對數(shù)之和*大(信息量之和*?。?)。
過去,我們會認(rèn)為分詞是對句子進(jìn)行分割,但這個(gè)等價(jià)的表達(dá)方式恰恰相反,涵蓋了句子。有了這種逆向思維,可以提出一種模板識別算法:
找一系列的句子模板來覆蓋句子中的每個(gè)詞,不重復(fù)、不遺漏、不重疊,使這些模板的概率的對數(shù)之和*大(信息量之和*小)。
當(dāng)然,這只是一個(gè)想法。在實(shí)現(xiàn)過程中,主要難點(diǎn)是占位符的處理。也就是說,句子中的每個(gè)單詞都代表單詞本身和占位符。這種二元性使得掃描和識別變得困難。
幸運(yùn)的是,如果我們按照上面假設(shè)的語言結(jié)構(gòu),我們可以將其轉(zhuǎn)化為遞歸操作:在*優(yōu)結(jié)構(gòu)分解方案中,主模板下每個(gè)語義塊的分解方案也是*優(yōu)的。
▲句子層次分析,包括句子模板的嵌套調(diào)用
所以我們可以得到算法:
1. 掃描句子中所有可能的模板(通過Trie樹結(jié)構(gòu)可以快速掃描);
2. 每個(gè)分解方案的得分等于句子主模板的得分,加上每個(gè)語料庫的*優(yōu)分解方案的得分。
結(jié)果顯示
下面是一些簡單示例的演示。它通過有限數(shù)量的模板進(jìn)行分析??梢钥闯觯渥訉哟蔚姆治龃_實(shí)已經(jīng)初步實(shí)現(xiàn)了。
+---> (雞蛋)可以(吃)嗎
| +---> 雞蛋
| | +---> 雞蛋
| +---> 可以
| +---> 吃
| | +---> 吃
| +---> 嗎
+---> (牛肉雞蛋)可以(吃)嗎
| +---> 牛肉雞蛋
| | +---> 牛肉
| | +---> 雞蛋
| +---> 可以
| +---> 吃
| | +---> 吃
| +---> 嗎
+---> (蘋果)的(顏色)是(什么)呢
| +---> 蘋果
| | +---> 蘋果
| +---> 的
| +---> 顏色
| | +---> 顏色
| +---> 是
| +---> 什么
| | +---> 什么
| +---> 呢
+---> (雪梨和蘋果和香蕉)的(顏色)是(什么)呢
| +---> (雪梨和蘋果)和(香蕉)
| | +---> (雪梨)和(蘋果)
| | | +---> 雪梨
| | | | +---> 雪梨
| | | +---> 和
| | | +---> 蘋果
| | | | +---> 蘋果
| | +---> 和
| | +---> 香蕉
| | | +---> 香蕉
| +---> 的
| +---> 顏色
| | +---> 顏色
| +---> 是
| +---> 什么
| | +---> 什么
| +---> 呢
當(dāng)然,報(bào)告好壞是不可能的,還有一些失敗的例子:
+---> (我的美味)的(蘋果的顏色)是(什么)呢
| +---> (我)的(美味)
| | +---> 我
| | | +---> 我
| | +---> 的
| | +---> 美味
| | | +---> 美味
| +---> 的
| +---> (蘋果)的(顏色)
| | +---> 蘋果
| | | +---> 蘋果
| | +---> 的
| | +---> 顏色
| | | +---> 顏色
| +---> 是
| +---> 什么
| | +---> 什么
| +---> 呢
+---> (蘋果)的(顏色)是(什么的意思是什么)呢
| +---> 蘋果
| | +---> 蘋果
| +---> 的
| +---> 顏色
| | +---> 顏色
| +---> 是
| +---> (什么)的(意思)是(什么)
| | +---> 什么
| | | +---> 什么
| | +---> 的
| | +---> 意思
| | | +---> 意思
| | +---> 是
| | +---> 什么
| | | +---> 什么
| +---> 呢
我們稍后會分析失敗的例子。
文章摘要
一臉懵逼,各種話想吐,請先看本段。
拼圖游戲
從單詞和短語到句子模板,我們似乎都在玩拼圖游戲:我們發(fā)現(xiàn)這兩個(gè)部分盡可能地協(xié)同工作,所以讓我們把它們放在一起。因?yàn)閷⒋箜?xiàng)互信息組合起來,作為一個(gè)整體,有利于降低整體信息熵,也降低整體學(xué)習(xí)難度。
關(guān)于句型,如果你在中文世界搞不清楚,那就回顧一下我們在小學(xué)和初中是如何學(xué)英語的。那我們應(yīng)該已經(jīng)學(xué)了很多英語句子模板了。
有什么用
“句子模板”是本文提出的一個(gè)新概念,用它來識別語言結(jié)果也是一種新的嘗試。讀者不禁要問:這玩意有什么用?
我認(rèn)為回答這個(gè)問題*好的方法是引用牛頓的一段話:
我個(gè)人認(rèn)為,我似乎只是一個(gè)在沙灘上玩耍的孩子,不時(shí)為撿到比平時(shí)更光滑的石頭或更漂亮的貝殼而歡欣鼓舞,而展現(xiàn)在我面前的是一片未知的真相。
我引用這段話是為了表明進(jìn)行這種探究的*根本原因不是出于某種實(shí)際目的,而純粹是為了探索自然語言的奧秘。
當(dāng)然,如果同時(shí)研究成果能夠具有一定的應(yīng)用價(jià)值句翻譯x模板,那就更完美了。從目前的結(jié)果來看,這個(gè)應(yīng)用價(jià)值可能存在。
因?yàn)樵?NLP 中,我們面對的句子是千變?nèi)f化的,但實(shí)際上“句型”是有限的,這也意味著句子模板也是有限的。如有必要,我們可以調(diào)整每個(gè)句子模板的占位符的含義。人工標(biāo)注可以將句子模板的結(jié)構(gòu)與常規(guī)的句法描述對應(yīng)起來。通過有限的句子模板(無限地)分解句子,可以使 NLP 可以面對的場景更加靈活多變。
或許以往傳統(tǒng)的自然語言處理中也出現(xiàn)過類似的事情,但本文描述的內(nèi)容純屬無監(jiān)督結(jié)果,也有自洽的理論描述。是一個(gè)比較完整的框架,初步效果并不理想。因此,值得進(jìn)一步考慮其應(yīng)用價(jià)值。
硬進(jìn)
看完這篇文章,讀者*大的感受可能是“驚呆了”:能不能稍微簡化一下?
要回答這個(gè)問題,不得不提一下:距離本系列的上一篇文章已經(jīng)一個(gè)多月了,這篇文章正式發(fā)布了。好像很久了?從形式上看,這篇文章只是對上一篇文章的簡單推廣:不是將相鄰的關(guān)聯(lián)擴(kuò)展到非相鄰的關(guān)聯(lián)嗎?
的確,它在形式上是正確的。但要推動這個(gè)想法兼具理論和實(shí)踐價(jià)值,并不是那么簡單和順利的。例如,在生成句子模板時(shí),如何無遺漏地獲取所有候選模板是一個(gè)難題;其次,獲取到句子模板后,如何識別句子中的句子模板(無論是自動生成的還是手動輸入的),這個(gè)就更難了。無論是理論思維還是編程實(shí)現(xiàn)都存在不少障礙。有必要對樹結(jié)構(gòu)和遞歸編程有一個(gè)清晰的掌握。我也是調(diào)試了半個(gè)多月才把整個(gè)流程調(diào)整好,但是估計(jì)還沒有完成。
所以,你一臉懵逼是正常的,我自己寫完這篇文章還是覺得很震驚。
改進(jìn)思路
在結(jié)果部分,我們還展示了一些失敗的例子。事實(shí)上,可能還有更多的失敗。
我們要從兩個(gè)方面來看待這個(gè)問題。一方面,我們有成功的例子,對應(yīng)于純無監(jiān)督挖掘的探索。即使我們只能得到一小部分成功的結(jié)果,也值得欣喜;另一方面,對于失敗的例子,我們需要思考失敗的原因。并考慮解決方案。
筆者認(rèn)為整體句子模板思維沒有問題,問題在于我們還沒有達(dá)到真正的語義理解層次。比如第一個(gè)失敗的例子,結(jié)果是:(我的好吃的)(蘋果的顏色)是(什么)。
我們能說這種分解是完全錯(cuò)誤的嗎?顯然不是。嚴(yán)格來說,這種分解沒有任何語法錯(cuò)誤,但不符合語義,也不符合我們的常識。因此,這不是句子模板的錯(cuò),而是無法充分整合語義來構(gòu)建句子模板。
回顧目前主流的句法分析工作,無論是有監(jiān)督的還是無監(jiān)督的,基本上都要結(jié)合“詞性”來完成句法分析。所以這為我們提供了一個(gè)方向:*小熵序列的下一步是探索詞聚類問題,以便更好地捕捉詞義和語言共性。
基于*小熵原理的 NLP 庫:NLP Zero
我已經(jīng)陸續(xù)寫了幾篇關(guān)于*小熵原理的文章,致力于無監(jiān)督NLP的一些基礎(chǔ)工作。為方便實(shí)驗(yàn),將文章中涉及的部分算法封裝為庫,供有需要的讀者測試使用。
由于它是面向無監(jiān)督NLP場景的,而且基本上是NLP任務(wù)的基礎(chǔ)工作,所以命名為NLP Zero。
地址
GitHub:
皮皮:
您可以直接通過:
pip install nlp-zero==0.1.6
安裝它。整個(gè)庫采用純Python實(shí)現(xiàn),沒有第三方調(diào)用,支持Python2.x和3.x。
用
默認(rèn)分詞
庫中包含字典,可用作簡單的分詞工具。
from nlp_zero import *
t = Tokenizer()
t.tokenize(u'掃描二維碼,關(guān)注公眾號')
內(nèi)置詞典增加了一些通過新詞發(fā)現(xiàn)發(fā)現(xiàn)的新詞,經(jīng)過作者手動優(yōu)化,質(zhì)量比較高。
詞庫構(gòu)建
通過大量原始語料構(gòu)建詞庫。
首先,我們需要編寫一個(gè)迭代容器,這樣我們就不必一次將所有語料加載到內(nèi)存中。迭代器非常靈活。比如我的數(shù)據(jù)存儲在MongoDB中,即:
import pymongo
db = pymongo.MongoClient().weixin.text_articles
class D:
def __iter__(self):
for i in db.find().limit(10000):
yield i['text']
如果數(shù)據(jù)存儲在文本文件中,則可能是:
class D:
def __iter__(self):
with open('text.txt') as f:
for l in f:
yield l.strip() # python2.x還需要轉(zhuǎn)編碼
然后就可以執(zhí)行了。
from nlp_zero import *
import logging
logging.basicConfig(level = logging.INFO, format = '%(asctime)s - %(name)s - %(message)s')
f = Word_Finder(min_proba=1e-8)
f.train(D()) # 統(tǒng)計(jì)互信息
f.find(D()) # 構(gòu)建詞庫
通過 Pandas 查看結(jié)果:
import pandas as pd
words = pd.Series(f.words).sort_values(ascending=False)
直接從統(tǒng)計(jì)詞庫中創(chuàng)建分詞工具:
t = f.export_tokenizer()
t.tokenize(u'今天天氣不錯(cuò)')
句子模板構(gòu)建
和之前一樣,我們還需要寫一個(gè)迭代器,這里不再贅述。因?yàn)榫渥幽0宓臉?gòu)建是基于詞統(tǒng)計(jì)的,所以還需要一個(gè)分詞功能。您可以使用內(nèi)置分詞器或外部分詞器,例如口吃。
from nlp_zero import *
import logging
logging.basicConfig(level = logging.INFO, format = '%(asctime)s - %(name)s - %(message)s')
tokenize = Tokenizer().tokenize # 使用自帶的分詞工具
# 通過 tokenize = jieba.lcut 可以使用結(jié)巴分詞
f = Template_Finder(tokenize, window=3)
f.train(D())
f.find(D())
通過 Pandas 查看結(jié)果:
import pandas as pd
templates = pd.Series(f.templates).sort_values(ascending=False)
idx = [i for i in templates.index if not i.is_trivial()]
templates = templates[idx] # 篩選出非平凡的模版
每個(gè)模板都被封裝成一個(gè)類。
層次分解
基于句子模板分析句子結(jié)構(gòu)。
from nlp_zero import *
# 建立一個(gè)前綴樹,并加入模版
# 模版可以通過tuple來加入,
# 也可以直接通過“tire[模版類]=10”這樣來加入
trie = XTrie()
trie[(None, u'呢')] = 10
trie[(None, u'可以', None, u'嗎')] = 9
trie[(u'我', None)] = 8
trie[(None, u'的', None, u'是', None)] = 7
trie[(None, u'的', None, u'是', None, u'呢')] = 7
trie[(None, u'的', None)] = 12
trie[(None, u'和', None)] = 12
tokenize = Tokenizer().tokenize # 使用自帶的分詞工具
p = Parser(trie, tokenize) # 建立一個(gè)解析器
p.parse(u'雞蛋可以吃嗎') # 對句子進(jìn)行解析
"""輸出:
>>> p.parse(u'雞蛋可以吃嗎')
+---> (雞蛋)可以(吃)嗎
| +---> 雞蛋
| | +---> 雞蛋
| +---> 可以
| +---> 吃
| | +---> 吃
| +---> 嗎
"""
為了方便結(jié)果的調(diào)用和可視化,輸出的結(jié)果被封裝成一個(gè)SentTree類。該類具有三個(gè)屬性:模板(當(dāng)前主模板)、內(nèi)容(當(dāng)前主模板覆蓋的字符串)、模塊(語義塊列表,每個(gè)語義塊也由SentTree描述)。一般來說,它是根據(jù)本文語言結(jié)構(gòu)的假設(shè)設(shè)計(jì)的。
相關(guān)閱讀Relate
熱門文章 Recent
- 翻譯項(xiàng)目投標(biāo)報(bào)價(jià)匯總表模板 建筑工程預(yù)算書模板.docx 8頁2023-03-11
- 高等教育文憑翻譯模板 中華人民共和國教育部教育涉外監(jiān)管信息網(wǎng)2023-03-11
- 職稱資格證翻譯模板 職稱資格分類一覽表2023-03-11
- 外文翻譯范文模板例文 日語外語翻譯工作實(shí)踐(外語翻譯范文)2023-03-11
- 悉尼大學(xué)學(xué)位證翻譯模板-悉尼大學(xué)翻譯專業(yè)2023-03-11
- 中國銀行定期存折翻譯模板 買房貸款可以用存折貸款嗎 「折子能貸款多少」2023-03-11
- 轉(zhuǎn)錄翻譯分別以誰為模板 DNA雙鏈中兩條鏈都能作為轉(zhuǎn)錄模板翻譯成RNA嗎?2023-03-11
- 海牙認(rèn)證翻譯模板 中國z簽證申請海外犯罪記錄公證認(rèn)證2023-03-11
- 英國簽證所需身份證翻譯模板 英國工作簽證材料翻譯明細(xì)2023-03-11
- 臺灣戶口本翻譯模板 出國證明戶口本翻譯件模板2023-03-11