自然語言處理系列二十四》詞性標註》詞性標註原理》感知器詞性標註

注:此文章內容均節選自充電了麼創始人,CEO兼CTO陳敬雷老師的新書《分佈式機器學習實戰》(人工智能科學與技術叢書)【陳敬雷編著】【清華大學出版社】

自然語言處理系列二十四

詞性標註

詞性標註(Part-Of-Speech tagging, POS tagging)也被稱爲語法標註(grammatical tagging)或詞類消疑(word-category disambiguation),是語料庫語言學(corpus linguistics)中將語料庫內單詞的詞性按其含義和上下文內容進行標記的文本數據處理技術。
詞性標註可以由人工或特定算法完成,使用機器學習(machine learning)方法實現詞性標註是自然語言處理(Natural Language Processing, NLP)的研究內容。常見的詞性標註算法包括隱馬爾可夫模型(Hidden Markov Model, HMM)、條件隨機場(Conditional random fields, CRFs)等。詞性標註主要被應用於文本挖掘(text mining)和NLP領域,是各類基於文本的機器學習任務,例如語義分析(semantic analysis)和指代消解(coreference resolution)的預處理步驟。下面我們分別從原理和實戰工具給大家詳細講解。

感知器詞性標註

前面講的感知器分詞的時候我們講到感知器的原理,這裏不再重複。按照中文分詞時的經驗,感知機能夠利用豐富的上下文特徵,是優於隱馬爾可夫模型的選擇,對於詞性標註也是如此。

感知機模型詞性標註代碼如下所示:

from  pyhanlp import *
import zipfile
import os
from pyhanlp.static import download, remove_file, HANLP_DATA_PATH
def test_data_path():
    """
    獲取測試數據路徑,位於$root/data/test,根目錄由配置文件指定。
    :return:
    """
    data_path = os.path.join(HANLP_DATA_PATH, 'test')
    if not os.path.isdir(data_path):
        os.mkdir(data_path)
    return data_path
## 驗證是否存在 MSR語料庫,如果沒有自動下載
def ensure_data(data_name, data_url):
    root_path = test_data_path()
    dest_path = os.path.join(root_path, data_name)
    if os.path.exists(dest_path):
        return dest_path
    
    if data_url.endswith('.zip'):
        dest_path += '.zip'
    download(data_url, dest_path)
    if data_url.endswith('.zip'):
        with zipfile.ZipFile(dest_path, "r") as archive:
            archive.extractall(root_path)
        remove_file(dest_path)
        dest_path = dest_path[:-len('.zip')]
    return dest_path
## 指定 PKU 語料庫
PKU98 = ensure_data("pku98", "http://file.hankcs.com/corpus/pku98.zip")
PKU199801 = os.path.join(PKU98, '199801.txt')
PKU199801_TRAIN = os.path.join(PKU98, '199801-train.txt')
PKU199801_TEST = os.path.join(PKU98, '199801-test.txt')
POS_MODEL = os.path.join(PKU98, 'pos.bin')
NER_MODEL = os.path.join(PKU98, 'ner.bin')
## ===============================================
## 以下開始 感知機 詞性標註
AbstractLexicalAnalyzer = JClass('com.hankcs.hanlp.tokenizer.lexical.AbstractLexicalAnalyzer')
PerceptronSegmenter = JClass('com.hankcs.hanlp.model.perceptron.PerceptronSegmenter')
POSTrainer = JClass('com.hankcs.hanlp.model.perceptron.POSTrainer')
PerceptronPOSTagger = JClass('com.hankcs.hanlp.model.perceptron.PerceptronPOSTagger')

def train_perceptron_pos(corpus):
    trainer = POSTrainer()
    trainer.train(corpus, POS_MODEL)  # 訓練感知機模型
    tagger = PerceptronPOSTagger(POS_MODEL)  # 加載
    analyzer = AbstractLexicalAnalyzer(PerceptronSegmenter(), tagger)  # 構造詞法分析器,與感知機分詞器結合,能同時進行分詞和詞性標註。
    print(analyzer.analyze("李狗蛋的希望是希望上學"))  # 分詞+詞性標註
    print(analyzer.analyze("李狗蛋的希望是希望上學").translateLabels())  # 對詞性進行翻譯
    return tagger

if __name__ == '__main__':
    train_perceptron_pos(PKU199801_TRAIN)

運行會有些慢,結果如下:
李狗蛋/nr 的/u 希望/n 是/v 希望/v 上學/v
李狗蛋/人名 的/助詞 希望/名詞 是/動詞 希望/動詞 上學/動詞
這次的運行結果完全正確,感知機成功的識別出 OOV “李狗蛋”的詞性。


