挤公交忘穿内裤被挺进,國產日韓亞洲精品AV,午夜漫画,china中国gary廖男男

如何用 Python 中的 NLTK 對中文進行分析和處理

如何用 Python 中的 NLTK 對中文進行分析和處理

其重點在于中文分詞和文本表達的形式。

中文和英文主要的不同之處是中文需要分詞。因為nltk 的處理粒度一般是詞,所以必須要先對文本進行分詞然后再用nltk 來處理(不需要用nltk 來做分詞,直接用分詞包就可以了。嚴重推薦結巴分詞,非常好用)。

中文分詞之后,文本就是一個由每個詞組成的長數組:[word1, word2, word3…… wordn]。之后就可以使用nltk 里面的各種方法來處理這個文本了。比如用FreqDist 統計文本詞頻,用bigrams 把文本變成雙詞組的形式:[(word1, word2), (word2, word3), (word3, word4)……(wordn-1, wordn)]。

再之后就可以用這些來計算文本詞語的信息熵、互信息等。

再之后可以用這些來選擇機器學習的特征,構建分類器,對文本進行分類(商品評論是由多個獨立評論組成的多維數組,網上有很多情感分類的實現例子用的就是nltk 中的商品評論語料庫,不過是英文的。但整個思想是可以一致的)。

另外還有一個困擾很多人的Python 中文編碼問題。多次失敗后我總結出一些經驗。

Python 解決中文編碼問題基本可以用以下邏輯:

utf8(輸入) ——> unicode(處理) ——> (輸出)utf8

Python 里面處理的字符都是都是unicode 編碼,因此解決編碼問題的方法是把輸入的文本(無論是什么編碼)解碼為(decode)unicode編碼,然后輸出時再編碼(encode)成所需編碼。

由于處理的一般為txt 文檔,所以最簡單的方法,是把txt 文檔另存為utf-8 編碼,然后使用Python 處理的時候解碼為unicode(sometexts.decode('utf8')),輸出結果回txt 的時候再編碼成utf8(直接用str() 函數就可以了)。

如何用OpenCV訓練自己的分類器

最近要做一個性別識別的項目,在人臉檢測與五官定位上我采用OPENCV的haartraining進行定位,這里介紹下這兩天我學習的如何用opencv訓練自己的分類器。在這兩天的學習里,我遇到了不少問題,不過我遇到了幾個好心的大俠幫我解決了不少問題,特別是無忌,在這里我再次感謝他的幫助。 一、簡介

目標檢測方法最初由Paul Viola [Viola01]提出,并由Rainer Lienhart [Lienhart02]對這一方法進行了改善。該方法的基本步驟為: 首先,利用樣本(大約幾百幅樣本圖片)的 harr 特征進行分類器訓練,得到一個級聯的boosted分類器。分類器中的級聯是指最終的分類器是由幾個簡單分類器級聯組成。在圖像檢測中,被檢窗口依次通過每一級分類器, 這樣在前面幾層的檢測中大部分的候選區域就被排除了,全部通過每一級分類器檢測的區域即為目標區域。 分類器訓練完以后,就可以應用于輸入圖像中的感興趣區域的檢測。檢測到目標區域分類器輸出為1,否則輸出為0。為了檢測整副圖像,可以在圖像中移動搜索窗口,檢測每一個位置來確定可能的目標。 為了搜索不同大小的目標物體,分類器被設計為可以進行尺寸改變,這樣比改變待檢圖像的尺寸大小更為有效。所以,為了在圖像中檢測未知大小的目標物體,掃描程序通常需要用不同比例大小的搜索窗口對圖片進行幾次掃描。

目前支持這種分類器的boosting技術有四種: Discrete Adaboost, Real Adaboost, Gentle Adaboost and Logitboost。boosted 即指級聯分類器的每一層都可以從中選取一個boosting算法(權重投票),并利用基礎分類器的自我訓練得到。

根據上面的分析,目標檢測分為三個步驟: 1、 樣本的創建

2、 訓練分類器

3、 利用訓練好的分類器進行目標檢測。

二、樣本創建

訓練樣本分為正例樣本和反例樣本,其中正例樣本是指待檢目標樣本,反例樣本指其它任意圖片。

負樣本

負樣本可以來自于任意的圖片,但這些圖片不能包含目標特征。負樣本由背景描述文件來描述。背景描述文件是一個文本文件,每一行包含了一個負樣本圖片的文件名(基于描述文件的相對路徑)。該文件創建方法如下:

采用Dos命令生成樣本描述文件。具體方法是在Dos下的進入你的圖片目錄,比如我的圖片放在D:\face\posdata下,則:

按Ctrl+R打開Windows運行程序,輸入cmd打開DOS命令窗口,輸入d:回車,再輸入cd D:\face\negdata進入圖片路徑,再次輸入dir /b > negdata.dat,則會圖片路徑下生成一個negdata.dat文件,打開該文件將最后一行的negdata.dat刪除,這樣就生成了負樣本描述文件。

