【自然语言处理】浅谈语料库
文章目錄
- 【自然語言處理】淺談語料庫
- 前言
- 一、淺談語料庫
- 1、語料和語料庫
- 2、語料庫語言學
- 3、 建議語料庫的意義
- 二、語料庫深入了解
- 1、語料庫劃分與種類
- 2、語料庫構建原則
- 3、語料標注的優缺點
- 三、自然語言處理工具包:NLTK
- 1、 了解NLTK
- 2、 獲取NLTK
- 3、 Standford NLP 簡介
- 4、Standford NLP必要工具包說明
- 四、獲取語料庫
- 1、國內外著名語料庫
- 2、英文語料庫
- 3、中文語料庫
- 4、獲取網絡資源
- ???????A: 如下所示獲取的是傷寒雜病論(在線獲取)
- ???????B:在線獲取處理HTML文本(紅樓夢)
- 5、NLTK 獲取語料庫
- ???????A:古藤保語料庫
- ???????B:網絡和聊天文本
- ???????C:布朗語料庫
- ???????D:路透社語料庫
- ???????E:就職演說語料庫
【自然語言處理】淺談語料庫
前言
???????本篇博文重在了解語料庫以及獲取相關語料庫的資源介紹。
一、淺談語料庫
1、語料和語料庫
???????語料通常指在統計自然語言處理中實際上不可能觀測到大規模的語言實例。所以人們簡單地用文本作為替代,并把文本中的上下文關系作為現實世界中語言的上下文關系的替代品。
??????? 語料庫一詞在語言學上意指大量的文本,通常經過整理,具有既定格式與標記。其具備三個顯著的特點:
????? 語料庫中存放的是在語言的實際使用中真實出現過的語言材料。
????? 語料庫以電子計算機為載體承載語言知識的基礎資源,但并不等于語言知識。
????? 真實語料需要經過加工(分析和處理),才能成為有用的資源。
2、語料庫語言學
???????語料庫語言學的研究范疇:主要研究機器可讀自然語言文本的采集、存儲、檢索、統計、語法標注、句法語義分析,以及具有上述功能的語料庫在語言教學、語言定量分析、詞匯研究、詞語搭配研究、詞典編制、語法研究、語言文化研究、法律語言研究、作品風格分析、自然語言理解、機器翻譯等方面的應用。
3、 建議語料庫的意義
???????語料庫是為一個或者多個應用目標而專門收集的,有一定結構的、有代表的、可被計算機程序檢索的、具有一定規模的語料集合。本質上講,語料庫實際上是通過對自然語言運用的隨機抽樣,以一定大小的語言樣本來代表某一研究中所確定的語言運用的總體。
???????ok!!! 到了這里對于語料庫,語料是個什么鬼也大體有了了解。接下來就更深入的了解關于語料庫的知識吧!!!
二、語料庫深入了解
1、語料庫劃分與種類
馮志偉教授語料庫劃分比較有影響力且在學術上認可度比較高:
???????? 按語料選取的時間劃分,可分為歷時語料庫(diachronic corpus)和共時語料庫(syn-chronic corpus)。
???????? 按語料的加工深度劃分,可分為標注語料庫(annotated corpus)和非標注語料庫(non- annotated corpus)。
???????? 按語料庫的結構劃分,可分為平衡結構語料庫(balance structure corpus)和自然隨機結構的語料庫(random structure corpus)。
???????? 按語料庫的用途劃分,可分為通用語料庫(general corpus)和專用語料庫(specialized corpus)。
???????? 按語料庫的表達形式劃分,可分為口語語料庫(spoken corpus)和文本語料庫(textcorpus)。
???????? 按語料庫中語料的語種劃分,可分為單語種語料庫(monolingual corpora)和多語種語料庫(multilingual corpora)。多語種語料庫又可以再分為比較語料庫(comparable corpora)和平行語料庫(parallel corpora)。比較語料庫的目的側重于特定語言現象的對比,而平行語料庫的目的側重于獲取對應的翻譯實例。
???????? 按語料庫的動態更新程度劃分,可分為參考語料庫(reference corpus)和監控語料庫(monitor corpus)。參考語料庫原則上不做動態更新,而監控語料庫則需要不斷地進行動態更新。
2、語料庫構建原則
語料庫應該具有代表性、結構性、平衡性、規模性、元數據,各個原則具體介紹如下:
???????? 代表性:在應用領域中,不是根據量而劃分是否是語料庫,而是在一定的抽樣框架范圍內采集而來的,并且能在特定的抽樣框架內做到代表性和普遍性。
???????? 結構性:有目的地收集語料的集合,必須以電子形式存在,計算機可讀的語料集合結構性體現在語料庫中語料記錄的代碼、元數據項、數據類型、數據寬度、取值范圍、完整性約束。
????????平衡性:主要體現在平緩因子——學科、年代、文體、地域、登載語料的媒體、使用者的年齡、性別、文化背景、閱歷、預料用途(私信/廣告等),根據實際情況選擇其中一個或者幾個重要的指標作為平衡因子,最常見的平衡因子有學科、年代、文體、地域等。
???????? 規模性:大規模的語料對語言研究特別是對自然語言研究處理很有用,但是隨著語料庫的增大,垃圾語料越來越多,語料達到一定規模以后,語料庫功能不能隨之增長,語料庫規模應根據實際情況而定。
???????? 元數據:元數據對于研究語料庫有著重要的意義,我們可以通過元數據了解語料的時間、地域、作者、文本信息等;構建不同的子語料庫;對不同的子語料對比;記錄語料知識版權、加工信息、管理信息等。
???????注意:漢語詞與詞之間沒有空隙,不便于計算機處理,一般需要進行切詞和詞性標注。
3、語料標注的優缺點
???????? 優點:研究方便。可重用、功能多樣、分析清晰。
???????? 缺點:語料不客觀(手工標注準確率高而一致性差,自動或者半自動標注一致性高而準確率差)、標注不一致、準確率低。
三、自然語言處理工具包:NLTK
1、 了解NLTK
???????NLTK(Natural language Toolkit):自然語言工具包,Python 編程語言實現的統計自然語言處理工具。它是由賓夕法尼亞大學計算機和信息科學的史蒂芬·伯德和愛德華·洛珀編寫的。NLTK 支持NLP 研究和教學相關的領域,其收集的大量公開數據集、模型上提供了全面易用的接口,涵蓋了分詞、詞性標注(Part-of-Speech tag,POS-tag)、命名實體識別(NamedEntity Recognition,NER)、句法分析(Syntactic Parse) 等各項NLP 領域的功能。廣泛應用在經驗語言學、認知科學、人工智能、信息檢索和機器學習。
2、 獲取NLTK
???????執行exe 文件,會自動匹配到Python 安裝路徑,如果沒有找到路徑則說明NLTK 版本不正確,去官網選擇正確版本號下載.
???????獲取NLTK鏈接:https://pypi.org/project/nltk/3.2.1/#files
???????說明:NLTK 核心包主要包括如下:
???????? NLTK-Data:分析和處理語言的語料庫。
???????? NumPy:科學計算庫。
???????? Matplotlib:數據可視化2D 繪圖庫。
???????? NetworkX:存儲和操作由節點和邊組成的網絡結構函數庫。
3、 Standford NLP 簡介
???????Stanford NLP:由斯坦福大學的NLP 小組開源的Java 實現的NLP 工具包,同樣對NLP領域的各個問題提供了解決辦法。斯坦福大學的NLP 小組是世界知名的研究小組,能將NLTK 和Stanford NLP 兩個工具包結合起來使用,對于自然語言開發者再好不過了。2004 年Steve Bird 在NLTK 中加上了對Stanford NLP 工具包的支持,通過調用外部的jar 文件來使用Stanford NLP 工具包的功能,這樣一來就變得更為方便好用。NLTK 提供的Stanford NLP 中的以下幾個功能。
???????? 中英文分詞:StanfordTokenizer。
???????? 中英文詞性標注:StanfordPOSTagger。
???????? 中英文命名實體識別:StanfordNERTagger。
???????? 中英文句法分析:StanfordParser。
???????? 中英文依存句法分析:StanfordDependencyParser。
4、Standford NLP必要工具包說明
? 分詞依賴:stanford-segmenter.jar、slf4j-api.jar、data 文件夾相關子文件。
? 命名實體識別依賴:classifiers、stanford-ner.jar。
? 詞性標注依賴:models、stanford-postagger.jar。
? 句法分析依賴:stanford-parser.jar、stanford-parser-3.6.0-models.jar、classifiers。
? 依存語法分析依賴:stanford-parser.jar、stanford-parser-3.6.0-models.jar、classifiers。壓縮包下載和源碼分析
? 分詞壓縮包StanfordSegmenter 和StanfordTokenizer:下載stanford-segmenter-2015-12-09.zip(https://pan. baidu.com/s/1kVc20ib),解壓獲取目錄中的stanford-segmenter-3.6.0.jar復制為stanford-segmenter.jar 和slf4j-api.jar。
? 詞性標注壓縮包:下載stanford-postagger-full-2015-12-09.zip (https://pan.baidu.com/s/1hrVMSE4),解壓獲取stanford-postagger.jar。
? 命名實體識別壓縮包:下載stanford-ner-2015-12-09.zip (https://pan.baidu.com/s/
1skOJb5r),解壓獲取stanford-ner.jar 和classifiers 文件。
? 句法分析、句法依存分析:下載stanford-parser-full-2015-12-09.zip(http://pan.baidu.com/s/1nv6Q2bZ),解壓獲取stanford-parser.jar 和stanford-parser-3.6.0-models.jar
四、獲取語料庫
1、國內外著名語料庫
???????? 點通多語言語音語料庫:
???????? 賓州大學語料庫: https://www.ldc.upenn.edu/
???????? Wikipedia XML 語料庫:http://www-connex.lip6.fr/~denoyer/wikipediaXML/
???????? 中英雙語知識本體詞網:http://bow.ling.sinica.edu.tw/ 結合詞網、知識本體與領域標記的詞匯知識庫。
2、英文語料庫
???????? 古滕堡語料庫:http://www.gutenberg.org/
???????? 語料庫在線: http://www.aihanyu.org/cncorpus/index.aspx#P0
3、中文語料庫
1. 搜狗實驗室新聞| 互聯網數據: http://www.sogou.com/labs/
2. 北京大學語言研究中心:http://ccl.pku.edu.cn/term.asp
3. 計算機語言研究所:
4. 數據堂: http://www.datatang.com/
5. 中央研究院平衡語料庫(https://www.sinica.edu.tw/SinicaCorpus):專門針對語言分析而設計的,每個文句都依詞斷開并標示詞類。語料的搜集也盡量做到現代漢語分配在不同的主題和語式上,是現代漢語無窮多的語句中一個代表性的樣本。現有語料庫主要針對語言分析而設計,由中央研究院信息所、語言所詞庫小組完成,內含有簡介、使用說明,現行的語料庫是4.0 版本。
6. LIVAC 漢語共時語料庫:http://www.livac.org/index.php?lang=tc
7. 蘭開斯特大學漢語平衡語料庫: http://www.lancaster.ac.uk/fass/projects/corpus/
8. 蘭開斯特——洛杉磯漢語口語語料庫 :http://www.lancaster.ac.uk/fass/projects/corpus/
9. 語料庫語言學在線:https://www.corpus4u.org/
10.北京森林工作室漢語句義結構標注語料庫:http://www.isclab.org.cn/csa/bfs-ctc.htm
11.國家語委現代漢語語料庫(http://corpus.zhonghuayuwen.org/index.aspx)
現代漢語通用平衡語料庫現在重新開放網絡查詢了。重開后的在線檢索速度更快,功能更強,同時提供檢索結果下載。現代漢語語料庫在線提供免費檢索的語料約2000 萬字,為分詞和詞性標注語料。
12.古代漢語語料庫(http://corpus.zhonghuayuwen.org/):網站現在增加了一億字的古代
漢語生語料,研究古代漢語的也可以去查詢和下載。網站同時還提供了分詞、詞性標
注軟件,詞頻統計、字頻統計軟件。基于國家語委語料庫的字頻詞頻統計結果和發布
的詞表等進行建庫,以供學習研究語言文字的同學和老師使用。
13.《人民日報》標注語料庫(https://blog.csdn.net/eaglet/article/details/1778995):《人民日報》標注語料庫中一半的語料(1998 年上半年)共1300 萬字,已經通過《人民日報》新聞信息中心公開并提供許可使用權。其中一個月的語料(1998 年1 月)近200 萬字在互聯網上公布,可自由下載。
14. 古漢語語料庫(https://www.sinica.edu.tw/ch):古漢語語料庫包含以下五個語料庫—— 上古漢語、中古漢語(含大藏經)、近代漢語、出土文獻、其他。部分數據取自史語所漢籍全文數據庫,故兩者間內容略有重疊。此語料庫之出土文獻語料庫,全部取自史語所漢簡小組所制作的數據庫。
15. 近代漢語標記語料庫(https://www.sinica.edu.tw/Early_Mandarin):為應對漢語史研究需
求而建構的語料庫。目前語料庫所搜集的語料已涵蓋上古漢語(先秦至西漢)、中古漢語(東漢魏晉南北朝)、近代漢語(唐五代以后)大部分的重要語料,并陸續開放使用;在標記語料庫方面,上古漢語及近代漢語都已有部分語料完成標注的工作,并視結果逐步提供上線檢索。
16. 樹圖數據庫(http://treebank.sinica.edu.tw/)
17.搜文解字(http://words.sinica.edu.tw/):包含「搜詞尋字」、「文學之美」、「游戲解惑」、「古文字的世界」四個單元,可由部件、部首、字、音、詞互查,并可查詢在四書、老、莊、唐詩中的出處,以及直接鏈接到出處并閱讀原文。
18.文國尋寶記(https://www.sinica.edu.tw/wen):在搜文解字的基礎之上,以華語文學習者
為對象,進一步將字、詞、音的檢索功能與國編、華康、南一等三種版本的國小國語課本結合。與唐詩三百首、宋詞三百首、紅樓夢、水滸傳等文學典籍結合,提供網絡上國語文學習的素材。
19. 漢籍電子文獻(https://www.sinica.edu.tw/ch):包含整部25 史整部阮刻13經、超過2000 萬字的臺灣史料、1000 萬字的大正藏及其他典籍。
20. 中國傳媒大學文本語料庫檢索系統(http://ling.cuc.edu.cn/RawPub/)
21. 在線分詞標注系統(http://ling.cuc.edu.cn/cucseg/)
22. 新詞語研究資源庫(http://ling.cuc.edu.cn/newword/)
23. 哈工大信息檢索研究室對外共享語料庫資源 :http://ir.hit.edu.cn/demo/ltp/Sharing_Plan.htm
該語料庫為漢英雙語語料庫,10 萬對齊雙語句對,文本書件格式,同義詞詞林擴展版,77343 條詞語,秉承《同義詞詞林》的編撰風格。同時采用五級編碼體系,多文檔自動文摘語料庫,40 個主題,文本書件格式,同一主題下是同一事件的不同報道。漢語依存樹庫,不帶關系5 萬句,帶關系1 萬句;LTML 化,分詞、詞性、句法部分人工標注,可以圖形化查看,問答系統問題集,6264 句;已標注問題類型,LTML 化,分詞、詞性、句法、詞義、淺層語義等程序處理得到,單文檔自動文摘語料庫共211 篇。
24. 清華大學漢語均衡語料庫THACorpus。
25. 中國科學院計算技術研究所,跨語言語料庫目前的雙語句對數據庫中有約180000 對已對齊的中英文句子。本數據庫支持簡單的中英文查詢服務。查詢結果包括句對編號、中文句子、英文句子、句對來源等。
4、獲取網絡資源
???????A: 如下所示獲取的是傷寒雜病論(在線獲取)
???????代碼如下所示
"""author:jjkdatetime:2018/11/4coding:utf-8project name:Pycharm_workstationProgram function: 網絡數據獲取""" from __future__ import division import nltk,re,pprint from urllib.request import urlopen # 導入請求鏈接 import time start_time = time.time() url = r'http://www.gutenberg.org/files/24272/24272-0.txt'# 請求鏈接 raw = urlopen(url).read()# 打開,讀取 raw = raw.decode('utf-8')# 設置編碼 print(len(raw))# 輸出字符長度 print(raw[2000:2500]) stop_time = time.time() time_sum = stop_time-start_time print("一共耗用時間:",time_sum)???????結果
???????B:在線獲取處理HTML文本(紅樓夢)
???????代碼如下所示:
"""author:jjkdatetime:2018/11/4coding:utf-8project name:Pycharm_workstationProgram function: 獲取處理紅樓夢""" import re,nltk from urllib.request import urlopen import time start_time = time.time()# 開始時間 url = 'http://www.gutenberg.org/cache/epub/24264/pg24264-images.html'# 請求鏈接 html = urlopen(url).read()# 打開,讀取 html = html.decode('utf-8') print(html[5000:5500])# 獲取5000-5500之間的文本 stop_time = time.time()# 最后時間 time_sum = stop_time-start_time# 一共耗時 print("一共請求時間:",time_sum)???????結果
5、NLTK 獲取語料庫
???????A:古藤保語料庫
"""author:jjkdatetime:2018/11/4coding:utf-8project name:Pycharm_workstationProgram function: 獲取古藤保語料庫 """ from nltk import data data.path.append(r"F:\Anaconda\Anaconda_install\nltk_data") # 這里的路徑需要換成自己數據文件下載的路徑from nltk.corpus import gutenberg print(gutenberg.fileids()) from nltk.corpus import webtext# 導包 #for fileid in webtext.fileids():# 遍歷 # print(fileid,webtext.raw(fileid))部分結果截圖
???????B:網絡和聊天文本
"""author:jjkdatetime:2018/11/4coding:utf-8project name:Pycharm_workstationProgram function: 獲取古藤保語料庫"""from nltk import data data.path.append(r"F:\Anaconda\Anaconda_install\nltk_data") # 這里的路徑需要換成自己數據文件下載的路徑from nltk.corpus import gutenberg # print(gutenberg.fileids()) from nltk.corpus import webtext# 導包 for fileid in webtext.fileids():# 遍歷print(fileid,webtext.raw(fileid))部分結果截圖
???????C:布朗語料庫
???????比較文體中情態動詞的用法
"""author:jjkdatetime:2018/11/4coding:utf-8project name:Pycharm_workstationProgram function: 布朗語料庫 """ # 查看語料信息 from nltk import data data.path.append(r"F:\Anaconda\Anaconda_install\nltk_data") import nltk from nltk.corpus import brown #brown.categories() new_texts = brown.words(categories='news') fdist = nltk.FreqDist([w.lower() for w in new_texts]) modals = ['can','could','may','might','must','will'] for m in modals:print(m + ':',fdist[m])???????結果
???????D:路透社語料庫
???????代碼
"""author:jjkdatetime:2018/11/5coding:utf-8project name:Pycharm_workstationProgram function: 路透社語料庫""" from nltk import data# 導包數據 data.path.append(r"F:\Anaconda\Anaconda_install\nltk_data")# 路徑 from nltk.corpus import reuters print(reuters.fileids()[:50]) #前50個測試文檔 print(reuters.categories()[:100])# 查看前100個類別 print(reuters.categories('training/9865'))# 查看某個編號的語料下的類別尺寸 print(reuters.categories(['training/9865','training/9880']))# 查看某幾個聯合編號語料下的類別尺寸 print(reuters.fileids('barley'))# 查看哪些編號的文件屬于指定的類別???????結果(部分截圖)
???????E:就職演說語料庫
???????代碼
"""author:jjkdatetime:2018/11/5coding:utf-8project name:Pycharm_workstationProgram function:就職演說語料庫 """ from nltk import data data.path.append(r"F:\Anaconda\Anaconda_install\nltk_data") # 查看語料信息 from nltk.corpus import inaugural print(len(inaugural.fileids()))# 長度 print(inaugural.fileids())# 56個txt print([fileid[:4] for fileid in inaugural.fileids()])# 查看就職演說的年份???????結果
???????好吧,,,到了這里語料庫相關的知識就說到這里吧。小伙伴們看到這里還望給博主多多給一些意見和建議。
總結
以上是生活随笔為你收集整理的【自然语言处理】浅谈语料库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue-cli脚手架的.babelrc文
- 下一篇: 解决问题的反馈机制_谈谈HBase中的N