1. 程式人生 > >最大熵模型進行中文分詞

最大熵模型進行中文分詞

        本文運用字標註法進行中文分詞,最大熵模型方面使用開源的張樂博士的最大熵模型工具包(Maximum Entropy Modeling Toolkit for Python and C++)。使用的中文語料資源是SIGHAN提供的backoff 2005語料,目前封閉測試最好的結果是4-tag+CFR標註分詞,在北大語料庫上可以在準確率,召回率以及F值上達到92%以上的效果,在微軟語料庫上可以到達96%以上的效果。以下我們將轉入這篇文章的主題,基於最大熵模型的字標註中文分詞。

第一部分 最大熵模型工具包安裝說明

        下載安裝和使用張樂博士的最大熵模型工具包,本文使用的是其在github上的程式碼:

maxent , 安裝說明:

        1.進入到程式碼主目錄maxent-master後,正常按照“configure & make & (sudo) make install就可以完成C++庫的安裝。

        注意:(1)gcc編譯器最好是4.7版本以上,我試過在4.4.3上面是不成功的,升級到4.7之後就可以了,具體請參閱:升級Ubuntu中g++和gcc的版本)。

                    (2)gcc版本沒問題了,如果報出 ./configure錯誤,請參閱:Linux下./configure錯誤詳解

        2.再進入到子目錄python下,安裝python包:python setup.py build & (sudo) python setup.py install,這個python庫是通過強大的

SWIG生成的。

        注意:中間如果報出:python.h 沒有各個檔案或目錄 的錯誤,請參閱:解決python.h 沒有那個檔案或目錄 的方法

        關於這個最大熵模型工具包詳情及背景,推薦看官方manual文件,寫得非常詳細。與“中文分詞入門之字標註法2”的做法類似,這裡利用這個工具包example裡帶的英文詞性標註指令碼來做字標註中文分詞,先驗證一下是否可行,關於這個case的解讀,可以參考manual文件裡的“4.6 Case Study: Building a maxent Part-of-Speech Tagger”。

第二部分 分詞實踐

        將backoff2005裡的訓練資料轉化為這個POS Tagger所需的訓練資料格式,語料為北京大學提供的中文分詞語料(來源:1998年1月《人民日報》),採用4-tag(B(Begin,詞首), E(End,詞尾), M(Middle,詞中), S(Single,單字詞))標記集,只處理utf-8編碼文字。原始訓練集./icwb2-data/training/pku_training.utf8的形式是人工分好詞的中文句子形式,如:

邁向  充滿  希望  的  新  世紀  ——  一九九八年  新年  講話  (  附  圖片  1  張  )  
中共中央  總書記  、  國家  主席  江  澤民  
(  一九九七年  十二月  三十一日  )  
12月  31日  ,  中共中央  總書記  、  國家  主席  江  澤民  發表  1998年  新年  講話  《  邁向  充滿  希望  的  新  世紀  》  。  (  新華社  記者  蘭  紅光  攝  )  
同胞  們  、  朋友  們  、  女士  們  、  先生  們  :  
# 4 tags for character tagging: B(Begin), E(End), M(Middle), S(Single)

import codecs
import sys

def character_tagging(input_file, output_file):
    input_data = codecs.open(input_file, 'r', 'utf-8')
    output_data = codecs.open(output_file, 'w', 'utf-8')
    for line in input_data.readlines():
        word_list = line.strip().split()
        for word in word_list:
            if len(word) == 1:
                output_data.write(word + "/S ")
            else:
                output_data.write(word[0] + "/B ")
                for w in word[1:len(word)-1]:
                    output_data.write(w + "/M ")
                output_data.write(word[len(word)-1] + "/E ")
        output_data.write("\n")
    input_data.close()
    output_data.close()

if __name__ == '__main__':
    if len(sys.argv) != 3:
        print "Please use: python character_tagging.py input output"
        sys.exit()
    input_file = sys.argv[1]
    output_file = sys.argv[2]
    character_tagging(input_file, output_file)

        只需執行“python character_tagging.py icwb2-data/training/pku_training.utf8 pku_training.tagging.utf8” 即可得到最大熵詞性標註訓練器所需要的輸入檔案pku_training.tagging.utf8,樣例如下:
