日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于统计概率和机器学习的文本分类技术

發(fā)布時間:2025/7/25 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于统计概率和机器学习的文本分类技术 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
基于統(tǒng)計(jì)概率和機(jī)器學(xué)習(xí)的文本分類技術(shù)
—— 社區(qū)產(chǎn)品機(jī)器審核機(jī)制

一、現(xiàn)狀 ?

目前,所在公司社區(qū)類產(chǎn)品(論壇、博客、百科)每天都會接收到大量的垃圾、灌水信息,高峰期16小時內(nèi)(晚6點(diǎn)以后到第二天9點(diǎn)前)可以達(dá)到十萬量級。大量的人力、時間被浪費(fèi)在刪除、屏蔽這些重復(fù)無用信息上,從而導(dǎo)致無法更好地為客戶服務(wù)。用人工審核的方式去對抗機(jī)器發(fā)帖,類似于二戰(zhàn)時的“長矛戰(zhàn)坦克”。如果繼續(xù)采用這種方式,正在和未來可能面臨的問題主要一下幾點(diǎn):?
  • 未來版本量增加導(dǎo)致人工審核壓力的增大。
  • 目前負(fù)責(zé)版本審核的人員約2-3人/天,基本能保證答案在4-5小時內(nèi)被審核,但該速度不是令大多數(shù)用戶滿意的
  • 對于百科wiki類產(chǎn)品,除了判別是否違禁以外,還有一個需求,就是客戶答案是否與問題確實(shí)相關(guān)。wiki的審核大多牽扯到一個多版本問題。由于審核延遲,可能造成部分答案有多個版本,而后面的用戶在回答時不能看到前面用戶的版本,故不是在原來答案基礎(chǔ)上做修改,造成多個版本質(zhì)量接近或后面的版本質(zhì)量不高,被退回影響用戶通過率和使用體驗(yàn);
  • 特定任務(wù)中部分功能的實(shí)現(xiàn)遇到問題。任務(wù)中的倒計(jì)時功能,由于審核有延遲,不能做自動到時結(jié)束,必須人工審核完成后人工手動結(jié)束


總結(jié)目前產(chǎn)品中常見的垃圾廣告主要有以下特點(diǎn):?
  • 批量垃圾信息是同幾撥人發(fā)的,只是內(nèi)容變來變?nèi)?#xff0c;感覺像專門的發(fā)帖公司。
  • 現(xiàn)在大都采取變換不同ID發(fā)帖的方式,導(dǎo)致黑名單方式不可用
  • 有些會在帖子標(biāo)題中加很多符號或標(biāo)點(diǎn)等分隔符隔斷內(nèi)容,所以之前嘗試將他們的熱線電話的號碼加到違禁詞里的辦法,效果也不佳;另外還有火星文等樣式


目前,了解到同行百科類網(wǎng)站審核情況如下?
  • 百度知道:先發(fā)后審,機(jī)器過濾+人工檢舉
  • 搜搜問問:機(jī)器審核,能夠計(jì)算出比較準(zhǔn)確的審核時間,基本在5分鐘以內(nèi)
  • 百度百科:先審后發(fā),機(jī)器過濾+人工審核,人工審核為主,所需時間從幾分鐘到小時不等,且晚上23:00以后沒有審核不生成新版本
  • 互動百科:先發(fā)后審,人工審核,所需時間平均8小時左右


二、背景 ?

在日常生活中,人們往往進(jìn)行常識推理,而這種推理通常并不是十分準(zhǔn)確的。例如,你看見一個頭發(fā)潮濕的人走進(jìn)來,你可能會認(rèn)為外面下雨了,那你也許錯了;如果你在公園里看到一男一女走得很近,你可能會認(rèn)為他們是情侶,你可能也犯了錯誤。對結(jié)果的預(yù)測往往是建立在原有經(jīng)驗(yàn)積累的基礎(chǔ)上,并對現(xiàn)有現(xiàn)象各個特征分別屬于某一結(jié)果的概率加權(quán)。?

基于貝葉斯定理的進(jìn)行分類或決策需要一系列特征向量(即某些東西,它們或存在、或不存在、或部分存在于某個分類中)。比如對于一套可以根據(jù)照片識別男女性別的系統(tǒng),它決策所依賴的特征向量可能就是眼睛、鼻梁、臉龐、發(fā)型等;用它正確識別張靚穎的成功率就要高于李宇春,因?yàn)楹笳叩脑S多特征向量的沒有明顯的傾向性。?

