tag什么的都是要求使用程序的人自行输入,对于某些懒人及为了程序的体验,则是希望可以有自动生成文章关键词,自动获取文章tag的类似功能,这次为了迎接新的项目,所以捣鼓了一晚上,研究了一下这个功能。
要实现自动获取关键词的功能,大概可以分成三步
1,通过分词算法将标题和内容分别进行分割,提取出关键词和频度。当前主要的两个算法是中科院的ICTCLAS和隐马尔可夫模型。但这两个都太高端,有一定的门槛,且都是只支持C++/JAVA。基于PHP的当前有两个是值得推荐的PSCWS和HTTPCWS。 SCWS于2008-03-08发布1.0.0 正式版,到现在最新版本已经到了1.0.4。PSCWS是它的PHP版。而HTTPCWS是张宴开发的,之前叫PHPCWS。PHPCWS 先使用“ICTCLAS 3.0 共享版中文分词算法”的API进行初次分词处理,再使用自行编写的“逆向最大匹配算法”对分词和进行词语合并处理,并增加标点符号过滤功能,得出分词结果。不过很遗憾目前仅支持Linux系统,尚未移植到win平台上。
2,将提取结果与现有词库进行比较,处理,去除无用的词得到最符合规则的关键词。这里主要就是要看词库了,我们可以自己定义词库,也可以使用现有的成熟词库。比如新浪和网易博客都有这个功能,。他们分词应该有不错的词库,因为他们都是大网站,而我呢,区区一个小程序员,不可能搞到什么权威的词库,所以只能从现有的开源程序上入手,看看他们的词库。
3,在处理后的提取结果中选择适当的作为最终的关键词,得到最符合当前内容的关键词,在这个阶段就是具体情况具体分析了,无论如何也不可能达到人的那种智能化。最多是。当前PHP类CMS都自有自己的提取关键词系统。
目前在网络上流传最广的是DEDECMS的分词源码,我做了测试,发现相当的呆,效果很不好。它先设置一个关键词长度,确定获取关键词的数量,然后取词,它认为标题分好的词就是所需关键词,在加上从正文中读取关键词只到达到这个所设置的长度,就是最终关键词了。另外类似“我们”等无意义的词也没有去除掉提取并被列为关键词的频率太高,甚至有时候还会把空格的HTML提出来做为关键词,亟待改进。不过如果作为辅助功能,它已经很好了。而discuz的稍微好一些,但是discuz并没有提供源码,只是提供了一个在线api。
而dede的分词也有好几个版本,最好的应该是最新版的吧,出现频率什么都有了,下面就以dede5.7的分词和discuz的api的结果对比下
测试例子:
$title="THINKPHP官方即将停止对2.0版本的支持";
$body="了更好地做好ThinkPHP框架的开发、维护和支持工作,官方宣布从2012年5月1日起s对2.0及之前版本的维护和支持,为了节能低碳考虑,同时也取消官网的相应版本和文档下载。
就此缅怀那些年,曾经一起开发的ThinkPHP版本吧!
关于ThinkPHP 2.0版本
ThinkPHP 诞生于2006年,致力于WEB应用的快速开发,其2.0版本发布于2009年10月1日 ,在之前的1.*版本上完成新的重构和飞跃,当时是一次划时代的版本,为新版奠定了基础,同时也积累了较多的用户群和网站,随着框架的快速更新,和新版 2.1、2.2和3.0版本的陆续发布,预示着ThinkPHP的3.0时代到来了,2.0的生命周期宣告结束。但基本上2.0的很多功能都延续或者完善到2.1版本中了,从2.0版本升级到2.1和2.2版本也相对轻松。2.2版本是2.*版本的最终版本,不再更新功能,仅做BUG修复。";
一、dede分词
将结果排序后如下
标题Array
(
[THINKPHP] => 1
[官方] => 1
[即将] => 1
[停止] => 1
[对] => 1
[2.0] => 1
[版本] => 1
[的] => 1
[支持] => 1
)
内容Array
(
[版本] => 12
[的] => 12
[和] => 8
[ThinkPHP] => 5
[2.0] => 5
[也] => 3
[2.2] => 3
[2.1] => 3
[开发] => 3
[3.0] => 2
[是] => 2
[快速] => 2
[到] => 2
[发布] => 2
[维护] => 2
[之前] => 2
[了] => 2
[新版] => 2
[支持] => 2
[框架] => 2
[同时] => 2
[从] => 2
*******
对此如何取出最终的需要的关键词呢? 初步思路是先去除“的”,“些”这些词,再按照内容的排序顺序,依次看分到是否出现在标题中出现即为所需的,这样可以取出一定量的词最为最终关键词。如上结果我们可以得到
版本 thinkphp 2.0 支持 停止
五个关键词。看起来结果还是可以接受的。
二、在来看discuz的,利用api得到的是一个xml文档,解析后得到的关键词是
的、快速、版本升级、开发、用户
五个词,第一个是“的”......
对比这两种方式发现第一种dede+后续处理的较为接近文档的内容,应该是稍好一些,而discuz的偏离了文章的主题,但是其取到词有一定的热门性。
作者:zdrjlamp

phpsessionstrackuserdataacrossmultiplepagerequestsusingauniqueIdStoredInAcookie.here'showtomanageThemeffectionaly:1)startAsessionWithSessionWwithSession_start()和stordoredAtain $ _session.2)

在PHP中,遍歷會話數據可以通過以下步驟實現:1.使用session_start()啟動會話。 2.通過foreach循環遍歷$_SESSION數組中的所有鍵值對。 3.處理複雜數據結構時,使用is_array()或is_object()函數,並用print_r()輸出詳細信息。 4.優化遍歷時,可採用分頁處理,避免一次性處理大量數據。這將幫助你在實際項目中更有效地管理和使用PHP會話數據。

會話通過服務器端的狀態管理機制實現用戶認證。 1)會話創建並生成唯一ID,2)ID通過cookies傳遞,3)服務器存儲並通過ID訪問會話數據,4)實現用戶認證和狀態管理,提升應用安全性和用戶體驗。

Tostoreauser'snameinaPHPsession,startthesessionwithsession_start(),thenassignthenameto$_SESSION['username'].1)Usesession_start()toinitializethesession.2)Assigntheuser'snameto$_SESSION['username'].Thisallowsyoutoaccessthenameacrossmultiplepages,enhanc

PHPSession失效的原因包括配置錯誤、Cookie問題和Session過期。 1.配置錯誤:檢查並設置正確的session.save_path。 2.Cookie問題:確保Cookie設置正確。 3.Session過期:調整session.gc_maxlifetime值以延長會話時間。

在PHP中調試會話問題的方法包括:1.檢查會話是否正確啟動;2.驗證會話ID的傳遞;3.檢查會話數據的存儲和讀取;4.查看服務器配置。通過輸出會話ID和數據、查看會話文件內容等方法,可以有效診斷和解決會話相關的問題。

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

在PHP中配置會話生命週期可以通過設置session.gc_maxlifetime和session.cookie_lifetime來實現。 1)session.gc_maxlifetime控制服務器端會話數據的存活時間,2)session.cookie_lifetime控制客戶端cookie的生命週期,設置為0時cookie在瀏覽器關閉時過期。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版
好用的JavaScript開發工具

Dreamweaver CS6
視覺化網頁開發工具