2010年10月30日 星期六
2010年10月21日 星期四
2010年10月18日 星期一
用Python也能輕鬆玩自然語言處理(2.5)
2.5鼎鼎大名的詞網(WordNet)
WordNet是語意導向的英文字典,有點類似傳統常見的索引典(thesaurus),不過擁有更豐富的結構。NLTK所提供的WordNet擁有15萬字以及11萬個同義詞組。接下來我們會先來看看同義詞,然後學著如何存取WordNet。
2010年8月12日 星期四
2010年8月11日 星期三
用Python也能輕鬆玩自然語言處理(2.4)
2.4 語彙資源大集合(Lexical Resources)
詞彙或語彙資源(lexicon),指的就是一些字詞或片語的集合體,它們通常會伴隨一些詞性或語意的資訊在裡頭!語彙資源算是次級的文本,因為只是用來輔助文本用的。例如我們定義了一份文本「my_text」,接著定義「vocab = sorted(set(my_text))」用來裝my_text裡面的詞彙,以及「word_freq = FreqDist(my_text)」用來計算每個字詞出現的頻率。這樣一來,「vocab」與「word_freq」就成了最基本的語彙資訊。還有向我們之前在1.1看到的「concordance 」功能也算是一種語彙資源,提供了單詞的用法(就像字典那樣)。下圖列出了標準的語彙術語:一個語彙的款目(lexical entry)由其標題字(headword or lemma)所組成,並且可能提供一些額外資訊,如詞性(part of speech)或詞義說明。如果兩組字有相同的拼法叫做同音異義詞(homonyms)。
最簡單的語彙類型就是照字順排列字詞清單,而較為精密的則會擁有複雜的結構且具有橫跨個別款目的連結功能。在這一節中我們會看到一些NLTK提供的詞彙資源!
2010年7月13日 星期二
用Python也能輕鬆玩自然語言處理(2.3)
2.3 多講一點Python嘛:可以重複使用的程式碼
這個時候,你可能已經在Python的互動式直譯器裡重新輸入了很多的程式碼。如果你不小心弄錯了哪個部分時,你通常必須再次輸入一次那複雜的程式。雖然可以使用箭頭鍵來修改之前的命令,但這還是很沒效率。因此在本節中我們將學會利用兩種可以重新使用程式碼的方式:文字編輯器和Python的函數。
這個時候,你可能已經在Python的互動式直譯器裡重新輸入了很多的程式碼。如果你不小心弄錯了哪個部分時,你通常必須再次輸入一次那複雜的程式。雖然可以使用箭頭鍵來修改之前的命令,但這還是很沒效率。因此在本節中我們將學會利用兩種可以重新使用程式碼的方式:文字編輯器和Python的函數。
2010年7月9日 星期五
療癒系音樂趴(上)
2010年6月17日 星期四
用Python也能輕鬆玩自然語言處理(2.2)
2.2 條件次數分配(Conditional Frequency Distributions)
我們之前在1.3有先初步介紹過了次數分配的統計函數「FreqDist(mylist)」,可以幫助我們輕鬆地計算串列中各項目的出現情形,而現在我們將在這裡好好的談它。當語料庫的文本被區分各種類別(像是種類、主題、作者等),我們則可以個別地針對不同類別的文本進行次數統計,這將會讓我們有系統地去研究不同類別的差異。在之前的章節你應該已經看到不少次NLTK裡「條件次數分配」的應用了!實際上條件次數分配就是一種次數分配,只是他所強調的是特定的「條件(condition)」!而這個所謂的條件呢,則經常會是文本的類別。下圖就是要表示兩種不同條件的次數分配結果,一邊是新聞類型、一邊是言情類型。
我們之前在1.3有先初步介紹過了次數分配的統計函數「FreqDist(mylist)」,可以幫助我們輕鬆地計算串列中各項目的出現情形,而現在我們將在這裡好好的談它。當語料庫的文本被區分各種類別(像是種類、主題、作者等),我們則可以個別地針對不同類別的文本進行次數統計,這將會讓我們有系統地去研究不同類別的差異。在之前的章節你應該已經看到不少次NLTK裡「條件次數分配」的應用了!實際上條件次數分配就是一種次數分配,只是他所強調的是特定的「條件(condition)」!而這個所謂的條件呢,則經常會是文本的類別。下圖就是要表示兩種不同條件的次數分配結果,一邊是新聞類型、一邊是言情類型。
2010年6月13日 星期日
用Python也能輕鬆玩自然語言處理(2.1)
第二章 存取語料庫與詞彙資源
當自然語言處理在實際執行時往往會使用大量的語意資料,或是所謂的語料庫(corpus)。而本章的學習目的為:
本章持續會以一連串的範例呈現程式在面對語言處理時的各式概念,我們會逐步地探索Python觀念,因此不用太擔心無法完全理解範例中的每個要素,你只需要嘗試以及觀察它的結果(把他當成一個遊戲就可以了XDD),而程式的術語阿、原理等等我們後面再談就好!
當自然語言處理在實際執行時往往會使用大量的語意資料,或是所謂的語料庫(corpus)。而本章的學習目的為:
- 有哪些常見且有用的語料庫與詞彙資源?如何用Python去存取它們?
- 有哪些Python概念可以幫上大忙?
- 如何避免在撰寫Python程式碼時發生重複的情形(白工)
本章持續會以一連串的範例呈現程式在面對語言處理時的各式概念,我們會逐步地探索Python觀念,因此不用太擔心無法完全理解範例中的每個要素,你只需要嘗試以及觀察它的結果(把他當成一個遊戲就可以了XDD),而程式的術語阿、原理等等我們後面再談就好!
2010年6月4日 星期五
用Python也能輕鬆玩自然語言處理(1.5)
1.5 自然語言的自動學習
我們已經藉由文本與Python程式語言對語言作了一些基本的探索,然而我們更感興趣的是把這些有用的語言計算技術用到一些知識加值或產生新知識的領域,例如資料探勘的工作。因此在之後的章節,我們絕對有必要在自然語言處理中專注更多的基礎知識!
我們已經藉由文本與Python程式語言對語言作了一些基本的探索,然而我們更感興趣的是把這些有用的語言計算技術用到一些知識加值或產生新知識的領域,例如資料探勘的工作。因此在之後的章節,我們絕對有必要在自然語言處理中專注更多的基礎知識!
在實務層面上,我們在廣大的網路世界中航行時,對於一些特定的網頁資訊的蒐集與整理是需要一些協助的。搜尋引擎當然是為此而蓬勃發展的網路工具,但它有它的限制與缺點。當我們試圖去找尋一些問題的解答,如有沒有一個旅遊網站可以提供給我一些資訊如何以有限的預算在費城與匹茲堡間旅遊?專家是如何看待數位單眼相機的...等等,我們會發現要解決這些問題是利用搜尋引擎時,是需要技巧的、知識的,甚至是運氣!我們多麼希望電腦能回答這類問題,然而這些問題明顯地涉及了各式各樣的語言處理工作,包括資訊擷取(information extraction)、推論(inference)、自動化摘要(summarization)等,要能有效地去做這些工作需要一些大規模或更加深入的知識。
而在理論層面上,利用人工智慧發展出一套智慧型的機制一直是一項長期的挑戰,其中佔有重要角色的就是自動理解,或是說機器學習。經過了許多年的努力,這個目標的達成依舊是十分的艱難,但是自然語言處理的技術卻是越臻成熟,用自動的方法去分析非結構的文本變得是一件常見的事,這種自然語言的自動學習也成為一種公認的領域。
而在理論層面上,利用人工智慧發展出一套智慧型的機制一直是一項長期的挑戰,其中佔有重要角色的就是自動理解,或是說機器學習。經過了許多年的努力,這個目標的達成依舊是十分的艱難,但是自然語言處理的技術卻是越臻成熟,用自動的方法去分析非結構的文本變得是一件常見的事,這種自然語言的自動學習也成為一種公認的領域。
在這小節中,我們將介紹一些語言學習的技術,來告訴你接下來我們要走的路還有多長!
2010年5月15日 星期六
用Python也能輕鬆玩自然語言處理(1.4)
1.4 回到Python:怎麼做選擇?怎麼控制流程
目前為止,我們已經學會去使用一些簡單的程式來處理語言,記住!我們正在學得是省去人力的自動方式唷!這種方式我們必須要告訴電腦更多的事情來讓他能夠根據我們給的指示去完成任務,如面臨不同狀況時能夠精準地進行決策、根據不同的條件反覆地執行迴圈內的工作等等,這些工作叫做「流程控制」,也是本節的重點!
目前為止,我們已經學會去使用一些簡單的程式來處理語言,記住!我們正在學得是省去人力的自動方式唷!這種方式我們必須要告訴電腦更多的事情來讓他能夠根據我們給的指示去完成任務,如面臨不同狀況時能夠精準地進行決策、根據不同的條件反覆地執行迴圈內的工作等等,這些工作叫做「流程控制」,也是本節的重點!
2010年5月8日 星期六
用Python也能輕鬆玩自然語言處理(1.3)
1.3 開始計算語言吧:簡單的統計
現在我們再把焦點拉回大量文本的計算方法(就像1.1),在開始進行前,希望你對之前兩節談到的一些基本指令與資料結構有所瞭解,而且也可以預測執行了程式後Python直譯器會有什麼反映:
現在我們再把焦點拉回大量文本的計算方法(就像1.1),在開始進行前,希望你對之前兩節談到的一些基本指令與資料結構有所瞭解,而且也可以預測執行了程式後Python直譯器會有什麼反映:
>>> saying = ['After', 'all', 'is', 'said', 'and', 'done', ... 'more', 'is', 'said', 'than', 'done'] >>> tokens = set(saying) >>> tokens = sorted(tokens) >>> tokens[-2:] 這行會跑出什麼呢? >>> |
2010年5月4日 星期二
用Python也能輕鬆玩自然語言處理(1.2)
1.2 再離Python近一點吧:文本只是一個文字組成的列表
從上一節的洗禮你應該已經越來越瞭解Python這個程式語言了,不過這部份我們要介紹更多重要的元素!它將會在未來實際執行自然語言處理時扮演關鍵角色。
從上一節的洗禮你應該已經越來越瞭解Python這個程式語言了,不過這部份我們要介紹更多重要的元素!它將會在未來實際執行自然語言處理時扮演關鍵角色。
Lists(列表或串列)
文本到底是什麼?某些程度上,它只是一些字詞與符號排列而成的一頁頁序列;某星程度上,整個文本只是由每個章節組成的序列,每個章節又只是由一些段落所組成的序列...。總之,要用電腦來搞定文本的首要概念就是把它當成:一個由文字與符號組成的玩意兒!一開始我們來先利用文本1(Moby Dick)的開頭來進行測試吧:2010年5月3日 星期一
用Python也能輕鬆玩自然語言處理(序言+1.1)
Steven Bird, Ewan Klein, and Edward Loper. (2009)Natural Language Processing with Python--- Analyzing Text with the Natural Language Toolkit. O'Reilly Media. |
我想說既然也要看,乾脆順便翻譯整理一下~
順便讓「自然語言處理」在中文世界多點東西!
不過我也還在學習中啦..對內容有疑義的話請盡量提出來討論!謝謝
我會一小節一小節發表,因為內容實在太豐富了
ps.歐萊禮應該不會來騷擾我才是...XD
2010年2月21日 星期日
同名作者辨識概述(上)
圖片來自:istockphoto
這篇文章算是同名作者辨識研究的入門知識,我將他整理一下依照篇幅分成上、下兩篇!
擷取整理自:
Smalheiser, N. R., Torvik, V. I. (2009). Author Name Disambiguation. Chapter in Annual Review of Information Science and Technology, v.43.
2010年2月2日 星期二
資訊學研討(Fall2008)-概述篇
圖片來自:Introduction to Informatics(Arizona大學)
這系列的文章拖了將近一年多
因為當時實在沒有作筆記的習慣,也沒想太多
但在下學期讀者服務與研究方法兩科完整記錄後
萌生把這些東西在統整一次的想法...
因此會以我的所見所聞與觀點出發,去整理與呈現的心得
不闡明一個個細節與理論,而是將零碎的筆記與學習歷程寫出來
希望能給一點也不懂資訊學或資訊科學是啥的人,有點啟發
2010年1月23日 星期六
訂閱:
文章 (Atom)