對文本過濾來說,特征向量就是某段給定文本的各個詞語。貝葉斯決策優(yōu)于常用敏感詞庫過濾的一個重要原因在于,它考慮到了文本的上下問環(huán)境。我們先考慮簡單的情況(不考慮中文分詞),以英語為例,假設(shè)我們需要一個系統(tǒng)來識別一段包含單詞python的文本,究竟應(yīng)該是屬于編程類,還是生物類。首先,我們需要模擬人知識積累的過程,給計(jì)算機(jī)一些已有的樣本進(jìn)行學(xué)習(xí),如下表所示。?
文本歸類(Bio or Pro)
Pythons are constrictors that feed on birds and mammalsBio
Python was originally developed as a scripting languagePro
A 49-ft.-long python was found in ChinaBio
Python has dynamic type systemPro
Python with vivid scalesBio
An Open source project developed by pythonPro
…………


我們統(tǒng)計(jì)各特征向量(單詞)在各類別(編程類或生物類)中出現(xiàn)的頻率,得到類似如下的結(jié)果:?
ProBio
dynamic0.60.1
constrictor0.00.6
long0.10.2
source0.30.1
and 0.950.95
………………


使用足夠多的數(shù)據(jù)進(jìn)行訓(xùn)練,上表的結(jié)果就很有意思。dynamic相對較常出現(xiàn)在編程類的文本中,而constrictor則相對較常出現(xiàn)在生物類的文本中,而source和long就沒有那么強(qiáng)的傾向性。另外,像and這些詞,它在各類目中出現(xiàn)的頻率幾乎一樣(因?yàn)榛久科恼轮卸紩玫絘nd),所以對于機(jī)器學(xué)習(xí)來說沒有任何價(jià)值,這類詞我們稱為“停用詞”(stop word),意味著以后在樣本訓(xùn)練之前可以將它們?nèi)コ?#xff0c;從而減少學(xué)習(xí)時間。幾乎每個搜索引擎都會維護(hù)一份“停用詞表”(stop word list),后面的章節(jié)會講到如何使用它。?

在使用貝葉斯分類器之前,讓我們先來看看以下定義:?
1.Pr(Category):屬于某一特定分類的概率,先驗(yàn)概率?
2.Pr(Document):某一文本的概率,先驗(yàn)概率,對任一文本,其值均為常量,故此值可以忽略?
3.Pr(Category|Document):已知文本A,它屬于某一分類的概率,就是我們要求的結(jié)果,條件概率、后驗(yàn)概率?
4.Pr(Document | Category):某一分類下,文本A可能出現(xiàn)的概率,條件概率、非后驗(yàn)概率?

一般的, Pr(Document | Category) = Pr(Word1 | Category) × Pr(Word2 | Category) × ……,例如“Python is a dynamic language”去除停用詞 (is、a)后屬于編程類的概率即為Pr(python | Pro) × Pr(dynamic | Pro) × Pr(language | Pro), 其中各Pr(Word | Category)的值取自前表。事實(shí)上,由于Pr(Word | Category) < 1,文本所包含的單詞越多,Pr(Document | Category)的結(jié)果就越小。但這并非會影響最后的結(jié)果,因?yàn)槲覀兪褂玫氖歉鞣诸惖南鄬χ?#xff0c;例如,判斷某一段文字是屬于編程類還是生物類,計(jì)算的是Pr(Document | Pro)/ Pr(Document | Bio)。?

使用貝葉斯分類器本質(zhì)上就是根據(jù)先驗(yàn)概率、條件概率求后驗(yàn)概率的過程,描述為?
Pr(Category|Document) = Pr(Document | Category) × Pr(Category) / Pr(Document)?

事實(shí)上,正如前面所說的,Pr(Document)對所有待測文本都是相同的,而我們又只關(guān)心相對值,因此該公式可進(jìn)一步簡化為?
Pr(Category|Document) = Pr(Document | Category) × Pr(Category)?

計(jì)算Pr(Category|Document)所需的兩個參數(shù)搜可以通過類似的方法訓(xùn)練歷史數(shù)據(jù)得到,并且每次計(jì)算機(jī)決策、運(yùn)營手工訂正后以及錯判投訴的結(jié)果又都會被加入到樣本庫中進(jìn)行修正和再學(xué)習(xí),這就是“有監(jiān)督的機(jī)器學(xué)習(xí)”。?

MicroSoft的工程師在Outlook中就使用了這種機(jī)制,并在?
http://www.gfi.com/whitepapers/why-bayesian-filtering.pdf?
闡述了為什么貝葉斯分類器是最有效的文本過濾算法,同時宣稱合理的參數(shù)設(shè)置和足夠豐富的樣本能保證99.7%的審核正確率。?