邁/B 向/E 充/B 滿/E 希/B 望/E 的/S 新/S 世/B 紀/E —/B —/E 一/B 九/M 九/M 八/M 年/E 新/B 年/E 講/B 話/E (/S 附/S 圖/B 片/E 1/S 張/S )/S 
中/B 共/M 中/M 央/E 總/B 書/M 記/E 、/S 國/B 家/E 主/B 席/E 江/S 澤/B 民/E 
(/S 一/B 九/M 九/M 七/M 年/E 十/B 二/M 月/E 三/B 十/M 一/M 日/E )/S 
1/B 2/M 月/E 3/B 1/M 日/E ,/S 中/B 共/M 中/M 央/E 總/B 書/M 記/E 、/S 國/B 家/E 主/B 席/E 江/S 澤/B 民/E 發/B 表/E 1/B 9/M 9/M 8/M 年/E 新/B 年/E 講/B 話/E 《/S 邁/B 向/E 充/B 滿/E 希/B 望/E 的/S 新/S 世/B 紀/E 》/S 。/S (/S 新/B 華/M 社/E 記/B 者/E 蘭/S 紅/B 光/E 攝/S )/S 
同/B 胞/E 們/S 、/S 朋/B 友/E 們/S 、/S 女/B 士/E 們/S 、/S 先/B 生/E 們/S :/S 
在/S 1/B 9/M 9/M 8/M 年/E 來/B 臨/E 之/B 際/E ,/S 我/S 十/B 分/E 高/B 興/E 地/S 通/B 過/E 中/B 央/E 人/B 民/E 廣/B 播/E 電/B 臺/E 、/S 中/B 國/E 國/B 際/E 廣/B 播/E 電/B 臺/E 和/S 中/B 央/E 電/B 視/M 臺/E ,/S 向/S 全/B 國/E 各/B 族/E 人/B 民/E ,/S 向/S 香/B 港/E 特/B 別/E 行/B 政/M 區/E 同/B 胞/E 、/S 澳/B 門/E 和/S 臺/B 灣/E 同/B 胞/E 、/S 海/B 外/E 僑/B 胞/E ,/S 向/S 世/B 界/E 各/B 國/E 的/S 朋/B 友/E 們/S ,/S 致/B 以/E 誠/B 摯/E 的/S 問/B 候/E 和/S 良/B 好/E 的/S 祝/B 願/E !/S 

        現在就可以用張樂博士最大熵模型工具包中自帶的PosTagger來訓練一個字標註器了:

        ./maxent-master/example/postagger/postrainer.py -f pku_training.tagging.utf8 --iters 100 pku_tagger.model

        這裡指定迭代訓練100輪,沒有什麼依據,僅作此次測試之用,訓練結束之後,我們得到一個字標註所用的最大熵模型: pku_tagger.model,還有幾個副產品。現在我們需要做得是準備一份測試語料,然後利用最大熵模型標註器對測試語料進行標註。原始的測試語料是icwb2-data/testing/pku_test.utf8 ,樣例如下:

共同創造美好的新世紀——二○○一年新年賀詞
(二○○○年十二月三十一日)(附圖片1張)
女士們,先生們,同志們,朋友們:
2001年新年鐘聲即將敲響。人類社會前進的航船就要駛入21世紀的新航程。中國人民進入了向現代化建設第三步戰略目標邁進的新徵程。
在這個激動人心的時刻,我很高興通過中國國際廣播電臺、中央人民廣播電臺和中央電視臺,向全國各族人民,向香港特別行政區同胞、澳門特別行政區同胞和臺灣同胞、海外僑胞,向世界各國的朋友們,致以新世紀第一個新年的祝賀!
過去的一年,是我國社會主義改革開放和現代化建設程序中具有標誌意義的一年。在中國共產黨的領導下,全國各族人民團結奮鬥,國民經濟繼續保持較快的發展勢頭,經濟結構的戰略性調整順利部署實施。西部大開發取得良好開端。精神文明建設和民主法制建設進一步加強。我們在過去幾年取得成績的基礎上,勝利完成了第九個五年計劃。我國已進入了全面建設小康社會,加快社會主義現代化建設的新的發展階段。

        需要將其單字離散化並新增空格,便於標註,使用如下的python指令碼character_split.py 對測試語料進行處理:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: [email protected]
# Copyright 2014 @ YuZhen Technology
#
# split chinese characters and add space between them

import codecs
import sys

def character_split(input_file, output_file):
    input_data = codecs.open(input_file, 'r', 'utf-8')
    output_data = codecs.open(output_file, 'w', 'utf-8')
    for line in input_data.readlines():
        for word in line.strip():
            output_data.write(word + " ")
        output_data.write("\n")
    input_data.close()
    output_data.close()

