有一组非日常的英文词汇,我需要计算在英文文章中出现频次最多的。
于是我最初想到遍历数组,用 substr_count 依次计算每个词汇出现的次数,但这样就会造成对整篇文章多次重复的扫描。或者将文章也拆分成词汇,从中用数组函数计算交集数量,但依然觉得不理想。
各位有什么想法吗?这个应用其实也就是关键词提取。
回复讨论(解决方案)
拆成数组为何不好,英文入数组很方便啊,起码比中文简单多了
其实不太明白你的需求,纯粹统计 array_count_values 足够方便了
就是说你已经有了一个词库,现在需要在文章里检查词库词的出现次数
如果是的,那么可以使用 trie 算法(我发过的)
只需扫描文章一遍就可以了,当然要先构造词库
就是说你已经有了一个词库,现在需要在文章里检查词库词的出现次数
如果是的,那么可以使用 trie 算法(我发过的)
只需扫描文章一遍就可以了,当然要先构造词库
词库保存为什么格式比较好?mysql,json,xml,纯数组?
如果一篇文章有5kb,词库有1000个单词,那么把这1000个单词逐个foreach,匹配这篇文章,
mysql_query,
json_decode()
simplexml_load_file()
数组
哪个效率更高,更节省资源(CPU,RAM)?
5kb不太可能有1000个单词,全部都是冠词?
即使1000个,量也不算很大,去除重复应该就少很多了,一次数组交集就够了
我的思路是文章拆分为单词数组,array_count_values 就起到统计和去除重复两个功能
然后提取次数一定的部分(次数太少没匹配意义吧?),那剩下就很少了,再与现存词库求交集就足够了
虽然楼主是专指英文词汇,但是你的算法若只限于英文词汇的话,那就没有什么意义了
5kb不太可能有1000个单词,全部都是冠词?
即使1000个,量也不算很大,去除重复应该就少很多了,一次数组交集就够了
我的思路是文章拆分为单词数组,array_count_values 就起到统计和去除重复两个功能
然后提取次数一定的部分(次数太少没匹配意义吧?),那剩下就很少了,再与现存词库求交集就足够了
你说的也有道理
只是我觉得简单问题简单处理,他既然说英文,就按这样去想,没必要太花时间考虑算法
如果他说混杂多语种,估计我也只是旁观不会回这贴了,呵呵
虽然楼主是专指英文词汇,但是你的算法若只限于英文词汇的话,那就没有什么意义了
引用 4 楼 snmr_com 的回复:5kb不太可能有1000个单词,全部都是冠词?
即使1000个,量也不算很大,去除重复应该就少很多了,一次数组交集就够了
我的思路是文章拆分为单词数组,array_count_values 就起到统计和去除重复两个功能
然后提取次数……
版本给的前缀树怎么也没看懂,暂时先选择了多次扫描文章来实现
一个简单的例子
include 'TTrie.php';class wordkey extends TTrie { function b() { $t = array_pop($this->buffer); $this->buffer[] = "<b>$t</b>"; }}$p = new wordkey;$p->set('秦始皇', 'b');$p->set('洛阳', 'b');$t = $p->match('秦始皇东巡洛阳');echo join('', $t);秦始皇东巡洛阳

tomakephpapplicationsfaster,關注台詞:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

到ImprovephPapplicationspeed,關注台詞:1)啟用opcodeCachingwithapCutoredUcescriptexecutiontime.2)實現databasequerycachingingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandreduceconnection.4 limitesclection.4.4

依赖注入(DI)通过显式传递依赖关系,显著提升了PHP代码的可测试性。1)DI解耦类与具体实现,使测试和维护更灵活。2)三种类型中,构造函数注入明确表达依赖,保持状态一致。3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi

phpisusedforsenderemailsduetoitsbuilt-inmail()函數andsupportivelibrariesLikePhpMailerAndSwiftMailer.1)usethemail()functionForbasiceMails,butithasimails.2)butithasimail.2)

PHP性能瓶颈可以通过以下步骤解决:1)使用Xdebug或Blackfire进行性能分析,找出问题所在;2)优化数据库查询并使用缓存,如APCu;3)使用array_filter等高效函数优化数组操作;4)配置OPcache进行字节码缓存;5)优化前端,如减少HTTP请求和优化图片;6)持续监控和优化性能。通过这些方法,可以显著提升PHP应用的性能。

依賴性(di)inphpenhancesCodeFlexibility andTestability by decouplingClassesscyclasses fromtheippentencies.1)UseConstructorientoctionTopAssDopassDectiesViactructors Viactructors

推薦Pimple用於簡單項目,Symfony的DependencyInjection用於復雜項目。 1)Pimple適合小型項目,因其簡單和靈活。 2)Symfony的DependencyInjection適合大型項目,因其功能強大。選擇時需考慮項目規模、性能需求和學習曲線。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

記事本++7.3.1
好用且免費的程式碼編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境