它的優(yōu)點(diǎn):?
1、貝葉斯分類器識別整段代詞文本內(nèi)容。它在檢索某些常用垃圾詞的同時,也會兼顧那些在正常郵件中出現(xiàn)的詞語。例如,并不是每封包含“free”和“cash”的郵件都是垃圾郵件,事實(shí)上,如果貝葉斯分類器在文本的其它地方發(fā)現(xiàn)了商業(yè)術(shù)語、公司合同等,還是可能會將它歸為正常郵件。貝葉斯分類器考慮了上下文的語境,并智能化地使用概率、詞頻來權(quán)衡各詞語,這是它與關(guān)鍵詞\敏感詞算法相比的最大優(yōu)勢。?

2、貝葉斯分類器是完全自適應(yīng)的 —— 它會從垃圾郵件和正常郵件不斷地學(xué)習(xí)、抽取知識,甚至?xí)趯怪谐砷L —— 隨著新出現(xiàn)的垃圾郵件而進(jìn)化。比如專業(yè)的spammer使用“f-r-e-e”來代替“free”,或是使用“5ex”來代替“sex”,來逃避敏感詞庫的過濾。對于貝葉斯分類器來說,剛開始它從未見過這個單詞,因此可能會將其歸為“unknown”;但隨著人工審核的復(fù)查,它會很快學(xué)習(xí)到這是個垃圾詞。以后,spammer在垃圾帖中使用“f-r-e-e”的效果甚至還不如使用“free”,因?yàn)椤癴-r-e-e”幾乎不會出現(xiàn)在正常郵件中,因此分類器更有自信將其歸為垃圾郵件(useful/spam的比率更高)。?

3、貝葉斯分類會分析用戶的行為,更適合與定制化需求。例如對于一家經(jīng)營五金的公司來說,“mortgage“ 幾乎以為著垃圾郵件,但對于一家金融服務(wù)公司來說,它很有肯能是正常郵件(起碼是”unknown”的) 。?

4、貝葉斯分類器與敏感詞相比,更適合國際化\多語言。事實(shí)上,要維護(hù)一份敏感詞庫十分困難,需要專業(yè)人士的參與。貝葉斯分類器采用自然語言分類的方式,某個詞語屬于垃圾郵件/正常郵件的概率完全由日常的行為所決定,即使是中英文混合的內(nèi)容,也照常處理。?

5、基于貝葉斯分類器的文本過濾機(jī)制較難被繞過 。一位高級的 spammer 想要繞過它,無非兩種方法,較少采用強(qiáng)垃圾郵件傾向的詞(比如free, Viagra等),或是較多采用強(qiáng)正常郵件傾向的詞語。一般來說,采用后者較為困難,因?yàn)樾枰私馐占焦镜脑敿?xì)業(yè)務(wù),而采用一些中性詞(比如public等)對最后的結(jié)果有影響甚微。?

6、不需要維護(hù)、下載、更新敏感詞庫,貝葉斯分類器是完全可以自循環(huán)的?

它的缺點(diǎn):?

1、唯一的缺點(diǎn)是需要原始數(shù)據(jù)的進(jìn)行學(xué)習(xí)/訓(xùn)練,或是需要運(yùn)行一段時間才能看出效果。隨著時間的推移,不同于其它靜態(tài)技術(shù),貝葉斯分類器會越來越有效,因此之前花一段時間等待是完全值得的,正如《基督山伯爵》結(jié)語,“人類最偉大的智慧,在于等待和希望”……?

三、原型設(shè)計(jì) ?
初步寫了個原型,想測試一下效果,(無接口、無抽象、單類、命名不規(guī)范、無注釋,汗),詳細(xì)過程不說了,有興趣的可參考附件。?
首先給出五個訓(xùn)練樣本:?

cf.train("Nobody owns the water", "good");?
cf.train("the quick rabbit jumps fences", "good");?
cf.train("buy pharmaceuticals now", "bad");?
cf.train("make quick money at the online casino", "bad");?
cf.train("the quick brown fox jumps", "good");?

接下來,我們試一下“make quick money at the online casino“的效果?
cf.prob("make quick money at the online casino", "good")?
cf.prob("make quick money at the online casino", "bad")?

輸出結(jié)果分別是0.0013183593749999999和0.00625,這并沒有顯示出貝葉斯分詞的優(yōu)勢,畢竟這段文本在以前出現(xiàn)過。如果我們將文本修改為“make quick money, visit XXX.htm“?
cf.prob("make quick money, visit XXX.htm ", "good")?
cf.prob("make quick money, visit XXX.htm ", "bad")?

輸出結(jié)果分別是0.005859375和0.0125。由于分類器從未見過visit、XXX.htm等詞語,因此它也不是非常確定這是一條垃圾文本,如果我們通過人工審核將其加入訓(xùn)練庫?
cf.train("make quick money, visit XXX.htm ", "bad");?

下一次,如果接收到文本“make quick money , visit YYY.htm, earn dollars“,分類器將會毫不猶豫地將它劃分為垃圾郵件(good:4.1232638888888883E-4;bad:0.004199620627572015)。?