對于正樣本,通常的做法是先把所有正樣本裁切好,并對尺寸做規整(即縮放至指定大小),如上圖所示:

由于HaarTraining訓練時輸入的正樣本是vec文件,所以需要使用OpenCV自帶的CreateSamples程序(在你所按照的opencv\bin下,如果沒有需要編譯opencv\apps\HaarTraining\make下的.dsw文件,注意要編譯release版的)將準備好的正樣本轉換為vec文件。轉換的步驟如下:

1) 制作一個正樣本描述文件,用于描述正樣本文件名(包括絕對路徑或相對路徑),正樣本數目以及各正樣本在圖片

中的位置和大小。典型的正樣本描述文件如下: posdata/1(10).bmp 1 1 1 23 23 posdata/1(11).bmp 1 1 1 23 23 posdata腸唬斑舅職矯辦蝎暴莽/1(12).bmp 1 1 1 23 23

不過你可以把描述文件放在你的posdata路徑(即正樣本路徑)下,這樣你就不需要加前面的相對路徑了。同樣它的生成方式可以用負樣本描述文件的生成方法,最后用txt的替換工具將“bmp”全部替換成“bmp 1 1 1 23 23 ”就可以了,如果你的樣本圖片多,用txt替換會導致程序未響應,你可以將內容拷到word下替換,然后再拷回來。bmp后面那五個數字分別表示圖片個數,目標的起始位置及其寬高。這樣就生成了正樣本描述文件posdata.dat。 2) 運行CreateSamples程序。如果直接在VC環境下運行,可以在Project\Settings\Debug屬性頁的Program arguments欄設置運行參數。下面是一個運行參數示例:

-info D:\face\posdata\posdata.dat -vec D:\face\pos.vec -num 50 -w 20 -h 20

表示有50個樣本,樣本寬20,高20,正樣本描述文件為posdata.dat,結果輸出到pos.vec。 或者在dos下輸入:

D:\Program Files\OpenCV\bin\createsamples.exe -info posdata\posdata.dat -vec data\pos.vec -num 50 -w 20 -h 20

運行完了會d:\face\data下生成一個*.vec的文件。該文件包含正樣本數目,寬高以及所有樣本圖像數據。

Createsamples程序的命令行參數: 命令行參數:

-vec <vec_file_name> 訓練好的正樣本的輸出文件名。 -img<image_file_name>

源目標圖片(例如:一個公司圖標) -bg<background_file_name> 背景描述文件。

-num<number_of_samples>

要產生的正樣本的數量,和正樣本圖片數目相同。

-bgcolor<background_color> 背景色(假定當前圖片為灰度圖)。背景色制定了透明色。對于壓縮圖片,顏色方差量由bgthresh參數來指定。則在bgcolor-bgthresh和bgcolor+bgthresh中間的像素被認為是透明的。 -bgthresh<background_color_threshold> -inv

如果指定,顏色會反色 -randinv

如果指定,顏色會任意反色

-maxidev<max_intensity_deviation> 背景色最大的偏離度。

-maxangel<max_x_rotation_angle> -maxangle<max_y_rotation_angle>, -maxzangle<max_x_rotation_angle> 最大旋轉角度,以弧度為單位。 -show

如果指定,每個樣本會被顯示出來,按下esc會關閉這一開關,即不顯示樣本圖片,而創建過程繼續。這是個有用的debug選項。 -w<sample_width>

輸出樣本的寬度(以像素為單位) -h《sample_height》

輸出樣本的高度,以像素為單位。

到此第一步樣本訓練就完成了。恭喜你,你已經學會訓練分類器的五成功力了,我自己學這個的時候花了我一天的時間,估計你幾分鐘就學會了吧。 三、訓練分類器

樣本創建之后,接下來要訓練分類器,這個過程是由haartraining程序來實現的。該程序源碼由OpenCV自帶,且可執行程序在OpenCV安裝目錄的bin目錄下。 Haartraining的命令行參數如下: -data<dir_name>

存放訓練好的分類器的路徑名。 -vec<vec_file_name>

正樣本文件名(由trainingssamples程序或者由其他的方法創建的) -bg<background_file_name>

主站蜘蛛池模板: 阳江市| 防城港市| 芜湖县| 武穴市| 兰考县| 罗山县| 神农架林区| 哈巴河县| 铜川市| 房产| 罗江县| 西乡县| 浑源县| 宜黄县| 五河县| 绥中县| 定远县| 疏附县| 房产| 博白县| 合川市| 阳西县| 饶河县| 乌审旗| 宜宾县| 乌拉特后旗| 林周县| 浑源县| 衡山县| 和平区| 金阳县| 潞西市| 龙游县| 府谷县| 奉化市| 德格县| 东阿县| 昭平县| 宝应县| 南宁市| 秦安县|