總結

此文章有對應的配套視頻,其它更多精彩文章請大家下載充電了麼app,可獲取千萬免費好課和文章,配套新書教材請看陳敬雷新書:《分佈式機器學習實戰》(人工智能科學與技術叢書)

【新書介紹】
《分佈式機器學習實戰》(人工智能科學與技術叢書)【陳敬雷編著】【清華大學出版社】
新書特色:深入淺出,逐步講解分佈式機器學習的框架及應用配套個性化推薦算法系統、人臉識別、對話機器人等實戰項目

【新書介紹視頻】
分佈式機器學習實戰(人工智能科學與技術叢書)新書【陳敬雷】
視頻特色:重點對新書進行介紹,最新前沿技術熱點剖析,技術職業規劃建議!聽完此課你對人工智能領域將有一個嶄新的技術視野!職業發展也將有更加清晰的認識!

【精品課程】
《分佈式機器學習實戰》大數據人工智能AI專家級精品課程

【免費體驗視頻】:
人工智能百萬年薪成長路線/從Python到最新熱點技術

從Python編程零基礎小白入門到人工智能高級實戰系列課

視頻特色: 本系列專家級精品課有對應的配套書籍《分佈式機器學習實戰》,精品課和書籍可以互補式學習,彼此相互補充,大大提高了學習效率。本系列課和書籍是以分佈式機器學習爲主線,並對其依賴的大數據技術做了詳細介紹,之後對目前主流的分佈式機器學習框架和算法進行重點講解,本系列課和書籍側重實戰,最後講幾個工業級的系統實戰項目給大家。 課程核心內容有互聯網公司大數據和人工智能那些事、大數據算法系統架構、大數據基礎、Python編程、Java編程、Scala編程、Docker容器、Mahout分佈式機器學習平臺、Spark分佈式機器學習平臺、分佈式深度學習框架和神經網絡算法、自然語言處理算法、工業級完整系統實戰(推薦算法系統實戰、人臉識別實戰、對話機器人實戰)、就業/面試技巧/職業生涯規劃/職業晉升指導等內容。

【充電了麼公司介紹】

充電了麼App是專注上班族職業培訓充電學習的在線教育平臺。

專注工作職業技能提升和學習,提高工作效率,帶來經濟效益!今天你充電了麼?

充電了麼官網
http://www.chongdianleme.com/

充電了麼App官網下載地址
https://a.app.qq.com/o/simple.jsp?pkgname=com.charged.app

功能特色如下:

【全行業職位】 - 專注職場上班族職業技能提升

覆蓋所有行業和職位,不管你是上班族,高管,還是創業都有你要學習的視頻和文章。其中大數據智能AI、區塊鏈、深度學習是互聯網一線工業級的實戰經驗。

除了專業技能學習,還有通用職場技能,比如企業管理、股權激勵和設計、職業生涯規劃、社交禮儀、溝通技巧、演講技巧、開會技巧、發郵件技巧、工作壓力如何放鬆、人脈關係等等,全方位提高你的專業水平和整體素質。

【牛人課堂】 - 學習牛人的工作經驗

1.智能個性化引擎:

海量視頻課程,覆蓋所有行業、所有職位,通過不同行業職位的技能詞偏好挖掘分析,智能匹配你目前職位最感興趣的技能學習課程。

2.聽課全網搜索

輸入關鍵詞搜索海量視頻課程,應有盡有,總有適合你的課程。

3.聽課播放詳情

視頻播放詳情,除了播放當前視頻,更有相關視頻課程和文章閱讀,對某個技能知識點強化,讓你輕鬆成爲某個領域的資深專家。

【精品閱讀】 - 技能文章興趣閱讀

1.個性化閱讀引擎:

千萬級文章閱讀,覆蓋所有行業、所有職位,通過不同行業職位的技能詞偏好挖掘分析,智能匹配你目前職位最感興趣的技能學習文章。

2.閱讀全網搜索

輸入關鍵詞搜索海量文章閱讀,應有盡有,總有你感興趣的技能學習文章。

【機器人老師】 - 個人提升趣味學習

基於搜索引擎和智能深度學習訓練,爲您打造更懂你的機器人老師,用自然語言和機器人老師聊天學習,寓教於樂,高效學習,快樂人生。

【精短課程】 - 高效學習知識

海量精短牛人課程,滿足你的時間碎片化學習,快速提高某個技能知識點。

上一篇:自然語言處理系列二十三》詞性標註》詞性標註原理》HMM詞性標註
下一篇:自然語言處理系列二十五》詞性標註》詞性標註原理》CRF詞性標註

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章