if __name__ == '__main__':
    if len(sys.argv) != 3:
        print "Please use: python character_split.py input output"
        sys.exit()
    input_file = sys.argv[1]
    output_file = sys.argv[2]
    character_split(input_file, output_file)

        執行“python character_split.py icwb2-data/testing/pku_test.utf8 pku_test.split.utf8”即可得到可用於標註測試的測試語料 pku_test.split.utf8,樣例如下:

共 同 創 造 美 好 的 新 世 紀 — — 二 ○ ○ 一 年 新 年 賀 詞 
( 二 ○ ○ ○ 年 十 二 月 三 十 一 日 ) ( 附 圖 片 1 張 ) 
女 士 們 , 先 生 們 , 同 志 們 , 朋 友 們 : 
2 0 0 1 年 新 年 鍾 聲 即 將 敲 響 。 人 類 社 會 前 進 的 航 船 就 要 駛 入 2 1 世 紀 的 新 航 程 。 中 國 人 民 進 入 了 向 現 代 化 建 設 第 三 步 戰 略 目 標 邁 進 的 新 徵 程 。 
在 這 個 激 動 人 心 的 時 刻 , 我 很 高 興 通 過 中 國 國 際 廣 播 電 臺 、 中 央 人 民 廣 播 電 臺 和 中 央 電 視 臺 , 向 全 國 各 族 人 民 , 向 香 港 特 別 行 政 區 同 胞 、 澳 門 特 別 行 政 區 同 胞 和 臺 灣 同 胞 、 海 外 僑 胞 , 向 世 界 各 國 的 朋 友 們 , 致 以 新 世 紀 第 一 個 新 年 的 祝 賀 ! 
過 去 的 一 年 , 是 我 國 社 會 主 義 改 革 開 放 和 現 代 化 建 設 進 程 中 具 有 標 志 意 義 的 一 年 。 在 中 國 共 產 黨 的 領 導 下 , 全 國 各 族 人 民 團 結 奮 鬥 , 國 民 經 濟 繼 續 保 持 較 快 的 發 展 勢 頭 , 經 濟 結 構 的 戰 略 性 調 整 順 利 部 署 實 施 。 西 部 大 開 發 取 得 良 好 開 端 。 精 神 文 明 建 設 和 民 主 法 制 建 設 進 一 步 加 強 。 我 們 在 過 去 幾 年 取 得 成 績 的 基 礎 上 , 勝 利 完 成 了 第 九 個 五 年 計 劃 。 我 國 已 進 入 了 全 面 建 設 小 康 社 會 , 加 快 社 會 主 義 現 代 化 建 設 的 新 的 發 展 階 段 。 

        現在執行最大熵標註指令碼即可得到字標註結果:

        ./maxent-master/example/postagger/maxent_tagger.py -m pku_tagger.model pku_test.split.utf8 > pku_test.split.tag.utf8

        pku_test.split.tag.utf8即是標註結果,樣例如下

共/B 同/E 創/B 造/E 美/B 好/E 的/S 新/S 世/B 紀/E —/B —/M 二/M ○/M ○/M 一/M 年/E 新/S 年/S 賀/B 詞/E 

(/S 二/S ○/M ○/M ○/M 年/M 十/E 二/S 月/S 三/B 十/M 一/M 日/E )/S (/S 附/S 圖/B 片/E 1/B 張/S )/S 

女/B 士/E 們/S ,/S 先/B 生/E 們/S ,/S 同/B 志/E 們/S ,/S 朋/B 友/E 們/S :/S 

2/M 0/M 0/M 1/M 年/E 新/S 年/B 鍾/E 聲/B 即/E 將/S 敲/B 響/E 。/S 人/B 類/E 社/B 會/E 前/B 進/E 的/S 航/B 船/E 就/S 要/S 駛/B 入/E 2/M 1/B 世/M 紀/E 的/S 新/S 航/B 程/E 。/S 中/B 國/E 人/B 民/E 進/B 入/E 了/S 向/S 現/B 代/M 化/E 建/B 設/E 第/B 三/M 步/E 戰/B 略/E 目/B 標/E 邁/B 進/E 的/S 新/S 徵/B 程/E 。/S 

