文本分類演算法
A. 目前最好的文本分類演算法
文本分類問題與其它分類問題沒有本質上的區別,其方法可以歸結為根據待分類數據的某些特徵來進行匹配,當然完全的匹配是不太可能的,因此必須(根據某種評價標准)選擇最優的匹配結果,從而完成分類。
B. 文本分類的演算法是屬於機器學習么
經過演算法不斷自己調優就可以算機器學習,簡單理解就是演算法來進行分類而且效果很好
如果有標簽屬於監督學習,沒有標簽屬於無監督學習
C. 怎樣用隨機森林演算法實現文本分類
不了解什麼是隨機森林。
感覺應該是一種演算法。
如果做計算機視覺建議你用OpenCV,
R語言主要用在統計分析、機器學習領域。
你找幾篇這方面的文獻看看別人跟你做類似課題時是用C++還是R。
D. 文本分類的方法
文本分類問題與其它分類問題沒有本質上的區別,其方法可以歸結為根據待分類數據的某些特徵來進行匹配,當然完全的匹配是不太可能的,因此必須(根據某種評價標准)選擇最優的匹配結果,從而完成分類。 後來人們意識到,究竟依據什麼特徵來判斷文本應當隸屬的類別這個問題,就連人類自己都不太回答得清楚,有太多所謂「只可意會,不能言傳」的東西在裡面。人類的判斷大多依據經驗以及直覺,因此自然而然的會有人想到何讓機器像人類一樣自己來通過對大量同類文檔的觀察來自己總結經驗,作為今後分類的依據。這便是統計學習方法的基本思想。
統計學習方法需要一批由人工進行了准確分類的文檔作為學習的材料(稱為訓練集,注意由人分類一批文檔比從這些文檔中總結出准確的規則成本要低得多),計算機從這些文檔中挖掘出一些能夠有效分類的規則,這個過程被形象的稱為訓練,而總結出的規則集合常常被稱為分類器。訓練完成之後,需要對計算機從來沒有見過的文檔進行分類時,便使用這些分類器來進行。這些訓練集包括sogou文本分類分類測試數據、中文文本分類分類語料庫,包含Arts、Literature等類別的語料文本、可用於聚類的英文文本數據集、網易分類文本分類文本數據、tc-corpus-train(語料庫訓練集,適用於文本分類分類中的訓練)、2002年中文網頁分類訓練集CCT2002-v1.1等。
現如今,統計學習方法已經成為了文本分類領域絕對的主流。主要的原因在於其中的很多技術擁有堅實的理論基礎(相比之下,知識工程方法中專家的主觀因素居多),存在明確的評價標准,以及實際表現良好。統計分類演算法
將樣本數據成功轉化為向量表示之後,計算機才算開始真正意義上的「學習」過程。常用的分類演算法為:
決策樹,Rocchio,樸素貝葉斯,神經網路,支持向量機,線性最小平方擬合,kNN,遺傳演算法,最大熵,Generalized Instance Set等。在這里只挑幾個最具代表性的演算法侃一侃。
Rocchio演算法
Rocchio演算法應該算是人們思考文本分類問題時最先能想到,也最符合直覺的解決方法。基本的思路是把一個類別里的樣本文檔各項取個平均值(例如把所有 「體育」類文檔中詞彙「籃球」出現的次數取個平均值,再把「裁判」取個平均值,依次做下去),可以得到一個新的向量,形象的稱之為「質心」,質心就成了這 個類別最具代表性的向量表示。再有新文檔需要判斷的時候,比較新文檔和質心有多麼相像(八股點說,判斷他們之間的距離)就可以確定新文檔屬不屬於這個類。 稍微改進一點的Rocchio演算法不僅考慮屬於這個類別的文檔(稱為正樣本),也考慮不屬於這個類別的文檔數據(稱為負樣本),計算出來的質心盡量靠近正樣本同時盡量遠離負樣本。Rocchio演算法做了兩個很致命的假設,使得它的性能出奇的差。一是它認為一個類別的文檔僅僅聚集在一個質心的周圍,實際情況往往不是如此(這樣的數據稱為線性不可分的);二是它假設訓練數據是絕對正確的,因為它沒有任何定量衡量樣本是否含有雜訊的機制,因而也就對錯誤數據毫無抵抗力。
不過Rocchio產生的分類器很直觀,很容易被人類理解,演算法也簡單,還是有一定的利用價值的,常常被用來做科研中比較不同演算法優劣的基線系統(Base Line)。
樸素貝葉斯演算法
貝葉斯演算法關注的是文檔屬於某類別概率。文檔屬於某個類別的概率等於文檔中每個詞屬於該類別的概率的綜合表達式。而每個詞屬於該類別的概率又在一定程度上 可以用這個詞在該類別訓練文檔中出現的次數(詞頻信息)來粗略估計,因而使得整個計算過程成為可行的。使用樸素貝葉斯演算法時,在訓練階段的主要任務就是估計這些值。
樸素貝葉斯演算法的公式並不是只有一個。
首先對於每一個樣本中的元素要計算先驗概率。其次要計算一個樣本對於每個分類的概率,概率最大的分類將被採納。所以
其中P(d| Ci)=P(w1|Ci) P(w2|Ci) …P(wi|Ci) P(w1|Ci) …P(wm|Ci) (式1)
P(w|C)=元素w在分類為C的樣本中出現次數/數據整理後的樣本中元素的總數(式2)
這其中就蘊含著樸素貝葉斯演算法最大的兩個缺陷。
首先,P(d| Ci)之所以能展開成(式1)的連乘積形式,就是假設一篇文章中的各個詞之間是彼此獨立的,其中一個詞的出現絲毫不受另一個詞的影響(回憶一下概率論中變 量彼此獨立的概念就可以知道),但這顯然不對,即使不是語言學專家的我們也知道,詞語之間有明顯的所謂「共現」關系,在不同主題的文章中,可能共現的次數 或頻率有變化,但彼此間絕對談不上獨立。
其二,使用某個詞在某個類別訓練文檔中出現的次數來估計P(wi|Ci)時,只在訓練樣本數量非常多的情況下才比較准確(考慮扔硬幣的問題,得通過大量觀 察才能基本得出正反面出現的概率都是二分之一的結論,觀察次數太少時很可能得到錯誤的答案),而需要大量樣本的要求不僅給前期人工分類的工作帶來更高要求 (從而成本上升),在後期由計算機處理的時候也對存儲和計算資源提出了更高的要求。
但是稍有常識的技術人員都會了解,數據挖掘中佔用大量時間的部分是數據整理。在數據整理階段,可以根據詞彙的情況生成字典,刪除冗餘沒有意義的詞彙,對於單字和重要的片語分開計算等等。
這樣可以避免樸素貝葉斯演算法的一些問題。其實真正的問題還是存在於演算法對於信息熵的計算方式。
樸素貝葉斯演算法在很多情況下,通過專業人員的優化,可以取得極為良好的識別效果。最為人熟悉的兩家跨國軟體公司在目前仍採用樸素貝葉斯演算法作為有些軟體自然語言處理的工具演算法。
kNN演算法
最近鄰演算法(kNN):在給定新文檔後,計算新文檔特徵向量和訓練文檔集中各個文檔的向量的相似度,得到K篇與該新文 檔距離最近最相似的文檔,根據這K篇文檔所屬的類別判定新文檔所屬的類別(注意這也意味著kNN演算法根本沒有真正意義上的「訓練」階段)。這種判斷方法很 好的克服了Rocchio演算法中無法處理線性不可分問題的缺陷,也很適用於分類標准隨時會產生變化的需求(只要刪除舊訓練文檔,添加新訓練文檔,就改變了 分類的准則)。
kNN唯一的也可以說最致命的缺點就是判斷一篇新文檔的類別時,需要把它與現存的所有訓練文檔全都比較一遍,這個計算代價並不是每個系統都能夠承受的(比 如我將要構建的一個文本分類系統,上萬個類,每個類即便只有20個訓練樣本,為了判斷一個新文檔的類別,也要做20萬次的向量比較!)。一些基於kNN的 改良方法比如Generalized Instance Set就在試圖解決這個問題。
kNN也有另一個缺點,當樣本不平衡時,如一個類的樣本容量很大,而其他類樣本容量很小時,有可能導致當輸入一個新樣本時,該樣本的K個鄰居中大容量類的樣本佔多數。 SVM(Support Vector Machine)是Cortes和Vapnik於1995年首先提出的,它在解決小樣本、非線性及高維模式識別中表現出許多特有的優勢,並能夠推廣應用到函數擬合等其他機器學習問題中。
支持向量機方法是建立在統計學習理論的VC維理論和結構風險最小原理基礎上的,根據有限的樣本信息在模型的復雜性(即對特定訓練樣本的學習精度,Accuracy)和學習能力(即無錯誤地識別任意樣本的能力)之間尋求最佳折衷,以期獲得最好的推廣能力(或稱泛化能力)。
SVM 方法有很堅實的理論基礎,SVM 訓練的本質是解決一個二次規劃問題(Quadruple Programming,指目標函數為二次函數,約束條件為線性約束的最優化問題),得到的是全局最優解,這使它有著其他統計學習技術難以比擬的優越性。 SVM分類器的文本分類效果很好,是最好的分類器之一。同時使用核函數將 原始的樣本空間向高維空間進行變換,能夠解決原始樣本線性不可分的問題。其缺點是核函數的選擇缺乏指導,難以針對具體問題選擇最佳的核函數;另外SVM 訓練速度極大地受到訓練集規模的影響,計算開銷比較大,針對SVM 的訓練速度問題,研究者提出了很多改進方法,包括Chunking 方法、Osuna演算法、SMO 演算法和交互SVM 等。SVM分類器的優點在於通用性較好,且分類精度高、分類速度快、分類速度與訓練樣本個數無關,在查准和查全率方面都略優於kNN及樸素貝葉斯方法。
E. 文本分類器(基於KNN演算法),語言最好是Matlab的,有測試數據集。。。。
function [ccr,pgroupt]=knnt(x,group,K,dist,xt,groupt)
%#
%# AIM: to classify test set objects or unknown objects with the
%# K Nearest Neighbour method
%#
%# PRINCIPLE: KNN is a supervised, deterministic, non-parametric
%# classification method. It uses the majority rule to
%# assign new objects to a class.
%# It is assumed that the number of objects in each class
%# is similar.
%# There are no assumptions about the data distribution and
%# the variance-covariance matrices of each class.
%# There is no limitation of the number of variables when
%# the Euclidean distance is used.
%# However, when the correlation coefficient is used, the
%# number of variables must be larger than 1.
%# Ref: Massart D. L., Vandeginste B. G. M., Deming S. N.,
%# Michotte Y. and Kaufman L., Chemometrics: a textbook,
%# Chapter 23, 395-397, Elsevier Science Publishers B. V.,
%# Amsterdam 1988.
%#
%# INPUT: x: (mxn) data matrix with m objects and n variables,
%# containing samples of several classes (training set)
%# group: (mx1) column vector labelling the m objects from the
%# training set
%# K: integer, number of nearest neighbours
%# dist: integer,
%# = 1, Euclidean distance
%# = 2, Correlation coefficient, (No. of variables >1)
%# xt: (mtxn) data matrix with mt objects and n variables
%# (test set or unknowns)
%# groupt: (mtx1) column vector labelling the mt objects from
%# the test set
%# --> if the new objects are unknown, input [].
%#
%# OUTPUT: ccr: scalar, correct classification rate
%# pgroupt:row vector, predicted class label for the test set
%# 0 means that the object is not classified to any
%# class
%#
%# SUBROUTINES: sortlab.m: sorts the group label vector into classes
%#
%# AUTHOR: Wen Wu
%# Copyright(c) 1997 for ChemoAc
%# FABI, Vrije Universiteit Brussel
%# Laarbeeklaan 103 1090 Jette
%#
%# VERSION: 1.1 (28/02/1998)
%#
%# TEST: Andrea Candolfi
%#
function [ccr,pgroupt]=knnt(x,group,K,dist,xt,groupt);
if nargin==5, groupt=[]; end % for unknown objects
distance=dist; clear dist % change variable
if size(group,1)>1,
group=group'; % change column vector into row vector
groupt=groupt'; % change column vector into row vector
end;
[m,n]=size(x); % size of the training set
if distance==2 & n<2, error('Number of variables must > 1'),end % to check the number of variables when using correlation coefficient
[mt,n]=size(xt); % size of the test set
dis=zeros(mt,m); % initial values for the distance (matrix of zeros)
% Calculation of the distance for each test set object
for i=1:mt
for j=1:m % between each training set object and each test set object
if distance==1
dis(i,j)=(xt(i,:)-x(j,:))*(xt(i,:)-x(j,:))'; % Euclidian distance
else
r=corrcoef(xt(i,:)',x(j,:)'); % Correlation coefficient matrix
r=r(1,2); % Correlation coefficient
dis(i,j)=1-r*r; % 1 - the power of correlation coefficient
end
end
end
% Finding of the nearest neighbours
lab=zeros(1,mt); % initial values of lab
for i=1:mt % for each test object
[a,b]=sort(dis(i,:)); % sort distances
b=b(find(a<=a(K))); % to find the nearest neighbours indices
b=group(b); % the nearest neighbours objects
[ng,lgroup]=sortlab(b); % calculate the number of objects from each class in the nearest neighbours
a=find(ng==max(ng)); % find the class with the maximum number of objects
if length(a)==1 % only one class
lab(i)=lgroup(a); % class label
else
lab(i)=0; % more than one class
end
end
% Calculation of the success rate
if ~isempty(groupt)
dif=groupt-lab; % difference between predicted class label and known class label
ccr=sum(dif==0)/mt; % success rate
end
pgroupt=lab; % the output vector
F. 實戰文本分類,深度學習是最優演算法嗎
深度學習是個籠統概念,深度學習中的卷積神經網路、循環神經網路、遞歸神經網路等不同網路結構以及不同網路組合都會在文本分類任務中產生不同相同效果。
深度學習網路演算法千千萬,無所謂哪一種是最優演算法,不同種演算法的組合也許會取得意外的效果。
總而言之,實踐是檢驗真理的唯一標准。
G. 什麼是文本分類
用電腦對文本集(或其他實體或物件)按照一定的分類體系或標准進行自動分類標記 基於分類體系的自動分類 基於資訊過濾和用戶興趣(Profiles)的自動分類 基於分類體系的自動分類 所謂分類體系就是針對詞的統計來分類 關鍵字分類,現在的全文檢索 詞的正確切分不易分辨(白痴造句法) 基於資訊過濾和用戶興趣的自動分類 學習人類對文本分類的知識和策略 從人對文本和類別之間相關性判斷來學習文件用字和標記類別之間的關聯 請參考: n F. Sebastiani. 「Machine learning in automated text categorization.」 ACM Computing Surveys, 34(1), pp. 1-47, 2002. (.pdf) n M. Rogati and Y. Yang. High-performing feature selection for text classification ACM CIKM 2002. (.pdf) n Tie-Yan Liu, Yiming Yang, Hao Wan, et al, Support Vector Machines Classification with Very Large Scale Taxonomy, SIGKDD Explorations, Special Issue on Text Mining and Natural Language Processing, vol.7, issue.1, pp36~43, 2005. (.pdf) n 蘇金樹、張博鋒、徐 昕,基於機器學習的文本分類技術研究進展 軟體學報 17(9): 1848-1859, 2006.9 (.pdf) n 基於統計學習理論的支持向量機演算法研究 http://www.youngfan.com/nn/SVM.pdf (.pdf) n 瓦普尼克(著),張學工(譯),統計學習理論的本質 清華大學出版社 2004.6 n SVMlight http://svmlight.joachims.org/ n SVMTorch http://bengio.abracadoudou.com/projects/SVMTorch.html
H. knn演算法用來文本分類怎麼樣
一般
I. 做文本分類的一般思路是什麼啊
文本預處理→文本表示→分類演算法→評估函數
J. 文本分類和聚類有什麼區別
文本分類和聚類有什麼區別
簡單點說:分類是將一篇文章或文本自動識別出來,按照已經定義好的類別進行匹配,確定。聚類就是將一組的文章或文本信息進行相似性的比較,將比較相似的文章或文本信息歸為同一組的技術。分類和聚類都是將相似對象歸類的過程。區別是,分類是事先定義好類別,類別數不變。分類器需要由人工標注的分類訓練語料訓練得到,屬於有指導學習范疇。聚類則沒有事先預定的類別,類別數不確定。聚類不需要人工標注和預先訓練分類器,類別在聚類過程中自動生成。分類適合類別或分類體系已經確定的場合,比如按照國圖分類法分類圖書;聚類則適合不存在分類體系、類別數不確定的場合,一般作為某些應用的前端,比如多文檔文摘、搜索引擎結果後聚類(元搜索)等。
分類(classification )是找出描述並區分數據類或概念的模型(或函數),以便能夠使用模型預測類標記未知的對象類。分類技術在數據挖掘中是一項重要任務,目前商業上應用最多。分類的目的是學會一個分類函數或分類模型(也常常稱作分類器),該模型能把資料庫中的數據項映射到給定類別中的某一個類中。
要構造分類器,需要有一個訓練樣本數據集作為輸入。訓練集由一組資料庫記錄或元組構成,每個元組是一個由有關欄位(又稱屬性或特徵)值組成的特徵向量,此外,訓練樣本還有一個類別標記。一個具體樣本的形式可表示為:(v1,v2,...,vn; c);其中vi表示欄位值,c表示類別。分類器的構造方法有統計方法、機器學習方法、神經網路方法等等。
不同的分類器有不同的特點。有三種分類器評價或比較尺度:1)預測准確度;2)計算復雜度;3)模型描述的簡潔度。預測准確度是用得最多的一種比較尺度,特別是對於預測型分類任務。計算復雜度依賴於具體的實現細節和硬體環境,在數據挖掘中,由於操作對象是巨量的數據,因此空間和時間的復雜度問題將是非常重要的一個環節。對於描述型的分類任務,模型描述越簡潔越受歡迎。
另外要注意的是,分類的效果一般和數據的特點有關,有的數據雜訊大,有的有空缺值,有的分布稀疏,有的欄位或屬性間相關性強,有的屬性是離散的而有的是連續值或混合式的。目前普遍認為不存在某種方法能適合於各種特點的數據
聚類(clustering)是指根據「物以類聚」原理,將本身沒有類別的樣本聚集成不同的組,這樣的一組數據對象的集合叫做簇,並且對每一個這樣的簇進行描述的過程。它的目的是使得屬於同一個簇的樣本之間應該彼此相似,而不同簇的樣本應該足夠不相似。與分類規則不同,進行聚類前並不知道將要劃分成幾個組和什麼樣的組,也不知道根據哪些空間區分規則來定義組。其目的旨在發現空間實體的屬性間的函數關系,挖掘的知識用以屬性名為變數的數學方程來表示。聚類技術正在蓬勃發展,涉及范圍包括數據挖掘、統計學、機器學習、空間資料庫技術、生物學以及市場營銷等領域,聚類分析已經成為數據挖掘研究領域中一個非常活躍的研究課題。常見的聚類演算法包括:K-均值聚類演算法、K-中心點聚類演算法、CLARANS、BIRCH、CLIQUE、DBSCAN等。關鍵詞:文本分類 文本聚類 數據挖掘 機器學習