TensorFlow自然語言處理》—3.2.3 TF-IDF方法">《TensorFlow自然語言處理》—3.2.3 TF-IDF方法
800
2025-03-31
3.2 學(xué)習(xí)單詞表示的經(jīng)典方法
在本節(jié)中,我們將討論用數(shù)字表示單詞的一些經(jīng)典方法。這些方法主要可以分為兩類:使用外部資源表示單詞的方法和不使用外部資源的方法。首先,我們將討論WordNet:一種基于外部資源表示單詞的最流行的方法。然后,我們會(huì)討論更多的本地化方法(即不依賴外部資源的方法),例如,單熱編碼和詞頻率-逆文檔頻率(TF-IDF)。
3.2.1 WordNet—使用外部詞匯知識(shí)庫(kù)來學(xué)習(xí)單詞表示
WordNet是處理單詞表示的最流行的經(jīng)典方法或統(tǒng)計(jì)NLP方法之一。它依賴于外部詞匯知識(shí)庫(kù),該知識(shí)庫(kù)對(duì)給定單詞的定義、同義詞、祖先、派生詞等信息進(jìn)行編碼。WordNet允許用戶推斷給定單詞的各種信息,比如前一句中討論的單詞的各種信息和兩個(gè)單詞之間的相似性。
3.2.1.1 回顧WordNet
如前所述,WordNet是一個(gè)詞匯數(shù)據(jù)庫(kù),用于對(duì)單詞之間的詞性標(biāo)簽關(guān)系(包括名詞、動(dòng)詞、形容詞和副詞)進(jìn)行編碼。WordNet由美國(guó)普林斯頓大學(xué)心理學(xué)系首創(chuàng),目前由普林斯頓大學(xué)計(jì)算機(jī)科學(xué)系負(fù)責(zé)。WordNet考慮單詞之間的同義性來評(píng)估單詞之間的關(guān)系。用于英語的WordNet目前擁有超過150?000個(gè)單詞和超過100?000個(gè)同義詞組(即synsets)。此外,WordNet不僅限于英語。自成立以來,已經(jīng)建立了許多不同的WordNet,在http://globalwordnet.org/wordnets-in-the-world/上可以查看。
為了理解如何用WordNet,需要對(duì)WordNet中使用的術(shù)語有堅(jiān)實(shí)的基礎(chǔ)。首先,WordNet使用術(shù)語synset來表示一群或一組同義詞。接下來,每個(gè)synset都有一個(gè)def?inition,用于解釋synset表示的內(nèi)容。synset中包含的同義詞稱為lemmas。
在WordNet中,單詞表示是分層建模的,它在給定的synset與另一個(gè)synset之間進(jìn)行關(guān)聯(lián)形成一個(gè)復(fù)雜的圖。有兩種不同類別的關(guān)聯(lián)方式:is-a關(guān)系或is-made-of關(guān)系。首先,我們將討論is-a關(guān)系。
對(duì)于給定的synset,存在兩類關(guān)系:上位詞和下位詞。synset的上位詞是所考慮的synset的一般(更高一層)含義的同義詞。例如,vehicle是同義詞car的上位詞。接下來,下位詞是比相應(yīng)的同義詞組更具體的同義詞。例如,Toyota car是同義詞car的下位詞。
現(xiàn)在讓我們討論一個(gè)synset的is-made-of關(guān)系。一個(gè)synset的整體詞是可以表示所考慮的這個(gè)synset的全部實(shí)體的synset。例如,tires的整體詞是cars。部分詞是is-made-of類別的關(guān)系,是整體詞的反義詞,部分詞是組成相應(yīng)synset的一部分或子部分,我們可以在圖3.2中看到它們。
圖3.2 一個(gè)synset的不同關(guān)聯(lián)
NLTK庫(kù)是一個(gè)Python自然語言處理庫(kù),我們可以用它理解WordNet及其機(jī)制。完整示例可在ch3文件夾中的ch3_wordnet.ipynb文件中找到。
安裝NLTK庫(kù)
可以用以下python pip命令安裝NLTK庫(kù):
或者,可以使用IDE(例如PyCharm)通過圖形用戶界面(GUI)安裝庫(kù)。可以在http://www.nltk.org/install.html找到更詳細(xì)的說明。
要將NLTK導(dǎo)入Python并下載WordNet語料庫(kù),請(qǐng)首先導(dǎo)入nltk庫(kù):
然后可以運(yùn)行以下命令下載WorldNet語料:
安裝并導(dǎo)入nltk庫(kù)后,我們需要使用以下命令導(dǎo)入WordNet語料庫(kù):
然后我們按照以下方式查詢WordNet:
在運(yùn)行這個(gè)示例之后,結(jié)果如下:
我們還可以通過以下方式獲得兩個(gè)同義詞之間的相似性。在NLTK中實(shí)現(xiàn)了幾種不同的相似性度量,你可以在官方網(wǎng)站(www.nltk.org/howto/wordnet.html)上看到它們的實(shí)際應(yīng)用。在這里,我們使用Wu-Palmer相似性,它根據(jù)兩個(gè)synset在同義詞的層次結(jié)構(gòu)中的深度來測(cè)量它們之間的相似性:
3.2.1.2 WordNet的問題
雖然WordNet是一個(gè)令人驚嘆的資源,任何人都可以在NLP任務(wù)中用它學(xué)習(xí)單詞的含義,但使用WordNet有很多不足之處。
如下所示:
缺少細(xì)微差別是WordNet中的一個(gè)關(guān)鍵問題。WordNet在理論上和實(shí)際應(yīng)用中都有不可行的原因。從理論的角度來看,對(duì)兩個(gè)實(shí)體之間微妙差異的定義進(jìn)行建模并不恰當(dāng)或直接。實(shí)際上,定義細(xì)微差別是主觀的。例如,單詞want和need具有相似的含義,但其中一個(gè)(need)更具有主張性,這被認(rèn)為是一種細(xì)微差別。
接下來,WordNet本身就是主觀的,因?yàn)閃ordNet是由一個(gè)相對(duì)較小的社區(qū)設(shè)計(jì)的。因此,取決于你要解決的問題,WordNet可能是合適的,或者你可以通過更寬松的單詞定義來提高性能。
維護(hù)WordNet也存在問題,這是非常需要人力的。維護(hù)和添加新的synsets、def?ini-tions、lemmas等可能非常昂貴。這會(huì)對(duì)WordNet的可擴(kuò)展性產(chǎn)生負(fù)面影響,因?yàn)槿肆?duì)更新WordNet至關(guān)重要。
為其他語言開發(fā)WordNet成本可能很高。有一些人努力為其他語言構(gòu)建WordNet并將其與英語WordNet鏈接為MultiWordNet(MWN),但它們尚未完成。
接下來,我們將討論幾種不依賴外部資源的單詞表示技術(shù)。
自然語言處理基礎(chǔ) TensorFlow
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。