在/S 這/B 個/E 激/B 動/E 人/B 心/E 的/S 時/B 刻/E ,/S 我/S 很/S 高/B 興/E 通/B 過/E 中/B 國/E 國/B 際/E 廣/B 播/E 電/B 臺/E 、/S 中/B 央/E 人/B 民/E 廣/B 播/E 電/B 臺/E 和/S 中/B 央/E 電/B 視/M 臺/E ,/S 向/S 全/B 國/E 各/B 族/E 人/B 民/E ,/S 向/S 香/B 港/E 特/B 別/E 行/B 政/M 區/E 同/B 胞/E 、/S 澳/B 門/E 特/B 別/E 行/B 政/M 區/E 同/B 胞/E 和/S 臺/B 灣/E 同/B 胞/E 、/S 海/B 外/E 僑/B 胞/E ,/S 向/S 世/B 界/E 各/B 國/E 的/S 朋/B 友/E 們/S ,/S 致/B 以/E 新/S 世/B 紀/E 第/B 一/E 個/S 新/B 年/E 的/S 祝/B 賀/E !/S 

過/B 去/E 的/S 一/B 年/E ,/S 是/S 我/B 國/E 社/B 會/M 主/M 義/E 改/B 革/E 開/B 放/E 和/S 現/B 代/M 化/E 建/B 設/E 進/B 程/E 中/S 具/B 有/E 標/B 志/E 意/B 義/E 的/S 一/B 年/E 。/S 在/S 中/B 國/E 共/B 產/M 黨/E 的/S 領/B 導/E 下/S ,/S 全/B 國/E 各/B 族/E 人/B 民/E 團/B 結/E 奮/B 鬥/E ,/S 國/B 民/E 經/B 濟/E 繼/B 續/E 保/B 持/E 較/S 快/S 的/S 發/B 展/E 勢/B 頭/E ,/S 經/B 濟/E 結/B 構/E 的/S 戰/B 略/M 性/E 調/B 整/E 順/B 利/E 部/B 署/E 實/B 施/E 。/S 西/B 部/E 大/B 開/E 發/B 取/E 得/S 良/B 好/E 開/B 端/E 。/S 精/B 神/M 文/M 明/E 建/B 設/E 和/S 民/B 主/M 法/M 制/E 建/B 設/E 進/B 一/M 步/E 加/B 強/E 。/S 我/B 們/E 在/S 過/B 去/E 幾/S 年/S 取/B 得/E 成/B 績/E 的/S 基/B 礎/E 上/S ,/S 勝/B 利/E 完/B 成/E 了/S 第/B 九/E 個/S 五/S 年/S 計/B 劃/E 。/S 我/B 國/E 已/S 進/B 入/E 了/S 全/B 面/E 建/B 設/E 小/B 康/E 社/B 會/E ,/S 加/B 快/E 社/B 會/M 主/M 義/E 現/B 代/M 化/E 建/B 設/E 的/S 新/S 的/S 發/B 展/E 階/B 段/E 。/S 

        使用下面的指令碼,按標註的詞位資訊講這份結果再轉化為分詞結果,同時去掉檔案中的空行, character_2_word.py

#!/usr/bin/env python
#-*-coding:utf-8-*-
#
#Combining characters based the 4-tag tagging info

import codecs
import sys

def character_2_word(input_file, output_file):
    input_data = codecs.open(input_file, 'r', 'utf-8')
    output_data = codecs.open(output_file, 'w', 'utf-8')
    #4-tags for character tagging: B(Begin), M(Middle), E(End), S(Single)
    for line in input_data.readlines():
        if len(line) > 1:
            char_tag_list = line.strip().split()
            for char_tag in char_tag_list:
                char_tag_pair = char_tag.split('/')
                char = char_tag_pair[0]
                tag = char_tag_pair[1]
                if tag == 'B':
                    output_data.write(' ' + char)
                elif tag == 'M':
                    output_data.write(char)
                elif tag == 'E':
                    output_data.write(char + ' ')
                else: #tag == 'S':
                    output_data.write(' ' + char + ' ')
            output_data.write("\n")
    input_data.close()
    output_data.close()

if __name__ == '__main__':
    if len(sys.argv) != 3:
        print "Usage: python character_2_word.py input output"
        sys.exit()
    input_file = sys.argv[1]
    output_file = sys.argv[2]
    character_2_word(input_file, output_file)




        執行 “python character_2_word.py pku_test.split.tag.utf8 pku_test.split.tag2word.utf8” 即可得到合併後的分詞結果pku_test.split.tag2word.utf8,樣例如下:

 共同  創造  美好  的  新  世紀  ——二○○一年  新  年  賀詞 
 (  二 ○○○年十  二  月  三十一日  )  (  附  圖片  1 張  ) 
 女士  們  ,  先生  們  ,  同志  們  ,  朋友  們  : 
