php實(shí)現(xiàn)自動(dòng)獲取生成文章主題關(guān)鍵詞功能的深入分析
要實(shí)現(xiàn)自動(dòng)獲取關(guān)鍵詞的功能,大概可以分成三步
1,通過(guò)分詞算法將標(biāo)題和內(nèi)容分別進(jìn)行分割,提取出關(guān)鍵詞和頻度。當(dāng)前主要的兩個(gè)算法是中科院的ICTCLAS和隱馬爾可夫模型。但這兩個(gè)都太高端,有一定的門檻,且都是只支持C++/JAVA?;赑HP的當(dāng)前有兩個(gè)是值得推薦的PSCWS和HTTPCWS。 SCWS于2008-03-08發(fā)布1.0.0 正式版,到現(xiàn)在最新版本已經(jīng)到了1.0.4。PSCWS是它的PHP版。而HTTPCWS是張宴開(kāi)發(fā)的,之前叫PHPCWS。PHPCWS 先使用“ICTCLAS 3.0 共享版中文分詞算法”的API進(jìn)行初次分詞處理,再使用自行編寫(xiě)的“逆向最大匹配算法”對(duì)分詞和進(jìn)行詞語(yǔ)合并處理,并增加標(biāo)點(diǎn)符號(hào)過(guò)濾功能,得出分詞結(jié)果。不過(guò)很遺憾目前僅支持Linux系統(tǒng),尚未移植到win平臺(tái)上。
2,將提取結(jié)果與現(xiàn)有詞庫(kù)進(jìn)行比較,處理,去除無(wú)用的詞得到最符合規(guī)則的關(guān)鍵詞。這里主要就是要看詞庫(kù)了,我們可以自己定義詞庫(kù),也可以使用現(xiàn)有的成熟詞庫(kù)。比如新浪和網(wǎng)易博客都有這個(gè)功能,。他們分詞應(yīng)該有不錯(cuò)的詞庫(kù),因?yàn)樗麄兌际谴缶W(wǎng)站,而我呢,區(qū)區(qū)一個(gè)小程序員,不可能搞到什么權(quán)威的詞庫(kù),所以只能從現(xiàn)有的開(kāi)源程序上入手,看看他們的詞庫(kù)。
3,在處理后的提取結(jié)果中選擇適當(dāng)?shù)淖鳛樽罱K的關(guān)鍵詞,得到最符合當(dāng)前內(nèi)容的關(guān)鍵詞,在這個(gè)階段就是具體情況具體分析了,無(wú)論如何也不可能達(dá)到人的那種智能化。最多是。當(dāng)前PHP類CMS都自有自己的提取關(guān)鍵詞系統(tǒng)。
目前在網(wǎng)絡(luò)上流傳最廣的是DEDECMS的分詞源碼,我做了測(cè)試,發(fā)現(xiàn)相當(dāng)?shù)拇?,效果很不好。它先設(shè)置一個(gè)關(guān)鍵詞長(zhǎng)度,確定獲取關(guān)鍵詞的數(shù)量,然后取詞,它認(rèn)為標(biāo)題分好的詞就是所需關(guān)鍵詞,在加上從正文中讀取關(guān)鍵詞只到達(dá)到這個(gè)所設(shè)置的長(zhǎng)度,就是最終關(guān)鍵詞了。另外類似“我們”等無(wú)意義的詞也沒(méi)有去除掉提取并被列為關(guān)鍵詞的頻率太高,甚至有時(shí)候還會(huì)把空格的HTML提出來(lái)做為關(guān)鍵詞,亟待改進(jìn)。不過(guò)如果作為輔助功能,它已經(jīng)很好了。而discuz的稍微好一些,但是discuz并沒(méi)有提供源碼,只是提供了一個(gè)在線api。
而dede的分詞也有好幾個(gè)版本,最好的應(yīng)該是最新版的吧,出現(xiàn)頻率什么都有了,下面就以dede5.7的分詞和discuz的api的結(jié)果對(duì)比下
測(cè)試?yán)樱?BR>$title="THINKPHP官方即將停止對(duì)2.0版本的支持";
$body="了更好地做好ThinkPHP框架的開(kāi)發(fā)、維護(hù)和支持工作,官方宣布從2012年5月1日起s對(duì)2.0及之前版本的維護(hù)和支持,為了節(jié)能低碳考慮,同時(shí)也取消官網(wǎng)的相應(yīng)版本和文檔下載。
就此緬懷那些年,曾經(jīng)一起開(kāi)發(fā)的ThinkPHP版本吧!
關(guān)于ThinkPHP 2.0版本
ThinkPHP誕生于2006年,致力于WEB應(yīng)用的快速開(kāi)發(fā),其2.0版本發(fā)布于2009年10月1日 ,在之前的1.*版本上完成新的重構(gòu)和飛躍,當(dāng)時(shí)是一次劃時(shí)代的版本,為新版奠定了基礎(chǔ),同時(shí)也積累了較多的用戶群和網(wǎng)站,隨著框架的快速更新,和新版2.1、2.2和3.0版本的陸續(xù)發(fā)布,預(yù)示著ThinkPHP的3.0時(shí)代到來(lái)了,2.0的生命周期宣告結(jié)束。但基本上2.0的很多功能都延續(xù)或者完善到2.1版本中了,從2.0版本升級(jí)到2.1和2.2版本也相對(duì)輕松。2.2版本是2.*版本的最終版本,不再更新功能,僅做BUG修復(fù)。";
一、dede分詞
將結(jié)果排序后如下
標(biāo)題Array (
[THINKPHP] => 1
[官方] => 1
[即將] => 1
[停止] => 1
[對(duì)] => 1
[2.0] => 1
[版本] => 1
[的] => 1
[支持] => 1
)
內(nèi)容Array (
[版本] => 12
[的] => 12
[和] => 8
[ThinkPHP] => 5
[2.0] => 5
[也] => 3
[2.2] => 3
[2.1] => 3
[開(kāi)發(fā)] => 3
[3.0] => 2
[是] => 2
[快速] => 2
[到] => 2
[發(fā)布] => 2
[維護(hù)] => 2
[之前] => 2
[了] => 2
[新版] => 2
[支持] => 2
[框架] => 2
[同時(shí)] => 2
[從] => 2
對(duì)此如何取出最終的需要的關(guān)鍵詞呢? 初步思路是先去除“的”,“些”這些詞,再按照內(nèi)容的排序順序,依次看分到是否出現(xiàn)在標(biāo)題中出現(xiàn)即為所需的,這樣可以取出一定量的詞最為最終關(guān)鍵詞。如上結(jié)果我們可以得到
版本 thinkphp 2.0 支持 停止
五個(gè)關(guān)鍵詞。看起來(lái)結(jié)果還是可以接受的。
二、在來(lái)看discuz的,利用api得到的是一個(gè)xml文檔,解析后得到的關(guān)鍵詞是
的、快速、版本升級(jí)、開(kāi)發(fā)、用戶
五個(gè)詞,第一個(gè)是“的”......
對(duì)比這兩種方式發(fā)現(xiàn)第一種dede+后續(xù)處理的較為接近文檔的內(nèi)容,應(yīng)該是稍好一些,而discuz的偏離了文章的主題,但是其取到詞有一定的熱門性
- DeDecms中利用關(guān)鍵詞實(shí)現(xiàn)簡(jiǎn)單tag功能的php代碼
- php中獲取關(guān)鍵詞及所屬來(lái)源搜索引擎名稱的代碼
- PHP中文分詞 自動(dòng)獲取關(guān)鍵詞介紹
- php自動(dòng)給文章加關(guān)鍵詞鏈接的函數(shù)代碼
- php獲取從百度搜索進(jìn)入網(wǎng)站的關(guān)鍵詞的詳細(xì)代碼
- PHP正則替換函數(shù)preg_replace和preg_replace_callback使用總結(jié)
- php中正則替換函數(shù)ereg_replace用法實(shí)例
- php站內(nèi)搜索關(guān)鍵詞變亮的實(shí)現(xiàn)方法
- php正則替換變量指定字符的方法
- 淺析PHP關(guān)鍵詞替換的類(避免重復(fù)替換,保留與還原原始鏈接)
相關(guān)文章
PHP中的日期時(shí)間處理利器實(shí)例(Carbon)
本篇文章主要介紹了PHP中的日期時(shí)間處理利器實(shí)例(Carbon),具有一定的參考價(jià)值,有興趣的可以了解一下2017-06-06php框架CI(codeigniter)自動(dòng)加載與自主創(chuàng)建對(duì)象操作實(shí)例分析
這篇文章主要介紹了php框架CI(codeigniter)自動(dòng)加載與自主創(chuàng)建對(duì)象操作,結(jié)合實(shí)例形式分析了codeigniter框架自動(dòng)加載與自主創(chuàng)建對(duì)象相關(guān)原理、實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-06-06PHP遞歸獲取目錄內(nèi)所有文件的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇PHP遞歸獲取目錄內(nèi)所有文件的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11CodeIgniter自定義控制器MY_Controller用法分析
這篇文章主要介紹了CodeIgniter自定義控制器MY_Controller用法,結(jié)合實(shí)例形式分析了CodeIgniter自定義控制器MY_Controller的定義與使用技巧,需要的朋友可以參考下2016-01-01Zend Framework教程之Zend_Db_Table_Row用法實(shí)例分析
這篇文章主要介紹了Zend Framework教程之Zend_Db_Table_Row用法,詳細(xì)講述了Zend_Db_Table_Row的功能,并結(jié)合實(shí)例形式詳細(xì)分析了Zend_Db_Table_Row操作數(shù)據(jù)的相關(guān)技巧,需要的朋友可以參考下2016-03-03PHP中cookie和session的區(qū)別實(shí)例分析
這篇文章主要介紹了PHP中cookie和session的區(qū)別,比較詳盡的分析了二者從創(chuàng)建、運(yùn)用到清除的各個(gè)流程的注意事項(xiàng),需要的朋友可以參考下2014-08-08PHP register_shutdown_function()函數(shù)的使用示例
這篇文章主要介紹了PHP register_shutdown_function()函數(shù)的使用示例,當(dāng)我們的腳本執(zhí)行完成或者意外死掉導(dǎo)致 php 執(zhí)行即將關(guān)閉時(shí),register_shutdown_function()這個(gè)函數(shù)會(huì)被調(diào)用,需要的朋友可以參考下2015-06-06thinkPHP js文件中U方法不被解析問(wèn)題的解決方法
這篇文章主要介紹了thinkPHP js文件中U方法不被解析問(wèn)題的解決方法,結(jié)合實(shí)例形式分析了thinkPHP在js文件中U方法不被解析的原因與相應(yīng)的處理技巧,需要的朋友可以參考下2016-12-12php用戶注冊(cè)頁(yè)面利用js進(jìn)行表單驗(yàn)證具體實(shí)例
這篇文章介紹了php用戶注冊(cè)頁(yè)面利用js進(jìn)行表單驗(yàn)證具體實(shí)例,有需要的朋友可以參考一下2013-10-10