天天看點

簡易中文自動文摘系統(二):中文語料庫的準備

    前文已經提及,漢語的文法和句型不同于英語,在進行分析之前需要進行分詞。首先我們需要的是一個中文語料庫,本文使用的是維基百科的中文語料庫,大小約為1.57GB,下載下傳之後從中提取中文語料庫。再使用opencc将語料庫繁簡體轉化之後,使用jieba分詞将語料庫中的段落、句子進行分詞得到最終用于模型訓練的中文語料庫。

中文語料庫

    本文使用的中文語料庫為維基百科的中文語料庫。通過以下連結進行下載下傳:

​​​http://download.wikipedia.com/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2​​​     下載下傳之後得到的是一個壓縮包:

簡易中文自動文摘系統(二):中文語料庫的準備

    下載下傳WikiExtractor.py檔案,該腳本檔案是意大利程式員使用Python研發的維基百科抽取器,簡潔并且功能強大,可以抽取出維基百科中文語料庫的内容并輸出到文本檔案。我們在macOS的終端運作以下指令行,使用Wikipedia Extractor抽取正文文本:

bzcat zhwiki-latest-pages-articles.xml.bz2 | python WikiExtractor.py -b 1000M -o extracted >output.txt      

其中-b 1000M是将文本以1000M大小為機關進行分割;output.txt存儲的是輸出過程中日志資訊而非所抽取的正文文本。

簡易中文自動文摘系統(二):中文語料庫的準備

上圖是抽取出的語料庫,我們發現是繁體中文庫。

我們這裡使用opencc對語料庫進行簡化。同樣,在macOS終端輸入以下指令行:

opencc -i wiki_00 -o zh_wiki_00 -c zht2zhs.ini
opencc -i wiki_01 -o zh_wiki_01 -c zht2zhs.ini      

得到簡體中文的語料包zh_wiki_00和zh_wiki_01。簡化後如下:

簡易中文自動文摘系統(二):中文語料庫的準備

jieba分詞

jieba分詞是支援Python語言的中文分詞元件。jieba分詞在深度學習,自然語言進行中有着廣泛使用,用法簡單。

# encoding=utf-8
import jieba
import jieba.posseg as pseg

seg_list = jieba.cut("我來到南京郵電大學", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list))  # 全模式

seg_list = jieba.cut("我來到南京郵電大學", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))  # 精确模式

seg_list = jieba.cut("他就職于華為南京研究所")  # 預設是精确模式
print("/".join(seg_list))

seg_list = jieba.cut("小明大學畢業于南京郵電大學,後在北京郵電大學深造")
print("/".join(seg_list))

seg_list = jieba.cut_for_search("小明大學畢業于南京郵電大學,後在北京郵電大學深造")  # 搜尋引擎模式
print("/".join(seg_list))

words = pseg.cut("我愛南京的新街口")#檢視詞性
for word, flag in words:
    print('%s %s' %(word, flag))      

 輸出結果如下:

簡易中文自動文摘系統(二):中文語料庫的準備

運作以下代碼,完成語料庫的分詞:

# encoding = utf-8
import jieba
import codecs
import re
f = codecs.open('cut_zh_wiki_00.txt', "a+", 'utf-8')
for line in open("zh_wiki_00"):
    for i in re.sub('[a-zA-Z0-9]', '', line).split(' '):
        if i != '':
            data = list(jieba.cut(i, cut_all = False))
            readline = ' '.join(data) + '\n'
            f.write(readline)
f.close()