2001年  新  年鍾  聲即  將  敲響  。  人類  社會  前進  的  航船  就  要  駛入 2 1世紀  的  新  航程  。  中國  人民  進入  了  向  現代化  建設  第三步  戰略  目標  邁進  的  新  征程  。 
 在  這個  激動  人心  的  時刻  ,  我  很  高興  通過  中國  國際  廣播  電臺  、  中央  人民  廣播  電臺  和  中央  電視臺  ,  向  全國  各族  人民  ,  向  香港  特別  行政區  同胞  、  澳門  特別  行政區  同胞  和  臺灣  同胞  、  海外  僑胞  ,  向  世界  各國  的  朋友  們  ,  致以  新  世紀  第一  個  新年  的  祝賀  ! 
 過去  的  一年  ,  是  我國  社會主義  改革  開放  和  現代化  建設  程序  中  具有  標誌  意義  的  一年  。  在  中國  共產黨  的  領導  下  ,  全國  各族  人民  團結  奮鬥  ,  國民  經濟  繼續  保持  較  快  的  發展  勢頭  ,  經濟  結構  的  戰略性  調整  順利  部署  實施  。  西部  大開  發取  得  良好  開端  。  精神文明  建設  和  民主法制  建設  進一步  加強  。  我們  在  過去  幾  年  取得  成績  的  基礎  上  ,  勝利  完成  了  第九  個  五  年  計劃  。  我國  已  進入  了  全面  建設  小康  社會  ,  加快  社會主義  現代化  建設  的  新  的  發展  階段  。 

        有了這個字標註分詞結果,我們就可以利用backoff2005的測試指令碼來測一下這次分詞的效果了:

        ./icwb2-data/scripts/score ./icwb2-data/gold/pku_training_words.utf8 ./icwb2-data/gold/pku_test_gold.utf8 pku_test.split.tag2word.utf8 > pku_maxent_segment.score

        結果如下:

        從上圖中看出,召回率為83.7%,準確率為84.1%。

相關推薦

模型進行中文

        本文運用字標註法進行中文分詞,最大熵模型方面使用開源的張樂博士的最大熵模型工具包(Maximum Entropy Modeling Toolkit for Python and C++)。使用的中文語料資源是SIGHAN提供的backoff 2005語料,

用正向和逆向匹配演算法進行中文(續)

一、結果分析:         1.程式執行結果,如下圖所示:         2.總體分析。         (1)正向和逆向匹配都正確的句子數目為 1731,佔句子總數的39.0%         (2)正向最大匹配完全正確的句子數目為 1917,佔句子總數的43

模型進行字標註中文(Python實現)

        同前面的那篇文章一樣(參見:最大熵模型進行中文分詞),本文運用字標註法進行中文分詞,分別使用4-tag和6-tag對語料進行字標註,觀察分詞效果。前面的文章中使用了模型工具包中自帶的一個樣例進行4-tag中文分詞,但由於其選取的特徵是針對英文詞性標註開發

基於Tire樹和概率法的中文功能的Java實現

對於分詞系統的實現來說,主要應集中在兩方面的考慮上:一是對語料庫的組織,二是分詞策略的制訂。 1.   Tire樹 Tire樹,即字典樹,是通過字串的公共字首來對字串進行統計、排序及儲存的一種樹形結構。其具有如下三個性質: 1)      根節點不包含字元(或漢字),除根節

python 讀寫txt文件並用jieba庫進行中文

mage 亂碼 技術分享 流行 ictclas 函數 結果 class 配置 python用來批量處理一些數據的第一步吧。 對於我這樣的的萌新。這是第一步。 #encoding=utf-8 file=‘test.txt‘ fn=open(file,"r") print f

模型

定性 全部 投資 情況 進行 算法 出了 信息 簡單 我們不要把雞蛋都放在一個籃子裏面講得就是最大熵原理,從投資的角度來看這就是風險最小原則。從信息論的角度來說,就是保留了最大的不確定性,也就是讓熵達到了最大。最大熵院裏指出,對一個隨機事件的概率分布進行預測的時候,我

通俗理解模型

log logs ima 最大熵 ges es2017 最大熵模型 blog image 通俗理解最大熵模型

利用隱馬爾科夫鏈(HMM)模型實現中文

stat back viterbi sub ont 漢字 display state 出現 1.什麽是HMM? 隱馬爾科夫鏈(HMM)是一個五元組: 隱狀態集合 ; 觀測狀態集合; 狀態概率轉移矩陣; 觀察狀態概率矩陣; 初始狀態概率分布; 2.HMM有兩個假設: 齊

