php实现自动获取生成文章主题关键词功能的深入分析_PHP教程
以前写程序一直在逃避这个问题,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的偏离了文章的主题,但是其取到词有一定的热门性

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

숙련된 PHP 개발자라면 이미 그런 일을 해왔다는 느낌을 받을 것입니다. 귀하는 상당한 수의 애플리케이션을 개발하고, 수백만 줄의 코드를 디버깅하고, 여러 스크립트를 수정하여 작업을 수행했습니다.

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

PHP의 마법 방법은 무엇입니까? PHP의 마법 방법은 다음과 같습니다. 1. \ _ \ _ Construct, 객체를 초기화하는 데 사용됩니다. 2. \ _ \ _ 파괴, 자원을 정리하는 데 사용됩니다. 3. \ _ \ _ 호출, 존재하지 않는 메소드 호출을 처리하십시오. 4. \ _ \ _ get, 동적 속성 액세스를 구현하십시오. 5. \ _ \ _ Set, 동적 속성 설정을 구현하십시오. 이러한 방법은 특정 상황에서 자동으로 호출되어 코드 유연성과 효율성을 향상시킵니다.