前面提過的都是英文文本的識別。對于中文,則要考慮分詞器的影響。這里選用MMAnalyzer,建議使用最大正向匹配方式(細(xì)粒度為零),因?yàn)椤叭嗣瘛焙汀叭嗣駧拧笔莾蓚€不同的概念。對“2008年前三季度,美國次貸危機(jī)升級,全球金融持續(xù)動蕩,世界經(jīng)濟(jì)增長全面放緩,全球經(jīng)濟(jì)增長動力減弱,世界主要經(jīng)濟(jì)體與新興市場正面臨巨大的外部沖擊。“ 的分詞效果還是比較理想的。?
2008] [年前] [三季度] [美國] [次] [貸] [危機(jī)] [升級] [全球] [金融] [持續(xù)] [動蕩] [世界經(jīng)濟(jì)] [增長] [全面] [放] [緩] [全球] [經(jīng)濟(jì)] [增長] [動力] [減弱] [世界] [主要] [經(jīng)濟(jì)] [體] [新興] [市場] [正] [面臨] [巨大] [外部] [沖擊]?

我們采用生意經(jīng)中的數(shù)據(jù)來模擬,鎖定“機(jī)票“這一關(guān)鍵詞?

cf.train( " 網(wǎng)上預(yù)定了飛機(jī)票,請問具體付款流程的怎樣的" , "good");?
cf.train( "請問高手們,如何開辦一家預(yù)定銷售機(jī)票的公司?謝謝" , "good");?
cf.train( "中國民航全國統(tǒng)一訂票(銷售)熱線" , "bad");?
cf.train( "杭州到上海機(jī)票預(yù)定熱線是多少?" , "bad");?
cf.train( "機(jī)票預(yù)定熱線是多少?" , "bad");?
cf.train( "特價(jià)機(jī)票預(yù)定方法有哪些?" , "good");?
cf.train( "東方航空特價(jià)機(jī)票:400+6918118" , "bad");?
cf.train( "攜程機(jī)票預(yù)定中心:400.6888.932" , "bad");?
cf.train( "機(jī)票銷售代理" , "bad");?

假設(shè)我們新接收一條文本“廣州到青島機(jī)票預(yù)定熱線是多少?“,貝葉斯分類器將其判定為垃圾文本(bad:0.010416666666666666;good:0.0010363520408163264)?

假設(shè)我們新接收一條文本“預(yù)定國內(nèi)機(jī)票具體應(yīng)該注意那些問題?“,貝葉斯分類器將其判定為正常文本(bad:0.003348214285714286;good:0.005181760204081632)?

考慮大多數(shù)的情況下,可以原諒幾篇廣告文本繞過審核,卻無法忍受一篇有效文本被過濾,因此特別維護(hù)一個thresholds的HashMap,比如當(dāng)bad/good > 3時才判定,該文本為垃圾廣告。比如“預(yù)定國內(nèi)機(jī)票應(yīng)該怎么做?”,貝葉斯分類器將其判定為unknown(未知)(bad:0.013392857142857144;good:0.012436224489795918),因?yàn)? > bad/good > 1。運(yùn)營人員在審核unknown的文本時,發(fā)覺這是一條正常文本,因此將其加入訓(xùn)練庫?
cf.train( "預(yù)定國內(nèi)機(jī)票應(yīng)該怎么做?" , "good");?

下一次,再接收到類似文本比如“預(yù)定國內(nèi)機(jī)票怎么操作?”,分類器將會自動將其歸類為正常郵件(bad:0.006054687499999999;good:0.018951416015625)。?

四、初步架構(gòu) ?



五、展望 ?
1、自然語義(主、謂、賓)的引入?
2、將標(biāo)題、內(nèi)容、副標(biāo)題、相關(guān)類目的文本內(nèi)容作為權(quán)值引入?
3、非文本因素的引入(id、ip、web行為)?
4、論壇、博客、百科等詞庫共享?

六、參考文獻(xiàn) ?
1、《垃圾信息相關(guān)范例和情況》
2、《每日審核戰(zhàn)報(bào)》
3、http://www.gfi.com/whitepapers/why-bayesian-filtering.pdf?
4、《Programming Collective Intelligence,Building Smart Web 2.0》 Toby Segaran?
5、《Collective Intelligence in Action》 Satnam Alag?
6、http://nlp.stanford.edu/IR-book/html/htmledition/naive-bayes-text-classification-1.html?
7、http://www.emis.de/journals/GM/vol14nr4/pop/pop.pdf?
8、http://mathforum.org/~ken/bayes/bayes.html
?

總結(jié)

以上是生活随笔為你收集整理的基于统计概率和机器学习的文本分类技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。