轉載:Spark 使用ansj進行中文

轉載:https://www.cnblogs.com/JustIsQiGe/p/8006734.html 在Spark中使用ansj分詞先要將ansj_seg-5.1.1.jar和nlp-lang-1.7.2.jar加入工程 ansj原始碼github:https://github.com/

淺談模型中的特徵

最近在看到自然語言處理中的條件隨機場模型時,發現了裡面涉及到了最大熵模型,這才知道最大熵模型自己還是一知半解,於是在知乎上查閱了很多資料,發現特別受用,飲水思源,我將自己整理的一些資料寫下來供大家參考 僅僅對輸入抽取特徵。即特徵函式為 對輸入和輸出同時抽取特徵。即特徵函式為

斯坦福大學-自然語言處理入門 筆記 第十一課 模型與判別模型(2)

一、最大熵模型 1、模型介紹 基本思想:我們希望資料是均勻分佈的,除非我們有其他的限制條件讓給我們相信資料不是均勻分佈的。均勻分佈代表高熵(high entropy)。所以,最大熵模型的基本思想就是我們要找的分佈是滿足我們限制條件下,同時熵最高的分佈。 熵:表示分佈的不

斯坦福大學-自然語言處理入門 筆記 第八課 模型與判別模型

一、生成模型與判別模型 1、引言 到目前為止,我們使用的是生成模型(generative model),但是在實際使用中我們也在大量使用判別模型(discriminative model),主要是因為它有如下的優點: 準確性很高 更容易包含很多和

使用Java呼叫Stanford CoreNLP 進行中文

Stanford CoreNLP 進行中文分詞 中文分詞的工具有很多,使用斯坦福的CoreNLP進行分詞的教程網上也不少,本篇部落格是記錄自己在使用Stanford CoreNLP進行中文分詞的學習筆記。 1. 工具準備 1.1 下載NLP相關包: 網址: https://stanfordn

【統計學習方法-李航-筆記總結】六、邏輯斯諦迴歸和模型

本文是李航老師《統計學習方法》第六章的筆記,歡迎大佬巨佬們交流。 主要參考部落格: http://www.cnblogs.com/YongSun/p/4767100.html https://blog.csdn.net/tina_ttl/article/details/53519391

spark叢集環境下使用hanlp進行中文

標籤:zab table import shel – java standard mas tokenizer 1、將下載的hanlp-portable-1.6.2.jar複製到叢集spark/jar資料夾下面 2、啟動spark叢集 spark/bin/spark-shel

統計學習---邏輯斯蒂迴歸與模型

邏輯斯蒂迴歸和最大熵模型 邏輯斯蒂分佈 邏輯斯蒂迴歸模型 將權值向量和輸入向量加以擴充後的邏輯斯蒂模型為 模型引數估計 極大似然估計法 最大熵模型 最大熵原理:在所有可能的概率模型中,熵最大的模型是最好的模型。通常用約

【機器學習】模型原理小結

最大熵模型(maximum entropy model, MaxEnt)也是很典型的分類演算法了,它和邏輯迴歸類似,都是屬於對數線性分類模型。在損失函式優化的過程中,使用了和支援向量機類似的凸優化技術。而對熵的使用,讓我們想起了決策樹演算法中的ID3和C4.5演算法。理解了最

模型(MaxEnt)解析

給出了最大熵模型的一般形式(其中的f為特徵函式,後面我們還會講到):  而文獻【5】中我們從另外一種不同的角度也得出了多元邏輯迴歸的一般形式: 可見,儘管採用的方法不同,二者最終是殊途同歸、萬法歸宗了。 所以我們說無論是多元邏輯迴歸,還是最大熵模型,又或者是Sof

使用jieba和wordcloud進行中文並生成《悲傷逆流成河》

因為詞雲有利於體現文字資訊,所以我就將那天無聊時爬取的《悲傷逆流成河》的評論處理了一下,生成了詞雲。 關於爬取影評的爬蟲大概長這個樣子(實際上是沒有爬完的): #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/10/15 16:3

一些對模型的理解

一、最大熵原理 概念:對於隨機變數X,其概率分佈為P(X),一般在約束條件下會有無數P(X)存在。最大熵原理就是在所有符合約束條件的P(X)中,熵最大的模型即為最優模型。 二、最大熵模型 最大熵模型,就是基於最大熵原理的分類模型。李航《統計學習方法》中對最大熵模型的描述