[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-fukuball--jieba-php":3,"tool-fukuball--jieba-php":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",148568,2,"2026-04-09T23:34:24",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108111,"2026-04-08T11:23:26",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":77,"owner_email":78,"owner_twitter":79,"owner_website":80,"owner_url":81,"languages":82,"stars":87,"forks":88,"last_commit_at":89,"license":90,"difficulty_score":91,"env_os":92,"env_gpu":93,"env_ram":94,"env_deps":95,"category_tags":101,"github_topics":102,"view_count":32,"oss_zip_url":79,"oss_zip_packed_at":79,"status":17,"created_at":107,"updated_at":108,"faqs":109,"releases":140},6073,"fukuball\u002Fjieba-php","jieba-php","\"結巴\"中文分詞：做最好的 PHP 中文分詞、中文斷詞組件。 \u002F \"Jieba\" (Chinese for \"to stutter\") Chinese text segmentation: built to be the best PHP Chinese word segmentation module.","jieba-php 是一款专为 PHP 开发者打造的中文分词组件，旨在将连续的中文文本精准切割为有意义的词语。它源自著名的 Python 版 jieba 项目，成功填补了 PHP 生态在高质量中文自然语言处理方面的空白，解决了服务器端无法高效进行中文断词、关键词提取及词性标注的难题。\n\n无论是需要构建搜索引擎索引、进行文本情感分析，还是处理繁体中文与多语言（中日韩）混合内容，jieba-php 都能提供可靠支持。它特别适合后端工程师、数据分析师以及需要在 PHP 项目中集成 NLP 功能的研究人员使用。即便在当前大模型流行的背景下，对于追求低成本、低延迟且无需依赖外部 API 的场景，它依然是极具价值的轻量级选择。\n\n技术层面，jieba-php 基于 Trie 树结构实现高效的词图扫描，利用动态规划算法查找最大概率路径以确保分词准确性；针对未登录词，则采用隐马尔可夫模型（HMM）配合 Viterbi 算法进行智能识别。工具支持精确、全模式及搜索引擎三种分词策略，允许用户自定义词典与词性标签，并提供了 Composer 便捷安装方式，帮助开发者快速将中文处理能力融入现有系统。","# [jieba-php](http:\u002F\u002Fwww.fukuball.com\u002Fjieba-php\u002F)\n\n[![Made with Love](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fmade%20with-%e2%9d%a4-ff69b4.svg)](http:\u002F\u002Fwww.fukuball.com)\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Ffukuball\u002Fjieba-php\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Ffukuball\u002Fjieba-php)\n\n\"結巴\"中文分詞：做最好的 PHP 中文分詞、中文斷詞組件，原始版本翻譯自 [fxsjy\u002Fjieba](https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba)，目前已經為一個獨立分支，請有興趣的開發者一起加入開發！若想使用 Python 版本請前往 [fxsjy\u002Fjieba](https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba)\n\n現在已經可以支援繁體中文！只要將字典切換為 big 模式即可！\n\n中文斷詞目前使用 LLM 大語言模型會得到更好的斷詞結果，但如果要快速、便宜，這個套件仍然有其用處。\n\n\"Jieba\" (Chinese for \"to stutter\") Chinese text segmentation: built to be the best PHP Chinese word segmentation module.\n\n_Scroll down for English documentation._\n\n# 線上展示\n\n- 網站原始碼：[https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php.fukuball.com](https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php.fukuball.com)\n\n# Feature\n\n- 支持三種分詞模式：\n- 1）默認精確模式，試圖將句子最精確地切開，適合文本分析；\n- 2）全模式，把句子中所有的可以成詞的詞語都掃描出來，但是不能解決歧義。（需要充足的字典）\n- 3. 搜尋引擎模式，在精確模式的基礎上，對長詞再次切分，提高召回率，適合用於搜尋引擎分詞。\n\n- 支持繁體斷詞\n- 支持自定義詞典\n- 支持多語言 CJK 文本處理（中文、日文、韓文）\n- 支持 TF-IDF 分詞整合和詞性標註\n- 支持記憶體管理和快取優化\n- 支持自定義詞性標籤\n\n# Usage\n\n- 自動安裝：使用 composer 安裝後，透過 autoload 引用\n\n代碼示例\n\n```php\ncomposer require fukuball\u002Fjieba-php\n```\n\n代碼示例\n\n```php\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fautoload.php\";\n```\n\n- 手動安裝：將 jieba-php 放置適當目錄後，透過 require_once 引用\n\n代碼示例\n\n```php\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FJieba.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FFinalseg.php\";\n```\n\n# Algorithm\n\n- 基於 Trie 樹結構實現高效的詞圖掃描，生成句子中漢字所有可能成詞情況所構成的有向無環圖（DAG)\n- 採用了動態規劃查找最大概率路徑, 找出基於詞頻的最大切分組合\n- 對於未登錄詞，採用了基於漢字成詞能力的 HMM 模型，使用了 Viterbi 算法\n- BEMS 的解釋 [https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba\u002Fissues\u002F7](https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba\u002Fissues\u002F7)\n\n# Interface\n\n- 組件只提供 jieba.cut 方法用於分詞\n- cut 方法接受兩個輸入參數: 1) 第一個參數為需要分詞的字符串 2）cut_all 參數用來控制分詞模式\n- 待分詞的字符串可以是 utf-8 字符串\n- jieba.cut 返回的結構是一個可迭代的 array\n\n# 功能 1)：分词\n\n- `cut` 方法接受想個輸入參數： 1) 第一個參數為需要分詞的字符串 2）cut_all 參數用來控制分詞模式\n- `cutForSearch` 方法接受一個參數：需要分詞的字符串，該方法適合用於搜索引擎構建倒排索引的分詞，粒度比較細\n- 注意：待分詞的字符串是 utf-8 字符串\n- `cut` 以及 `cutForSearch` 返回的結構是一個可迭代的 array\n\n代碼示例 (Tutorial)\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FJieba.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nJieba::init();\nFinalseg::init();\n\n$seg_list = Jieba::cut(\"怜香惜玉也得要看对象啊！\");\nvar_dump($seg_list);\n\n$seg_list = Jieba::cut(\"我来到北京清华大学\", true);\nvar_dump($seg_list); #全模式\n\n$seg_list = Jieba::cut(\"我来到北京清华大学\", false);\nvar_dump($seg_list); #默認精確模式\n\n$seg_list = Jieba::cut(\"他来到了网易杭研大厦\");\nvar_dump($seg_list);\n\n$seg_list = Jieba::cutForSearch(\"小明硕士毕业于中国科学院计算所，后在日本京都大学深造\"); #搜索引擎模式\nvar_dump($seg_list);\n```\n\nOutput:\n\n```php\narray(7) {\n  [0]=>\n  string(12) \"怜香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"对象\"\n  [6]=>\n  string(3) \"啊\"\n}\n\nFull Mode:\narray(15) {\n  [0]=>\n  string(3) \"我\"\n  [1]=>\n  string(3) \"来\"\n  [2]=>\n  string(6) \"来到\"\n  [3]=>\n  string(3) \"到\"\n  [4]=>\n  string(3) \"北\"\n  [5]=>\n  string(6) \"北京\"\n  [6]=>\n  string(3) \"京\"\n  [7]=>\n  string(3) \"清\"\n  [8]=>\n  string(6) \"清华\"\n  [9]=>\n  string(12) \"清华大学\"\n  [10]=>\n  string(3) \"华\"\n  [11]=>\n  string(6) \"华大\"\n  [12]=>\n  string(3) \"大\"\n  [13]=>\n  string(6) \"大学\"\n  [14]=>\n  string(3) \"学\"\n}\n\nDefault Mode:\narray(4) {\n  [0]=>\n  string(3) \"我\"\n  [1]=>\n  string(6) \"来到\"\n  [2]=>\n  string(6) \"北京\"\n  [3]=>\n  string(12) \"清华大学\"\n}\narray(6) {\n  [0]=>\n  string(3) \"他\"\n  [1]=>\n  string(6) \"来到\"\n  [2]=>\n  string(3) \"了\"\n  [3]=>\n  string(6) \"网易\"\n  [4]=>\n  string(6) \"杭研\"\n  [5]=>\n  string(6) \"大厦\"\n}\n(此處，“杭研“並沒有在詞典中，但是也被 Viterbi 算法識別出來了)\n\nSearch Engine Mode:\narray(18) {\n  [0]=>\n  string(6) \"小明\"\n  [1]=>\n  string(6) \"硕士\"\n  [2]=>\n  string(6) \"毕业\"\n  [3]=>\n  string(3) \"于\"\n  [4]=>\n  string(6) \"中国\"\n  [5]=>\n  string(6) \"科学\"\n  [6]=>\n  string(6) \"学院\"\n  [7]=>\n  string(9) \"科学院\"\n  [8]=>\n  string(15) \"中国科学院\"\n  [9]=>\n  string(6) \"计算\"\n  [10]=>\n  string(9) \"计算所\"\n  [11]=>\n  string(3) \"后\"\n  [12]=>\n  string(3) \"在\"\n  [13]=>\n  string(6) \"日本\"\n  [14]=>\n  string(6) \"京都\"\n  [15]=>\n  string(6) \"大学\"\n  [16]=>\n  string(18) \"日本京都大学\"\n  [17]=>\n  string(6) \"深造\"\n}\n```\n\n# 功能 2)：添加自定義詞典\n\n- 開發者可以指定自己自定義的詞典，以便包含 jieba 詞庫裡沒有的詞。雖然 jieba 有新詞識別能力，但是自行添加新詞可以保證更高的正確率\n- 用法： Jieba::loadUserDict(file_name) # file_name 為自定義詞典的絕對路徑\n- 詞典格式和 dict.txt 一樣，一個詞佔一行；每一行分為三部分，一部分為詞語，一部分為詞頻，一部分為詞性，用空格隔開\n- 範例：\n\n  云计算 5 n\n  李小福 2 n\n  创新办 3 n\n\n  之前： 李小福 \u002F 是 \u002F 创新 \u002F 办 \u002F 主任 \u002F 也 \u002F 是 \u002F 云 \u002F 计算 \u002F 方面 \u002F 的 \u002F 专家 \u002F\n  加載自定義詞庫後：　李小福 \u002F 是 \u002F 创新办 \u002F 主任 \u002F 也 \u002F 是 \u002F 云计算 \u002F 方面 \u002F 的 \u002F 专家 \u002F\n\n說明：\"通过用户自定义词典来增强歧义纠错能力\" --- https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba\u002Fissues\u002F14\n\n- 自定義詞典：https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php\u002Fblob\u002Fmaster\u002Fsrc\u002Fdict\u002Fuser_dict.txt\n\n# 功能 3)：關鍵詞提取\n\n- JiebaAnalyse::extractTags($content, $top_k)\n- content 為待提取的文本\n- top_k 為返回幾個 TF\u002FIDF 權重最大的關鍵詞，默認值為 20\n- 可使用 setStopWords 增加自定義 stop words\n\n代碼示例 (關鍵詞提取)\n\n```php\nini_set('memory_limit', '600M');\n\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FJieba.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FFinalseg.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FJiebaAnalyse.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nuse Fukuball\\Jieba\\JiebaAnalyse;\nJieba::init(array('mode'=>'test','dict'=>'small'));\nFinalseg::init();\nJiebaAnalyse::init();\n\n$top_k = 10;\n$content = file_get_contents(\"\u002Fpath\u002Fto\u002Fyour\u002Fdict\u002Flyric.txt\", \"r\");\n\n$tags = JiebaAnalyse::extractTags($content, $top_k);\n\nvar_dump($tags);\n\nJiebaAnalyse::setStopWords('\u002Fpath\u002Fto\u002Fyour\u002Fdict\u002Fstop_words.txt');\n\n$tags = JiebaAnalyse::extractTags($content, $top_k);\n\nvar_dump($tags);\n```\n\nOutput:\n\n```php\narray(10) {\n  '沒有' =>\n  double(1.0592831964595)\n  '所謂' =>\n  double(0.90795702553671)\n  '是否' =>\n  double(0.66385043195443)\n  '一般' =>\n  double(0.54607060161899)\n  '雖然' =>\n  double(0.30265234184557)\n  '來說' =>\n  double(0.30265234184557)\n  '肌迫' =>\n  double(0.30265234184557)\n  '退縮' =>\n  double(0.30265234184557)\n  '矯作' =>\n  double(0.30265234184557)\n  '怯懦' =>\n  double(0.24364586159392)\n}\narray(10) {\n  '所謂' =>\n  double(1.1569129841516)\n  '一般' =>\n  double(0.69579963754677)\n  '矯作' =>\n  double(0.38563766138387)\n  '來說' =>\n  double(0.38563766138387)\n  '退縮' =>\n  double(0.38563766138387)\n  '雖然' =>\n  double(0.38563766138387)\n  '肌迫' =>\n  double(0.38563766138387)\n  '怯懦' =>\n  double(0.31045198493419)\n  '隨便說說' =>\n  double(0.19281883069194)\n  '一場' =>\n  double(0.19281883069194)\n}\n```\n\n# 功能 4)：詞性分詞\n\n- 詞性說明：[https:\u002F\u002Fgist.github.com\u002Fluw2007\u002F6016931](https:\u002F\u002Fgist.github.com\u002Fluw2007\u002F6016931)\n\n代碼示例 (Tutorial)\n\n```php\nini_set('memory_limit', '600M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FPosseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nuse Fukuball\\Jieba\\Posseg;\nJieba::init();\nFinalseg::init();\nPosseg::init();\n\n$seg_list = Posseg::cut(\"这是一个伸手不见五指的黑夜。我叫孙悟空，我爱北京，我爱Python和C++。\");\nvar_dump($seg_list);\n```\n\n## 新功能：支持 TF-IDF 分數的詞性分詞\n\n```php\n\u002F\u002F 使用 Posseg::cut() 含 TF-IDF 分數\n$scored_result = Posseg::cut(\"我愛吃蘋果\", array('with_scores' => true));\nforeach ($scored_result as $item) {\n    echo sprintf(\"%-10s [%s] TF: %.4f, TF-IDF: %.4f\\n\",\n        $item['word'], $item['tag'], $item['tf'], $item['tfidf']);\n}\n\n\u002F\u002F 使用 Jieba::cut() 含詞性標註\n$pos_result = Jieba::cut(\"我愛吃蘋果\", false, array('with_pos' => true));\nforeach ($pos_result as $item) {\n    echo sprintf(\"%-10s [%s]\\n\", $item['word'], $item['tag']);\n}\n\n\u002F\u002F 使用 Jieba::cut() 含詞性標註和 TF-IDF 分數\n$full_result = Jieba::cut(\"我愛吃蘋果\", false, array(\n    'with_pos' => true,\n    'with_scores' => true\n));\nforeach ($full_result as $item) {\n    echo sprintf(\"%-10s [%s] TF: %.4f, TF-IDF: %.4f\\n\",\n        $item['word'], $item['tag'], $item['tf'], $item['tfidf']);\n}\n```\n\nOutput:\n\n```php\narray(21) {\n  [0]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"这\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [1]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"是\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [2]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"一个\"\n    [\"tag\"]=>\n    string(1) \"m\"\n  }\n  [3]=>\n  array(2) {\n    [\"word\"]=>\n    string(18) \"伸手不见五指\"\n    [\"tag\"]=>\n    string(1) \"i\"\n  }\n  [4]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"的\"\n    [\"tag\"]=>\n    string(2) \"uj\"\n  }\n  [5]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"黑夜\"\n    [\"tag\"]=>\n    string(1) \"n\"\n  }\n  [6]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"。\"\n    [\"tag\"]=>\n    string(1) \"x\"\n  }\n  [7]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"我\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [8]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"叫\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [9]=>\n  array(2) {\n    [\"word\"]=>\n    string(9) \"孙悟空\"\n    [\"tag\"]=>\n    string(2) \"nr\"\n  }\n  [10]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"，\"\n    [\"tag\"]=>\n    string(1) \"x\"\n  }\n  [11]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"我\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [12]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"爱\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [13]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"北京\"\n    [\"tag\"]=>\n    string(2) \"ns\"\n  }\n  [14]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"，\"\n    [\"tag\"]=>\n    string(1) \"x\"\n  }\n  [15]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"我\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [16]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"爱\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [17]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"Python\"\n    [\"tag\"]=>\n    string(3) \"eng\"\n  }\n  [18]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"和\"\n    [\"tag\"]=>\n    string(1) \"c\"\n  }\n  [19]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"C++\"\n    [\"tag\"]=>\n    string(3) \"eng\"\n  }\n  [20]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"。\"\n    [\"tag\"]=>\n    string(1) \"x\"\n  }\n}\n```\n\n# 功能 5)：切換成繁體字典\n\n代碼示例 (Tutorial)\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nJieba::init(array('mode'=>'default','dict'=>'big'));\nFinalseg::init();\n\n$seg_list = Jieba::cut(\"怜香惜玉也得要看对象啊！\");\nvar_dump($seg_list);\n\n$seg_list = Jieba::cut(\"憐香惜玉也得要看對象啊！\");\nvar_dump($seg_list);\n```\n\nOutput:\n\n```php\narray(7) {\n  [0]=>\n  string(12) \"怜香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"对象\"\n  [6]=>\n  string(3) \"啊\"\n}\narray(7) {\n  [0]=>\n  string(12) \"憐香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"對象\"\n  [6]=>\n  string(3) \"啊\"\n}\n```\n\n# 功能 5)：切換成繁體字典\n\n代碼示例 (Tutorial)\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nJieba::init(array('mode'=>'default','dict'=>'big'));\nFinalseg::init();\n\n$seg_list = Jieba::cut(\"怜香惜玉也得要看对象啊！\");\nvar_dump($seg_list);\n\n$seg_list = Jieba::cut(\"憐香惜玉也得要看對象啊！\");\nvar_dump($seg_list);\n```\n\nOutput:\n\n```php\narray(7) {\n  [0]=>\n  string(12) \"怜香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"对象\"\n  [6]=>\n  string(3) \"啊\"\n}\narray(7) {\n  [0]=>\n  string(12) \"憐香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"對象\"\n  [6]=>\n  string(3) \"啊\"\n}\n```\n\n# 功能 6)：多語言 CJK 文本處理\n\njieba-php 現在支援更好的多語言 CJK（中文、日文、韓文）文本處理，包括混合語言文本的處理。\n\n代碼示例 (Tutorial)\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\n\n\u002F\u002F 初始化支援所有 CJK 語言\nJieba::init(array('cjk'=>'all'));\nFinalseg::init();\n\n\u002F\u002F 韓語文本處理\n$seg_list = Jieba::cut(\"한국어 또는 조선말은 제주특별자치도를 제외한 한반도 및 그 부속 도서와 한민족 거주 지역에서 쓰이는 언어로\");\nvar_dump($seg_list);\n\n\u002F\u002F 日語文本處理\n$seg_list = Jieba::cut(\"日本語は、主に日本国内や日本人同士の間で使われている言語である。\");\nvar_dump($seg_list);\n\n\u002F\u002F 混合語言文本處理\n$mixed_text = \"我喜欢这个世界。私は日本に住んでいます。안녕하세요 세계입니다.\";\n$seg_list = Jieba::cut($mixed_text);\nvar_dump($seg_list);\n\n\u002F\u002F 複雜混合文本處理\n$complex_mixed = \"今天weather很好，私たちは공원에 갔습니다。\";\n$seg_list = Jieba::cut($complex_mixed);\nvar_dump($seg_list);\n\n\u002F\u002F 加載日語詞庫可以對日語進行簡單的分詞\nJieba::loadUserDict(\"\u002Fpath\u002Fto\u002Fyour\u002Fjapanese\u002Fdict.txt\");\n$seg_list = Jieba::cut(\"日本語は、主に日本国内や日本人同士の間で使われている言語である。\");\nvar_dump($seg_list);\n```\n\n## 示範腳本\n\n- 基本多語言處理：`php src\u002Fcmd\u002Fdemo_mixed_cjk.php`\n- TF-IDF 和詞性標註整合：`php src\u002Fcmd\u002Fdemo_tf_idf_pos.php`\n\nOutput:\n\n```php\narray(15) {\n  [0]=>\n  string(9) \"한국어\"\n  [1]=>\n  string(6) \"또는\"\n  [2]=>\n  string(12) \"조선말은\"\n  [3]=>\n  string(24) \"제주특별자치도를\"\n  [4]=>\n  string(9) \"제외한\"\n  [5]=>\n  string(9) \"한반도\"\n  [6]=>\n  string(3) \"및\"\n  [7]=>\n  string(3) \"그\"\n  [8]=>\n  string(6) \"부속\"\n  [9]=>\n  string(9) \"도서와\"\n  [10]=>\n  string(9) \"한민족\"\n  [11]=>\n  string(6) \"거주\"\n  [12]=>\n  string(12) \"지역에서\"\n  [13]=>\n  string(9) \"쓰이는\"\n  [14]=>\n  string(9) \"언어로\"\n}\narray(21) {\n  [0]=>\n  string(6) \"日本\"\n  [1]=>\n  string(3) \"語\"\n  [2]=>\n  string(3) \"は\"\n  [3]=>\n  string(3) \"主\"\n  [4]=>\n  string(3) \"に\"\n  [5]=>\n  string(6) \"日本\"\n  [6]=>\n  string(6) \"国内\"\n  [7]=>\n  string(3) \"や\"\n  [8]=>\n  string(6) \"日本\"\n  [9]=>\n  string(3) \"人\"\n  [10]=>\n  string(6) \"同士\"\n  [11]=>\n  string(3) \"の\"\n  [12]=>\n  string(3) \"間\"\n  [13]=>\n  string(3) \"で\"\n  [14]=>\n  string(3) \"使\"\n  [15]=>\n  string(3) \"わ\"\n  [16]=>\n  string(6) \"れて\"\n  [17]=>\n  string(6) \"いる\"\n  [18]=>\n  string(6) \"言語\"\n  [19]=>\n  string(3) \"で\"\n  [20]=>\n  string(6) \"ある\"\n}\narray(17) {\n  [0]=>\n  string(9) \"日本語\"\n  [1]=>\n  string(3) \"は\"\n  [2]=>\n  string(6) \"主に\"\n  [3]=>\n  string(9) \"日本国\"\n  [4]=>\n  string(3) \"内\"\n  [5]=>\n  string(3) \"や\"\n  [6]=>\n  string(9) \"日本人\"\n  [7]=>\n  string(6) \"同士\"\n  [8]=>\n  string(3) \"の\"\n  [9]=>\n  string(3) \"間\"\n  [10]=>\n  string(3) \"で\"\n  [11]=>\n  string(3) \"使\"\n  [12]=>\n  string(3) \"わ\"\n  [13]=>\n  string(6) \"れて\"\n  [14]=>\n  string(6) \"いる\"\n  [15]=>\n  string(6) \"言語\"\n  [16]=>\n  string(9) \"である\"\n}\n```\n\n# 功能 7)：返回詞語在原文的起止位置\n\n代碼示例 (Tutorial)\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nJieba::init(array('mode'=>'test','dict'=>'big'));\nFinalseg::init();\n\n$seg_list = Jieba::tokenize(\"永和服装饰品有限公司\");\nvar_dump($seg_list);\n```\n\nOutput:\n\n```php\narray(4) {\n  [0] =>\n  array(3) {\n    'word' =>\n    string(6) \"永和\"\n    'start' =>\n    int(0)\n    'end' =>\n    int(2)\n  }\n  [1] =>\n  array(3) {\n    'word' =>\n    string(6) \"服装\"\n    'start' =>\n    int(2)\n    'end' =>\n    int(4)\n  }\n  [2] =>\n  array(3) {\n    'word' =>\n    string(6) \"饰品\"\n    'start' =>\n    int(4)\n    'end' =>\n    int(6)\n  }\n  [3] =>\n  array(3) {\n    'word' =>\n    string(12) \"有限公司\"\n    'start' =>\n    int(6)\n    'end' =>\n    int(10)\n  }\n}\n```\n\n# 其他詞典\n\n1. 佔用內容較小的詞典\n   https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php\u002Fblob\u002Fmaster\u002Fsrc\u002Fdict\u002Fdict.small.txt\n\n2. 支持繁體斷詞的詞典\n   https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php\u002Fblob\u002Fmaster\u002Fsrc\u002Fdict\u002Fdict.big.txt\n\n# 常見問題\n\n1. 模型的數據是如何生成的？ https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba\u002Fissues\u002F7\n2. 這個庫的授權是？ https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba\u002Fissues\u002F2\n\n# jieba-php English Document\n\n# Online Demo\n\n- Demo Site Repo：[https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php.fukuball.com](https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php.fukuball.com)\n\n# Feature\n\n- Support three types of segmentation mode:\n- 1. Accurate Mode, attempt to cut the sentence into the most accurate segmentation, which is suitable for text analysis;\n- 2. Full Mode, break the words of the sentence into words scanned\n- 3. Search Engine Mode, based on the Accurate Mode, with an attempt to cut the long words into several short words, which can enhance the recall rate\n\n- Support Traditional Chinese word segmentation\n- Support custom dictionaries\n- Support multi-language CJK text processing (Chinese, Japanese, Korean)\n- Support TF-IDF integration and POS tagging\n- Support memory management and cache optimization\n- Support custom POS tags\n\n# Usage\n\n- Installation: Use composer to install jieba-php, then require the autoload file to use jieba-php.\n\n# Algorithm\n\n- Based on the Trie tree structure to achieve efficient word graph scanning; sentences using Chinese characters constitute a directed acyclic graph (DAG).\n- Employs memory search to calculate the maximum probability path, in order to identify the maximum tangential points based on word frequency combination.\n- For unknown words, the character position HMM-based model is used, using the Viterbi algorithm.\n- The meaning of BEMS [https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba\u002Fissues\u002F7](https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba\u002Fissues\u002F7).\n\n# Interface\n\n- The `cut` method accepts two parameters: 1) first parameter is the string to segmentation 2）the second parameter `cut_all` to control segmentation mode.\n- The string to segmentation may use utf-8 string.\n- `cutForSearch` accpets only on parameter: the string that requires segmentation, and it will cut the sentence into short words\n- `cut` and `cutForSearch` return an segmented array.\n\n# Function 1) Segmentation\n\nExample (Tutorial)\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FJieba.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nJieba::init();\nFinalseg::init();\n\n$seg_list = Jieba::cut(\"怜香惜玉也得要看对象啊！\");\nvar_dump($seg_list);\n\nseg_list = jieba.cut(\"我来到北京清华大学\", true)\nvar_dump($seg_list); #全模式\n\nseg_list = jieba.cut(\"我来到北京清华大学\", false)\nvar_dump($seg_list); #默認精確模式\n\nseg_list = jieba.cut(\"他来到了网易杭研大厦\")\nvar_dump($seg_list);\n\nseg_list = jieba.cut_for_search(\"小明硕士毕业于中国科学院计算所，后在日本京都大学深造\") #搜索引擎模式\nvar_dump($seg_list);\n```\n\nOutput:\n\n```php\narray(7) {\n  [0]=>\n  string(12) \"怜香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"对象\"\n  [6]=>\n  string(3) \"啊\"\n}\n\nFull Mode:\narray(15) {\n  [0]=>\n  string(3) \"我\"\n  [1]=>\n  string(3) \"来\"\n  [2]=>\n  string(6) \"来到\"\n  [3]=>\n  string(3) \"到\"\n  [4]=>\n  string(3) \"北\"\n  [5]=>\n  string(6) \"北京\"\n  [6]=>\n  string(3) \"京\"\n  [7]=>\n  string(3) \"清\"\n  [8]=>\n  string(6) \"清华\"\n  [9]=>\n  string(12) \"清华大学\"\n  [10]=>\n  string(3) \"华\"\n  [11]=>\n  string(6) \"华大\"\n  [12]=>\n  string(3) \"大\"\n  [13]=>\n  string(6) \"大学\"\n  [14]=>\n  string(3) \"学\"\n}\n\nDefault Mode:\narray(4) {\n  [0]=>\n  string(3) \"我\"\n  [1]=>\n  string(6) \"来到\"\n  [2]=>\n  string(6) \"北京\"\n  [3]=>\n  string(12) \"清华大学\"\n}\narray(6) {\n  [0]=>\n  string(3) \"他\"\n  [1]=>\n  string(6) \"来到\"\n  [2]=>\n  string(3) \"了\"\n  [3]=>\n  string(6) \"网易\"\n  [4]=>\n  string(6) \"杭研\"\n  [5]=>\n  string(6) \"大厦\"\n}\n(此處，“杭研“並沒有在詞典中，但是也被 Viterbi 算法識別出來了)\n\nSearch Engine Mode:\narray(18) {\n  [0]=>\n  string(6) \"小明\"\n  [1]=>\n  string(6) \"硕士\"\n  [2]=>\n  string(6) \"毕业\"\n  [3]=>\n  string(3) \"于\"\n  [4]=>\n  string(6) \"中国\"\n  [5]=>\n  string(6) \"科学\"\n  [6]=>\n  string(6) \"学院\"\n  [7]=>\n  string(9) \"科学院\"\n  [8]=>\n  string(15) \"中国科学院\"\n  [9]=>\n  string(6) \"计算\"\n  [10]=>\n  string(9) \"计算所\"\n  [11]=>\n  string(3) \"后\"\n  [12]=>\n  string(3) \"在\"\n  [13]=>\n  string(6) \"日本\"\n  [14]=>\n  string(6) \"京都\"\n  [15]=>\n  string(6) \"大学\"\n  [16]=>\n  string(18) \"日本京都大学\"\n  [17]=>\n  string(6) \"深造\"\n}\n```\n\n# Function 2) Add a custom dictionary\n\n- Developers can specify their own custom dictionary to include in the jieba thesaurus. jieba has the ability to identify new words, but adding your own new words can ensure a higher rate of correct segmentation.\n- Usage: `Jieba::loadUserDict(file_name)` # file_name is a custom dictionary path.\n- The dictionary format is the same as that of `dict.txt`: one word per line; each line is divided into two parts, the first is the word itself, the other is the word frequency, separated by a space.\n- Example:\n\n  云计算 5\n  李小福 2\n  创新办 3\n\n  之前： 李小福 \u002F 是 \u002F 创新 \u002F 办 \u002F 主任 \u002F 也 \u002F 是 \u002F 云 \u002F 计算 \u002F 方面 \u002F 的 \u002F 专家 \u002F\n  加載自定義詞庫後：　李小福 \u002F 是 \u002F 创新办 \u002F 主任 \u002F 也 \u002F 是 \u002F 云计算 \u002F 方面 \u002F 的 \u002F 专家 \u002F\n\n# Function 3) Keyword Extraction\n\n- JiebaAnalyse::extractTags($content, $top_k)\n- content: the text to be extracted\n- top_k: to return several TF\u002FIDF weights for the biggest keywords, the default value is 20\n\nExample (keyword extraction)\n\n```php\nini_set('memory_limit', '600M');\n\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FJieba.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FFinalseg.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FJiebaAnalyse.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nuse Fukuball\\Jieba\\JiebaAnalyse;\nJieba::init(array('mode'=>'test','dict'=>'small'));\nFinalseg::init();\nJiebaAnalyse::init();\n\n$top_k = 10;\n$content = file_get_contents(\"\u002Fpath\u002Fto\u002Fyour\u002Fdict\u002Flyric.txt\", \"r\");\n\n$tags = JiebaAnalyse::extractTags($content, $top_k);\n\nvar_dump($tags);\n```\n\nOutput:\n\n```php\narray(10) {\n  [\"是否\"]=>\n  float(1.2196321889395)\n  [\"一般\"]=>\n  float(1.0032459890209)\n  [\"肌迫\"]=>\n  float(0.64654314660465)\n  [\"怯懦\"]=>\n  float(0.44762844339349)\n  [\"藉口\"]=>\n  float(0.32327157330233)\n  [\"逼不得已\"]=>\n  float(0.32327157330233)\n  [\"不安全感\"]=>\n  float(0.26548304656279)\n  [\"同感\"]=>\n  float(0.23929673812326)\n  [\"有把握\"]=>\n  float(0.21043366018744)\n  [\"空洞\"]=>\n  float(0.20598261709442)\n}\n\n```\n\n# Function 4) Word Segmentation and Tagging\n\n- Word Tagging Meaning：[https:\u002F\u002Fgist.github.com\u002Fluw2007\u002F6016931](https:\u002F\u002Fgist.github.com\u002Fluw2007\u002F6016931)\n\nExample (word tagging)\n\n```php\nini_set('memory_limit', '600M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FPosseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nuse Fukuball\\Jieba\\Posseg;\nJieba::init();\nFinalseg::init();\nPosseg::init();\n\n$seg_list = Posseg::cut(\"这是一个伸手不见五指的黑夜。我叫孙悟空，我爱北京，我爱Python和C++。\");\nvar_dump($seg_list);\n```\n\nOutput:\n\n```php\narray(21) {\n  [0]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"这\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [1]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"是\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [2]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"一个\"\n    [\"tag\"]=>\n    string(1) \"m\"\n  }\n  [3]=>\n  array(2) {\n    [\"word\"]=>\n    string(18) \"伸手不见五指\"\n    [\"tag\"]=>\n    string(1) \"i\"\n  }\n  [4]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"的\"\n    [\"tag\"]=>\n    string(2) \"uj\"\n  }\n  [5]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"黑夜\"\n    [\"tag\"]=>\n    string(1) \"n\"\n  }\n  [6]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"。\"\n    [\"tag\"]=>\n    string(1) \"w\"\n  }\n  [7]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"我\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [8]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"叫\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [9]=>\n  array(2) {\n    [\"word\"]=>\n    string(9) \"孙悟空\"\n    [\"tag\"]=>\n    string(2) \"nr\"\n  }\n  [10]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"，\"\n    [\"tag\"]=>\n    string(1) \"w\"\n  }\n  [11]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"我\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [12]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"爱\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [13]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"北京\"\n    [\"tag\"]=>\n    string(2) \"ns\"\n  }\n  [14]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"，\"\n    [\"tag\"]=>\n    string(1) \"w\"\n  }\n  [15]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"我\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [16]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"爱\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [17]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"Python\"\n    [\"tag\"]=>\n    string(3) \"eng\"\n  }\n  [18]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"和\"\n    [\"tag\"]=>\n    string(1) \"c\"\n  }\n  [19]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"C++\"\n    [\"tag\"]=>\n    string(3) \"eng\"\n  }\n  [20]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"。\"\n    [\"tag\"]=>\n    string(1) \"w\"\n  }\n}\n```\n\n# Function 5)：Use Traditional Chinese\n\nExample (Tutorial)\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nJieba::init(array('mode'=>'default','dict'=>'big'));\nFinalseg::init();\n\n$seg_list = Jieba::cut(\"怜香惜玉也得要看对象啊！\");\nvar_dump($seg_list);\n\n$seg_list = Jieba::cut(\"憐香惜玉也得要看對象啊！\");\nvar_dump($seg_list);\n```\n\nOutput:\n\n```php\narray(7) {\n  [0]=>\n  string(12) \"怜香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"对象\"\n  [6]=>\n  string(3) \"啊\"\n}\narray(7) {\n  [0]=>\n  string(12) \"憐香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"對象\"\n  [6]=>\n  string(3) \"啊\"\n}\n```\n\n# Function 6)：Keeping Japanese or Korean original text\n\nExample (Tutorial)\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nJieba::init(array('cjk'=>'all'));\nFinalseg::init();\n\n$seg_list = Jieba::cut(\"한국어 또는 조선말은 제주특별자치도를 제외한 한반도 및 그 부속 도서와 한민족 거주 지역에서 쓰이는 언어로\");\nvar_dump($seg_list);\n\n$seg_list = Jieba::cut(\"日本語は、主に日本国内や日本人同士の間で使われている言語である。\");\nvar_dump($seg_list);\n\n\u002F\u002F Loading custom Japanese dictionary can do a simple word segmentation\nJieba::loadUserDict(\"\u002Fpath\u002Fto\u002Fyour\u002Fjapanese\u002Fdict.txt\");\n$seg_list = Jieba::cut(\"日本語は、主に日本国内や日本人同士の間で使われている言語である。\");\nvar_dump($seg_list);\n```\n\nOutput:\n\n```php\narray(15) {\n  [0]=>\n  string(9) \"한국어\"\n  [1]=>\n  string(6) \"또는\"\n  [2]=>\n  string(12) \"조선말은\"\n  [3]=>\n  string(24) \"제주특별자치도를\"\n  [4]=>\n  string(9) \"제외한\"\n  [5]=>\n  string(9) \"한반도\"\n  [6]=>\n  string(3) \"및\"\n  [7]=>\n  string(3) \"그\"\n  [8]=>\n  string(6) \"부속\"\n  [9]=>\n  string(9) \"도서와\"\n  [10]=>\n  string(9) \"한민족\"\n  [11]=>\n  string(6) \"거주\"\n  [12]=>\n  string(12) \"지역에서\"\n  [13]=>\n  string(9) \"쓰이는\"\n  [14]=>\n  string(9) \"언어로\"\n}\narray(21) {\n  [0]=>\n  string(6) \"日本\"\n  [1]=>\n  string(3) \"語\"\n  [2]=>\n  string(3) \"は\"\n  [3]=>\n  string(3) \"主\"\n  [4]=>\n  string(3) \"に\"\n  [5]=>\n  string(6) \"日本\"\n  [6]=>\n  string(6) \"国内\"\n  [7]=>\n  string(3) \"や\"\n  [8]=>\n  string(6) \"日本\"\n  [9]=>\n  string(3) \"人\"\n  [10]=>\n  string(6) \"同士\"\n  [11]=>\n  string(3) \"の\"\n  [12]=>\n  string(3) \"間\"\n  [13]=>\n  string(3) \"で\"\n  [14]=>\n  string(3) \"使\"\n  [15]=>\n  string(3) \"わ\"\n  [16]=>\n  string(6) \"れて\"\n  [17]=>\n  string(6) \"いる\"\n  [18]=>\n  string(6) \"言語\"\n  [19]=>\n  string(3) \"で\"\n  [20]=>\n  string(6) \"ある\"\n}\narray(17) {\n  [0]=>\n  string(9) \"日本語\"\n  [1]=>\n  string(3) \"は\"\n  [2]=>\n  string(6) \"主に\"\n  [3]=>\n  string(9) \"日本国\"\n  [4]=>\n  string(3) \"内\"\n  [5]=>\n  string(3) \"や\"\n  [6]=>\n  string(9) \"日本人\"\n  [7]=>\n  string(6) \"同士\"\n  [8]=>\n  string(3) \"の\"\n  [9]=>\n  string(3) \"間\"\n  [10]=>\n  string(3) \"で\"\n  [11]=>\n  string(3) \"使\"\n  [12]=>\n  string(3) \"わ\"\n  [13]=>\n  string(6) \"れて\"\n  [14]=>\n  string(6) \"いる\"\n  [15]=>\n  string(6) \"言語\"\n  [16]=>\n  string(9) \"である\"\n}\n```\n\n# 詞性說明\n\n```\na 形容词 (取英语形容词 adjective 的第 1 个字母。)\n  ad 副形词 (直接作状语的形容词，形容词代码 a 和副词代码 d 并在一起。)\n  ag 形容词性语素 (形容词性语素，形容词代码为 a，语素代码 ｇ 前面置以 a。)\n  an 名形词 (具有名词功能的形容词，形容词代码 a 和名词代码 n 并在一起。)\nb 区别词 (取汉字「别」的声母。)\nc 连词 (取英语连词 conjunction 的第 1 个字母。)\nd 副词 (取 adverb 的第 2 个字母，因其第 1 个字母已用于形容词。)\n  df 副词*\n  dg 副语素 (副词性语素，副词代码为 d，语素代码 ｇ 前面置以 d。)\ne 叹词 (取英语叹词 exclamation 的第 1 个字母。)\neng 外语\nf 方位词 (取汉字「方」的声母。)\ng 语素 (绝大多数语素都能作为合成词的「词根」，取汉字「根」的声母。)\nh 前接成分 (取英语 head 的第 1 个字母。)\ni 成语 (取英语成语 idiom 的第 1 个字母。)\nj 简称略语 (取汉字「简」的声母。)\nk 后接成分\nl 习用语 (习用语尚未成为成语，有点「临时性」，取「临」的声母。)\nm 数词 (取英语 numeral 的第 3 个字母，n，u 已有他用。)\n  mg 数语素\n  mq 数词*\nn 名词 (取英语名词 noun 的第 1 个字母。)\n  ng 名语素 (名词性语素，名词代码为 n，语素代码 ｇ 前面置以 n。)\n  nr 人名 (名词代码n和「人(ren)」的声母并在一起。)\n  nrfg 名词*\n  nrt 名词*\n  ns 地名 (名词代码 n 和处所词代码 s 并在一起。)\n  nt 机构团体 (「团」的声母为 t，名词代码 n 和 t 并在一起。)\n  nz 其他专名 (「专」的声母的第 1 个字母为 z，名词代码 n 和 z 并在一起。)\no 拟声词 (取英语拟声词 onomatopoeia 的第 1 个字母。)\np 介词 (取英语介词 prepositional 的第 1 个字母。)\nq 量词 (取英语 quantity 的第 1 个字母。)\nr 代词 (取英语代词 pronoun的 第 2 个字母，因 p 已用于介词。)\n  rg 代词语素\n  rr 代词*\n  rz 代词*\ns 处所词 (取英语 space 的第 1 个字母。)\nt 时间词 (取英语 time 的第 1 个字母。)\n  tg 时语素 (时间词性语素，时间词代码为 t，在语素的代码 g 前面置以 t。)\nu 助词 (取英语助词 auxiliary 的第 2 个字母，因 a 已用于形容词。)\n  ud 助词*\n  ug 助词*\n  uj 助词*\n  ul 助词*\n  uv 助词*\n  uz 助词*\nv 动词 (取英语动词 verb 的第一个字母。)\n  vd 副动词 (直接作状语的动词，动词和副词的代码并在一起。)\n  vg 动语素\n  vi 动词*\n  vn 名动词 (指具有名词功能的动词，动词和名词的代码并在一起。)\n  vq 动词*\nw 标点符号\nx 非语素字 (非语素字只是一个符号，字母 x 通常用于代表未知数、符号。)\ny 语气词 (取汉字「语」的声母。)\nz 状态词 (取汉字「状」的声母的前一个字母。)\n  zg 状态词*\n```\n\n# 功能 8)：記憶體管理\n\n為了處理大量文本時的記憶體使用問題，jieba-php 提供了新的 JiebaMemory 類別來統一管理所有類別的記憶體使用。\n\n## JiebaMemory - 統一記憶體管理\n\n```php\nini_set('memory_limit', '1024M');\n\nuse Fukuball\\Jieba\\JiebaMemory;\n\n\u002F\u002F 初始化所有類別\nJiebaMemory::initAll();\n\n\u002F\u002F 檢查初始化狀態\n$status = JiebaMemory::getInitializationStatus();\nvar_dump($status);\n\n\u002F\u002F 獲取記憶體使用統計\n$stats = JiebaMemory::getMemoryStats();\necho \"當前記憶體使用：\" . $stats['current_memory_usage_formatted'] . \"\\n\";\necho \"峰值記憶體使用：\" . $stats['peak_memory_usage_formatted'] . \"\\n\";\n\n\u002F\u002F 清除所有快取但保持類別初始化\nJiebaMemory::clearAllCaches();\n\n\u002F\u002F 銷毀所有類別釋放記憶體\nJiebaMemory::destroyAll();\n```\n\n## 詳細快取統計\n\n```php\n\u002F\u002F 獲取所有類別的快取統計\n$cacheStats = JiebaMemory::getAllCacheStats();\necho \"Jieba DAG 快取大小：\" . $cacheStats['jieba']['dag_cache_size'] . \"\\n\";\necho \"Posseg 詞性標籤數量：\" . $cacheStats['posseg']['word_tag_size'] . \"\\n\";\necho \"JiebaAnalyse IDF 頻率數量：\" . $cacheStats['jieba_analyse']['idf_freq_size'] . \"\\n\";\n```\n\n## Cache Management (原有功能)\n\n當處理大量文本時，jieba-php 使用內部快取來提高性能。以下功能可用於管理快取記憶體使用：\n\n### clearCache()\n\n清除所有內部快取以釋放記憶體。處理多個大型文本文件時很有用。\n\n```php\nini_set('memory_limit', '1024M');\n\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\n\nJieba::init();\nFinalseg::init();\n\n\u002F\u002F 處理第一個文件\n$text1 = file_get_contents('large_file1.txt');\n$seg_list1 = Jieba::cut($text1);\n\n\u002F\u002F 處理下一個文件前清除快取\nJieba::clearCache();\n\n\u002F\u002F 處理第二個文件\n$text2 = file_get_contents('large_file2.txt');\n$seg_list2 = Jieba::cut($text2);\n```\n\n### getCacheStats()\n\n返回當前快取使用情況以供監控。\n\n```php\n$stats = Jieba::getCacheStats();\necho \"DAG 快取大小：\" . $stats['dag_cache_size'] . \"\\n\";\necho \"Trie 快取大小：\" . $stats['trie_cache_size'] . \"\\n\";\necho \"記憶體使用：\" . round($stats['total_memory_usage'] \u002F 1024 \u002F 1024, 2) . \"M\\n\";\necho \"峰值記憶體：\" . round($stats['peak_memory_usage'] \u002F 1024 \u002F 1024, 2) . \"M\\n\";\n```\n\n### clearCacheIfNeeded()\n\n如果快取超過指定大小限制則自動清除。\n\n```php\n\u002F\u002F 如果 DAG 快取超過 50,000 條目或 trie 快取超過 50,000 條目則清除快取\n$cleared = Jieba::clearCacheIfNeeded(50000, 50000);\nif ($cleared) {\n    echo \"由於大小限制，快取已被清除\\n\";\n}\n\n\u002F\u002F 自定義限制\n$cleared = Jieba::clearCacheIfNeeded(10000, 10000);\n```\n\n## 記憶體使用提示\n\n- 對於處理多個文件的 CLI 應用程序，在每個文件後調用 `clearCache()` 或使用 `JiebaMemory::clearAllCaches()`\n- 使用 `getCacheStats()` 或 `JiebaMemory::getMemoryStats()` 監控記憶體使用情況\n- 考慮使用 `clearCacheIfNeeded()` 進行自動快取管理\n- 注意清除快取會重置性能優化，直到重新建立快取\n- 使用 `JiebaMemory::destroyAll()` 完全釋放記憶體，但需要重新初始化才能再次使用\n\n# Donate\n\nIf you find fuku-ml useful, please consider a donation. Thank you!\n\n- bitcoin: 1BbihQU3CzSdyLSP9bvQq7Pi1z1jTdAaq9\n- eth: 0x92DA3F837bf2F79D422bb8CEAC632208F94cdE33\n\n# License\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 fukuball\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and\u002For sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","# [jieba-php](http:\u002F\u002Fwww.fukuball.com\u002Fjieba-php\u002F)\n\n[![用爱制作](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fmade%20with-%e2%9d%a4-ff69b4.svg)](http:\u002F\u002Fwww.fukuball.com)\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Ffukuball\u002Fjieba-php\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Ffukuball\u002Fjieba-php)\n\n“结巴”中文分词：打造最佳的 PHP 中文分词、中文断词组件，原始版本翻译自 [fxsjy\u002Fjieba](https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba)，目前已成为一个独立分支，欢迎感兴趣的开发者共同参与开发！若想使用 Python 版本，请前往 [fxsjy\u002Fjieba](https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba)。\n\n现在已支持繁体中文！只需将字典切换为 big 模式即可！\n\n目前使用 LLM 大语言模型进行中文断词可以获得更好的效果，但若追求快速、低成本，该套件仍然具有实用价值。\n\n“Jieba”（中文意为“结巴”）中文文本分词：致力于成为最佳的 PHP 中文分词模块。\n\n_请向下滚动查看英文文档。_\n\n# 在线演示\n\n- 网站源码：[https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php.fukuball.com](https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php.fukuball.com)\n\n# 功能\n\n- 支持三种分词模式：\n  - 1）默认精确模式，尝试将句子最精确地切分，适合文本分析；\n  - 2）全模式，扫描出句子中所有可能成词的词语，但无法解决歧义。（需要充足的字典）\n  - 3）搜索引擎模式，在精确模式基础上对长词再次切分，提高召回率，适用于搜索引擎分词。\n- 支持繁体断词\n- 支持自定义词典\n- 支持多语言 CJK 文本处理（中文、日文、韩文）\n- 支持 TF-IDF 分词整合和词性标注\n- 支持内存管理和缓存优化\n- 支持自定义词性标签\n\n# 使用方法\n\n- 自动安装：使用 Composer 安装后，通过 autoload 引用\n\n代码示例：\n\n```php\ncomposer require fukuball\u002Fjieba-php\n```\n\n代码示例：\n\n```php\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fautoload.php\";\n```\n\n- 手动安装：将 jieba-php 放置在适当目录后，通过 require_once 引用\n\n代码示例：\n\n```php\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FJieba.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FFinalseg.php\";\n```\n\n# 算法\n\n- 基于 Trie 树结构实现高效的词图扫描，生成句子中汉字所有可能成词情况所构成的有向无环图（DAG)。\n- 采用动态规划查找最大概率路径，找出基于词频的最大切分组合。\n- 对于未登录词，采用基于汉字成词能力的 HMM 模型，使用 Viterbi 算法。\n- BEMS 的解释 [https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba\u002Fissues\u002F7](https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba\u002Fissues\u002F7)\n\n# 接口\n\n- 组件仅提供 jieba.cut 方法用于分词。\n- cut 方法接受两个输入参数：1) 第一个参数为需要分词的字符串；2) cut_all 参数用于控制分词模式。\n- 待分词的字符串可以是 UTF-8 字符串。\n- jieba.cut 返回的结构是一个可迭代的数组。\n\n# 功能 1)：分词\n\n- `cut` 方法接受两个输入参数：1) 第一个参数为需要分词的字符串；2) cut_all 参数用于控制分词模式。\n- `cutForSearch` 方法接受一个参数：需要分词的字符串，该方法适合用于搜索引擎构建倒排索引的分词，粒度较为细。\n- 注意：待分词的字符串是 UTF-8 字符串。\n- `cut` 以及 `cutForSearch` 返回的结构是一个可迭代的数组。\n\n代码示例（教程）：\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FJieba.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nJieba::init();\nFinalseg::init();\n\n$seg_list = Jieba::cut(\"怜香惜玉也得要看对象啊！\");\nvar_dump($seg_list);\n\n$seg_list = Jieba::cut(\"我来到北京清华大学\", true);\nvar_dump($seg_list); #全模式\n\n$seg_list = Jieba::cut(\"我来到北京清华大学\", false);\nvar_dump($seg_list); #默认精确模式\n\n$seg_list = Jieba::cut(\"他来到了网易杭研大厦\");\nvar_dump($seg_list);\n\n$seg_list = Jieba::cutForSearch(\"小明硕士毕业于中国科学院计算所，后在日本京都大学深造\"); #搜索引擎模式\nvar_dump($seg_list);\n```\n\n输出：\n\n```php\narray(7) {\n  [0]=>\n  string(12) \"怜香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"对象\"\n  [6]=>\n  string(3) \"啊\"\n}\n\n全模式：\narray(15) {\n  [0]=>\n  string(3) \"我\"\n  [1]=>\n  string(3) \"来\"\n  [2]=>\n  string(6) \"来到\"\n  [3]=>\n  string(3) \"到\"\n  [4]=>\n  string(3) \"北\"\n  [5]=>\n  string(6) \"北京\"\n  [6]=>\n  string(3) \"京\"\n  [7]=>\n  string(3) \"清\"\n  [8]=>\n  string(6) \"清华\"\n  [9]=>\n  string(12) \"清华大学\"\n  [10]=>\n  string(3) \"华\"\n  [11]=>\n  string(6) \"华大\"\n  [12]=>\n  string(3) \"大\"\n  [13]=>\n  string(6) \"大学\"\n  [14]=>\n  string(3) \"学\"\n}\n\n默认模式：\narray(4) {\n  [0]=>\n  string(3) \"我\"\n  [1]=>\n  string(6) \"来到\"\n  [2]=>\n  string(6) \"北京\"\n  [3]=>\n  string(12) \"清华大学\"\n}\narray(6) {\n  [0]=>\n  string(3) \"他\"\n  [1]=>\n  string(6) \"来到\"\n  [2]=>\n  string(3) \"了\"\n  [3]=>\n  string(6) \"网易\"\n  [4]=>\n  string(6) \"杭研\"\n  [5]=>\n  string(6) \"大厦\"\n}\n（此处，“杭研”并未收录在词典中，但仍被 Viterbi 算法识别出来）\n\n搜索引擎模式：\narray(18) {\n  [0]=>\n  string(6) \"小明\"\n  [1]=>\n  string(6) \"硕士\"\n  [2]=>\n  string(6) \"毕业\"\n  [3]=>\n  string(3) \"于\"\n  [4]=>\n  string(6) \"中国\"\n  [5]=>\n  string(6) \"科学\"\n  [6]=>\n  string(6) \"学院\"\n  [7]=>\n  string(9) \"科学院\"\n  [8]=>\n  string(15) \"中国科学院\"\n  [9]=>\n  string(6) \"计算\"\n  [10]=>\n  string(9) \"计算所\"\n  [11]=>\n  string(3) \"后\"\n  [12]=>\n  string(3) \"在\"\n  [13]=>\n  string(6) \"日本\"\n  [14]=>\n  string(6) \"京都\"\n  [15]=>\n  string(6) \"大学\"\n  [16]=>\n  string(18) \"日本京都大学\"\n  [17]=>\n  string(6) \"深造\"\n}\n```\n\n# 功能 2)：添加自定义词典\n\n- 开发者可以指定自己自定义的词典，以便包含 jieba 词库中没有的词汇。虽然 jieba 具有新词识别能力，但自行添加新词可以确保更高的准确率。\n- 使用方法：Jieba::loadUserDict(file_name) # file_name 为自定义词典的绝对路径。\n- 词典格式与 dict.txt 相同，每行一个词；每行分为三部分，分别为词语、词频和词性，用空格隔开。\n- 示例：\n\n  云计算 5 n\n  李小福 2 n\n  创新办 3 n\n\n  之前： 李小福 \u002F 是 \u002F 创新 \u002F 办 \u002F 主任 \u002F 也 \u002F 是 \u002F 云 \u002F 计算 \u002F 方面 \u002F 的 \u002F 专家 \u002F\n  加载自定义词库后：　李小福 \u002F 是 \u002F 创新办 \u002F 主任 \u002F 也 \u002F 是 \u002F 云计算 \u002F 方面 \u002F 的 \u002F 专家 \u002F\n\n说明：“通过用户自定义词典来增强歧义纠错能力” --- https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba\u002Fissues\u002F14\n\n- 自定义词典：https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php\u002Fblob\u002Fmaster\u002Fsrc\u002Fdict\u002Fuser_dict.txt\n\n# 功能 3)：关键词提取\n\n- JiebaAnalyse::extractTags($content, $top_k)\n- content 为待提取的文本。\n- top_k 为返回 TF\u002FIDF 权重最大的关键词数量，默认值为 20。\n- 可使用 setStopWords 添加自定义停用词。\n\n代码示例（关键词提取）：\n\n```php\nini_set('memory_limit', '600M');\n\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FJieba.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FFinalseg.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FJiebaAnalyse.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nuse Fukuball\\Jieba\\JiebaAnalyse;\nJieba::init(array('mode'=>'test','dict'=>'small'));\nFinalseg::init();\nJiebaAnalyse::init();\n\n$top_k = 10;\n$content = file_get_contents(\"\u002Fpath\u002Fto\u002Fyour\u002Fdict\u002Flyric.txt\", \"r\");\n\n$tags = JiebaAnalyse::extractTags($content, $top_k);\n\nvar_dump($tags);\n\nJiebaAnalyse::setStopWords('\u002Fpath\u002Fto\u002Fyour\u002Fdict\u002Fstop_words.txt');\n\n$tags = JiebaAnalyse::extractTags($content, $top_k);\n\nvar_dump($tags);\n```\n\n输出：\n\n```php\narray(10) {\n  '没有' =>\n  double(1.0592831964595)\n  '所谓' =>\n  double(0.90795702553671)\n  '是否' =>\n  double(0.66385043195443)\n  '一般' =>\n  double(0.54607060161899)\n  '虽然' =>\n  double(0.30265234184557)\n  '来说' =>\n  double(0.30265234184557)\n  '肌迫' =>\n  double(0.30265234184557)\n  '退缩' =>\n  double(0.30265234184557)\n  '矫作' =>\n  double(0.30265234184557)\n  '怯懦' =>\n  double(0.24364586159392)\n}\narray(10) {\n  '所谓' =>\n  double(1.1569129841516)\n  '一般' =>\n  double(0.69579963754677)\n  '矫作' =>\n  double(0.38563766138387)\n  '来说' =>\n  double(0.38563766138387)\n  '退缩' =>\n  double(0.38563766138387)\n  '虽然' =>\n  double(0.38563766138387)\n  '肌迫' =>\n  double(0.38563766138387)\n  '怯懦' =>\n  double(0.31045198493419)\n  '随便说说' =>\n  double(0.19281883069194)\n  '一场' =>\n  double(0.19281883069194)\n}\n```\n\n# 功能 4)：詞性分詞\n\n- 詞性說明：[https:\u002F\u002Fgist.github.com\u002Fluw2007\u002F6016931](https:\u002F\u002Fgist.github.com\u002Fluw2007\u002F6016931)\n\n代碼示例 (Tutorial)\n\n```php\nini_set('memory_limit', '600M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FPosseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nuse Fukuball\\Jieba\\Posseg;\nJieba::init();\nFinalseg::init();\nPosseg::init();\n\n$seg_list = Posseg::cut(\"这是一个伸手不见五指的黑夜。我叫孙悟空，我爱北京，我爱Python和C++。\");\nvar_dump($seg_list);\n```\n\n## 新功能：支持 TF-IDF 分數的詞性分詞\n\n```php\n\u002F\u002F 使用 Posseg::cut() 含 TF-IDF 分數\n$scored_result = Posseg::cut(\"我愛吃蘋果\", array('with_scores' => true));\nforeach ($scored_result as $item) {\n    echo sprintf(\"%-10s [%s] TF: %.4f, TF-IDF: %.4f\\n\",\n        $item['word'], $item['tag'], $item['tf'], $item['tfidf']);\n}\n\n\u002F\u002F 使用 Jieba::cut() 含詞性標註\n$pos_result = Jieba::cut(\"我愛吃蘋果\", false, array('with_pos' => true));\nforeach ($pos_result as $item) {\n    echo sprintf(\"%-10s [%s]\\n\", $item['word'], $item['tag']);\n}\n\n\u002F\u002F 使用 Jieba::cut() 含詞性標註和 TF-IDF 分數\n$full_result = Jieba::cut(\"我愛吃蘋果\", false, array(\n    'with_pos' => true,\n    'with_scores' => true\n));\nforeach ($full_result as $item) {\n    echo sprintf(\"%-10s [%s] TF: %.4f, TF-IDF: %.4f\\n\",\n        $item['word'], $item['tag'], $item['tf'], $item['tfidf']);\n}\n```\n\nOutput:\n\n```php\narray(21) {\n  [0]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"这\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [1]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"是\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [2]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"一个\"\n    [\"tag\"]=>\n    string(1) \"m\"\n  }\n  [3]=>\n  array(2) {\n    [\"word\"]=>\n    string(18) \"伸手不见五指\"\n    [\"tag\"]=>\n    string(1) \"i\"\n  }\n  [4]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"的\"\n    [\"tag\"]=>\n    string(2) \"uj\"\n  }\n  [5]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"黑夜\"\n    [\"tag\"]=>\n    string(1) \"n\"\n  }\n  [6]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"。\"\n    [\"tag\"]=>\n    string(1) \"x\"\n  }\n  [7]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"我\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [8]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"叫\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [9]=>\n  array(2) {\n    [\"word\"]=>\n    string(9) \"孙悟空\"\n    [\"tag\"]=>\n    string(2) \"nr\"\n  }\n  [10]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"，\"\n    [\"tag\"]=>\n    string(1) \"x\"\n  }\n  [11]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"我\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [12]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"爱\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [13]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"北京\"\n    [\"tag\"]=>\n    string(2) \"ns\"\n  }\n  [14]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"，\"\n    [\"tag\"]=>\n    string(1) \"x\"\n  }\n  [15]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"我\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [16]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"爱\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [17]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"Python\"\n    [\"tag\"]=>\n    string(3) \"eng\"\n  }\n  [18]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"和\"\n    [\"tag\"]=>\n    string(1) \"c\"\n  }\n  [19]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"C++\"\n    [\"tag\"]=>\n    string(3) \"eng\"\n  }\n  [20]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"。\"\n    [\"tag\"]=>\n    string(1) \"x\"\n  }\n}\n```\n\n# 功能 5)：切換成繁體字典\n\n代碼示例 (Tutorial)\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nJieba::init(array('mode'=>'default','dict'=>'big'));\nFinalseg::init();\n\n$seg_list = Jieba::cut(\"怜香惜玉也得要看对象啊！\");\nvar_dump($seg_list);\n\n$seg_list = Jieba::cut(\"憐香惜玉也得要看對象啊！\");\nvar_dump($seg_list);\n```\n\nOutput:\n\n```php\narray(7) {\n  [0]=>\n  string(12) \"怜香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"对象\"\n  [6]=>\n  string(3) \"啊\"\n}\narray(7) {\n  [0]=>\n  string(12) \"憐香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"對象\"\n  [6]=>\n  string(3) \"啊\"\n}\n```\n\n# 功能 5)：切換成繁體字典\n\n代碼示例 (Tutorial)\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nJieba::init(array('mode'=>'default','dict'=>'big'));\nFinalseg::init();\n\n$seg_list = Jieba::cut(\"怜香惜玉也得要看对象啊！\");\nvar_dump($seg_list);\n\n$seg_list = Jieba::cut(\"憐香惜玉也得要看對象啊！\");\nvar_dump($seg_list);\n```\n\nOutput:\n\n```php\narray(7) {\n  [0]=>\n  string(12) \"怜香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"对象\"\n  [6]=>\n  string(3) \"啊\"\n}\narray(7) {\n  [0]=>\n  string(12) \"憐香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"對象\"\n  [6]=>\n  string(3) \"啊\"\n}\n```\n\n# 功能 6)：多語言 CJK 文本處理\n\njieba-php 現在支援更好的多語言 CJK（中文、日文、韓文）文本處理，包括混合語言文本的處理。\n\n代碼示例 (Tutorial)\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\n\n\u002F\u002F 初始化支援所有 CJK 語言\nJieba::init(array('cjk'=>'all'));\nFinalseg::init();\n\n\u002F\u002F 韓語文本處理\n$seg_list = Jieba::cut(\"한국어 또는 조선말은 제주특별자치도를 제외한 한반도 및 그 부속 도서와 한민족 거주 지역에서 쓰이는 언어로\");\nvar_dump($seg_list);\n\n\u002F\u002F 日語文本處理\n$seg_list = Jieba::cut(\"日本語は、主に日本国内や日本人同士の間で使われている言語である。\");\nvar_dump($seg_list);\n\n\u002F\u002F 混合語言文本處理\n$mixed_text = \"我喜欢这个世界。私は日本に住んでいます。안녕하세요 세계입니다.\";\n$seg_list = Jieba::cut($mixed_text);\nvar_dump($seg_list);\n\n\u002F\u002F 複雜混合文本處理\n$complex_mixed = \"今天weather很好，私たちは공원에 갔습니다。\";\n$seg_list = Jieba::cut($complex_mixed);\nvar_dump($seg_list);\n\n\u002F\u002F 加載日語詞庫可以對日語進行簡單的分詞\nJieba::loadUserDict(\"\u002Fpath\u002Fto\u002Fyour\u002Fjapanese\u002Fdict.txt\");\n$seg_list = Jieba::cut(\"日本語は、主に日本国内や日本人同士の間で使われている言語である。\");\nvar_dump($seg_list);\n```\n\n## 示範腳本\n\n- 基本多語言處理：`php src\u002Fcmd\u002Fdemo_mixed_cjk.php`\n- TF-IDF 和詞性標註整合：`php src\u002Fcmd\u002Fdemo_tf_idf_pos.php`\n\n輸出：\n\n```php\narray(15) {\n  [0]=>\n  string(9) \"韓語\"\n  [1]=>\n  string(6) \"或\"\n  [2]=>\n  string(12) \"朝鮮語是\"\n  [3]=>\n  string(24) \"濟州特別自治道的\"\n  [4]=>\n  string(9) \"除外的\"\n  [5]=>\n  string(9) \"韓半島\"\n  [6]=>\n  string(3) \"以及\"\n  [7]=>\n  string(3) \"其\"\n  [8]=>\n  string(6) \"附屬\"\n  [9]=>\n  string(9) \"島嶼與\"\n  [10]=>\n  string(9) \"韓民族\"\n  [11]=>\n  string(6) \"居住\"\n  [12]=>\n  string(12) \"地區中\"\n  [13]=>\n  string(9) \"使用的\"\n  [14]=>\n  string(9) \"語言\"\n}\narray(21) {\n  [0]=>\n  string(6) \"日本\"\n  [1]=>\n  string(3) \"語\"\n  [2]=>\n  string(3) \"是\"\n  [3]=>\n  string(3) \"主要\"\n  [4]=>\n  string(3) \"在\"\n  [5]=>\n  string(6) \"日本\"\n  [6]=>\n  string(6) \"國內\"\n  [7]=>\n  string(3) \"和\"\n  [8]=>\n  string(6) \"日本人\"\n  [9]=>\n  string(3) \"之間\"\n  [10]=>\n  string(3) \"使用\"\n  [11]=>\n  string(3) \"著\"\n  [12]=>\n  string(6) \"的\"\n  [13]=>\n  string(6) \"語言\"\n}\narray(17) {\n  [0]=>\n  string(9) \"日語是\"\n  [1]=>\n  string(3) \"主要\"\n  [2]=>\n  string(6) \"在\"\n  [3]=>\n  string(9) \"日本國\"\n  [4]=>\n  string(3) \"內\"\n  [5]=>\n  string(3) \"和\"\n  [6]=>\n  string(9) \"日本人\"\n  [7]=>\n  string(6) \"之間\"\n  [8]=>\n  string(3) \"進行\"\n  [9]=>\n  string(3) \"交流\"\n  [10]=>\n  string(3) \"時\"\n  [11]=>\n  string(3) \"被\"\n  [12]=>\n  string(6) \"使用\"\n  [13]=>\n  string(6) \"的\"\n  [14]=>\n  string(6) \"語言\"\n  [15]=>\n  string(6) \"之一\"\n  [16]=>\n  string(9) \"也是\"\n}\n```\n\n# 功能 7)：返回詞語在原文的起止位置\n\n代碼示例 (教程)\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nJieba::init(array('mode'=>'test','dict'=>'big'));\nFinalseg::init();\n\n$seg_list = Jieba::tokenize(\"永和服飾品有限公司\");\nvar_dump($seg_list);\n```\n\n輸出：\n\n```php\narray(4) {\n  [0] =>\n  array(3) {\n    'word' =>\n    string(6) \"永和\"\n    'start' =>\n    int(0)\n    'end' =>\n    int(2)\n  }\n  [1] =>\n  array(3) {\n    'word' =>\n    string(6) \"服裝\"\n    'start' =>\n    int(2)\n    'end' =>\n    int(4)\n  }\n  [2] =>\n  array(3) {\n    'word' =>\n    string(6) \"飾品\"\n    'start' =>\n    int(4)\n    'end' =>\n    int(6)\n  }\n  [3] =>\n  array(3) {\n    'word' =>\n    string(12) \"有限公司\"\n    'start' =>\n    int(6)\n    'end' =>\n    int(10)\n  }\n}\n```\n\n# 其他詞典\n\n1. 佔用內容較小的詞典\n   https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php\u002Fblob\u002Fmaster\u002Fsrc\u002Fdict\u002Fdict.small.txt\n\n2. 支持繁體斷詞的詞典\n   https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php\u002Fblob\u002Fmaster\u002Fsrc\u002Fdict\u002Fdict.big.txt\n\n# 常見問題\n\n1. 模型的數據是如何生成的？ https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba\u002Fissues\u002F7\n2. 這個庫的授權是？ https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba\u002Fissues\u002F2\n\n# jieba-php 英文文件\n\n# 在線示範\n\n- 示範網站倉庫：[https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php.fukuball.com](https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php.fukuball.com)\n\n# 特色\n\n- 支持三種分詞模式：\n- 1. 精確模式，試圖將句子切分成最精確的分詞結果，適合文本分析；\n- 2. 全模式，將句子中的所有可能單詞都切分出來；\n- 3. 搜尋引擎模式，基於精確模式，進一步將長詞拆分成若干短詞，以提高召回率；\n\n- 支持繁體中文分詞\n- 支持自定義詞典\n- 支持多語言CJK文本處理（中文、日文、韓文）\n- 支持TF-IDF整合與詞性標註\n- 支持記憶體管理和緩存優化\n- 支持自定義詞性標籤\n\n# 使用方法\n\n- 安裝：使用Composer安裝jieba-php，然後引入自動載入檔案即可使用。\n\n# 算法\n\n- 基於Trie樹結構實現高效詞圖掃描；使用漢字構成的句子可形成有向無環圖（DAG）。\n- 採用記憶搜尋計算最大概率路徑，以根據詞頻組合識別出最佳切分點。\n- 對於未知詞彙，則使用基於字符位置的HMM模型，並採用Viterbi算法。\n- BEMS的含義 [https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba\u002Fissues\u002F7](https:\u002F\u002Fgithub.com\u002Ffxsjy\u002Fjieba\u002Fissues\u002F7)。\n\n# 接口\n\n- `cut`方法接受兩個參數：1) 第一個參數為待分詞的字符串；2) 第二個參數`cut_all`用於控制分詞模式。\n- 待分詞的字符串可以使用UTF-8編碼。\n- `cutForSearch`只接受一個參數：需要分詞的字符串，它會將句子切分成短詞。\n- `cut`和`cutForSearch`都會返回分詞後的數組。\n\n# 函數 1) 分詞\n\n示例（教程）\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FJieba.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nJieba::init();\nFinalseg::init();\n\n$seg_list = Jieba::cut(\"憐香惜玉也得要看對象啊！\");\nvar_dump($seg_list);\n\nseg_list = jieba.cut(\"我來到北京清華大學\", true)\nvar_dump($seg_list); #全模式\n\nseg_list = jieba.cut(\"我來到北京清華大學\", false)\nvar_dump($seg_list); #默認精確模式\n\nseg_list = jieba.cut(\"他來到了網易杭研大廈\")\nvar_dump($seg_list);\n\nseg_list = jieba.cut_for_search(\"小明碩士畢業於中國科學院計算所，後在日本京都大學深造\") #搜索引擎模式\nvar_dump($seg_list);\n```\n\n輸出：\n\n```php\narray(7) {\n  [0]=>\n  string(12) \"憐香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"對象\"\n  [6]=>\n  string(3) \"啊\"\n}\n\n全模式：\narray(15) {\n  [0]=>\n  string(3) \"我\"\n  [1]=>\n  string(3) \"來\"\n  [2]=>\n  string(6) \"來到\"\n  [3]=>\n  string(3) \"到\"\n  [4]=>\n  string(3) \"北\"\n  [5]=>\n  string(6) \"北京\"\n  [6]=>\n  string(3) \"京\"\n  [7]=>\n  string(3) \"清\"\n  [8]=>\n  string(6) \"清華\"\n  [9]=>\n  string(12) \"清華大學\"\n  [10]=>\n  string(3) \"華\"\n  [11]=>\n  string(6) \"華大\"\n  [12]=>\n  string(3) \"大\"\n  [13]=>\n  string(6) \"大學\"\n  [14]=>\n  string(3) \"學\"\n}\n\n預設精確模式：\narray(4) {\n  [0]=>\n  string(3) \"我\"\n  [1]=>\n  string(6) \"來到\"\n  [2]=>\n  string(6) \"北京\"\n  [3]=>\n  string(12) \"清華大學\"\n}\narray(6) {\n  [0]=>\n  string(3) \"他\"\n  [1]=>\n  string(6) \"來到\"\n  [2]=>\n  string(3) \"了\"\n  [3]=>\n  string(6) \"網易\"\n  [4]=>\n  string(6) \"杭研\"\n  [5]=>\n  string(6) \"大廈\"\n}\n（此處，“杭研“並沒有在詞典中，但是也被Viterbi算法識別出來了）\n\n搜索引擎模式：\narray(18) {\n  [0]=>\n  string(6) \"小明\"\n  [1]=>\n  string(6) \"碩士\"\n  [2]=>\n  string(6) \"畢業\"\n  [3]=>\n  string(3) \"於\"\n  [4]=>\n  string(6) \"中國\"\n  [5]=>\n  string(6) \"科學\"\n  [6]=>\n  string(6) \"學院\"\n  [7]=>\n  string(9) \"科學院\"\n  [8]=>\n  string(15) \"中國科學院\"\n  [9]=>\n  string(6) \"計算\"\n  [10]=>\n  string(9) \"計算所\"\n  [11]=>\n  string(3) \"後\"\n  [12]=>\n  string(3) \"在\"\n  [13]=>\n  string(6) \"日本\"\n  [14]=>\n  string(6) \"京都\"\n  [15]=>\n  string(6) \"大學\"\n  [16]=>\n  string(18) \"日本京都大學\"\n  [17]=>\n  string(6) \"深造\"\n}\n```\n\n# 功能 2) 添加自定义词典\n\n- 开发者可以指定自己的自定义词典，将其加入到 jieba 的同义词库中。jieba 具备识别新词的能力，但添加自定义新词可以确保更高的分词准确率。\n- 使用方法：`Jieba::loadUserDict(file_name)` # file_name 是自定义词典的路径。\n- 词典格式与 `dict.txt` 相同：每行一个词；每行分为两部分，第一部分是词本身，第二部分是词频，中间用空格分隔。\n- 示例：\n\n  云计算 5\n  李小福 2\n  创新办 3\n\n  之前： 李小福 \u002F 是 \u002F 创新 \u002F 办 \u002F 主任 \u002F 也 \u002F 是 \u002F 云 \u002F 计算 \u002F 方面 \u002F 的 \u002F 专家 \u002F\n  加载自定义词库后：　李小福 \u002F 是 \u002F 创新办 \u002F 主任 \u002F 也 \u002F 是 \u002F 云计算 \u002F 方面 \u002F 的 \u002F 专家 \u002F\n\n# 功能 3) 关键词提取\n\n- JiebaAnalyse::extractTags($content, $top_k)\n- content：待提取文本\n- top_k：返回前若干个 TF\u002FIDF 权重最大的关键词，默认值为 20\n\n示例（关键词提取）\n\n```php\nini_set('memory_limit', '600M');\n\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FJieba.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FFinalseg.php\";\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fclass\u002FJiebaAnalyse.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nuse Fukuball\\Jieba\\JiebaAnalyse;\nJieba::init(array('mode'=>'test','dict'=>'small'));\nFinalseg::init();\nJiebaAnalyse::init();\n\n$top_k = 10;\n$content = file_get_contents(\"\u002Fpath\u002Fto\u002Fyour\u002Fdict\u002Flyric.txt\", \"r\");\n\n$tags = JiebaAnalyse::extractTags($content, $top_k);\n\nvar_dump($tags);\n```\n\n输出：\n\n```php\narray(10) {\n  [\"是否\"]=>\n  float(1.2196321889395)\n  [\"一般\"]=>\n  float(1.0032459890209)\n  [\"肌迫\"]=>\n  float(0.64654314660465)\n  [\"怯懦\"]=>\n  float(0.44762844339349)\n  [\"藉口\"]=>\n  float(0.32327157330233)\n  [\"逼不得已\"]=>\n  float(0.32327157330233)\n  [\"不安全感\"]=>\n  float(0.26548304656279)\n  [\"同感\"]=>\n  float(0.23929673812326)\n  [\"有把握\"]=>\n  float(0.21043366018744)\n  [\"空洞\"]=>\n  float(0.20598261709442)\n}\n\n```\n\n# 功能 4) 分词与词性标注\n\n- 词性标注含义：[https:\u002F\u002Fgist.github.com\u002Fluw2007\u002F6016931](https:\u002F\u002Fgist.github.com\u002Fluw2007\u002F6016931)\n\n示例（词性标注）\n\n```php\nini_set('memory_limit', '600M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FPosseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nuse Fukuball\\Jieba\\Posseg;\nJieba::init();\nFinalseg::init();\nPosseg::init();\n\n$seg_list = Posseg::cut(\"这是一个伸手不见五指的黑夜。我叫孙悟空，我爱北京，我爱Python和C++。\");\nvar_dump($seg_list);\n```\n\n输出：\n\n```php\narray(21) {\n  [0]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"这\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [1]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"是\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [2]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"一个\"\n    [\"tag\"]=>\n    string(1) \"m\"\n  }\n  [3]=>\n  array(2) {\n    [\"word\"]=>\n    string(18) \"伸手不见五指\"\n    [\"tag\"]=>\n    string(1) \"i\"\n  }\n  [4]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"的\"\n    [\"tag\"]=>\n    string(2) \"uj\"\n  }\n  [5]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"黑夜\"\n    [\"tag\"]=>\n    string(1) \"n\"\n  }\n  [6]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"。\"\n    [\"tag\"]=>\n    string(1) \"w\"\n  }\n  [7]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"我\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [8]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"叫\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [9]=>\n  array(2) {\n    [\"word\"]=>\n    string(9) \"孙悟空\"\n    [\"tag\"]=>\n    string(2) \"nr\"\n  }\n  [10]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"，\"\n    [\"tag\"]=>\n    string(1) \"w\"\n  }\n  [11]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"我\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [12]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"爱\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [13]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"北京\"\n    [\"tag\"]=>\n    string(2) \"ns\"\n  }\n  [14]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"，\"\n    [\"tag\"]=>\n    string(1) \"w\"\n  }\n  [15]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"我\"\n    [\"tag\"]=>\n    string(1) \"r\"\n  }\n  [16]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"爱\"\n    [\"tag\"]=>\n    string(1) \"v\"\n  }\n  [17]=>\n  array(2) {\n    [\"word\"]=>\n    string(6) \"Python\"\n    [\"tag\"]=>\n    string(3) \"eng\"\n  }\n  [18]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"和\"\n    [\"tag\"]=>\n    string(1) \"c\"\n  }\n  [19]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"C++\"\n    [\"tag\"]=>\n    string(3) \"eng\"\n  }\n  [20]=>\n  array(2) {\n    [\"word\"]=>\n    string(3) \"。\"\n    [\"tag\"]=>\n    string(1) \"w\"\n  }\n}\n```\n\n# 功能 5)：使用繁体中文\n\n示例（教程）\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nJieba::init(array('mode'=>'default','dict'=>'big'));\nFinalseg::init();\n\n$seg_list = Jieba::cut(\"怜香惜玉也得要看对象啊！\");\nvar_dump($seg_list);\n\n$seg_list = Jieba::cut(\"憐香惜玉也得要看對象啊！\");\nvar_dump($seg_list);\n```\n\n输出：\n\n```php\narray(7) {\n  [0]=>\n  string(12) \"怜香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"对象\"\n  [6]=>\n  string(3) \"啊\"\n}\narray(7) {\n  [0]=>\n  string(12) \"憐香惜玉\"\n  [1]=>\n  string(3) \"也\"\n  [2]=>\n  string(3) \"得\"\n  [3]=>\n  string(3) \"要\"\n  [4]=>\n  string(3) \"看\"\n  [5]=>\n  string(6) \"對象\"\n  [6]=>\n  string(3) \"啊\"\n}\n```\n\n# 功能 6)：保留日语或韩语原文\n\n示例（教程）\n\n```php\nini_set('memory_limit', '1024M');\n\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FMultiArray.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fvendor\u002Fmulti-array\u002FFactory\u002FMultiArrayFactory.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FJieba.php\";\nrequire_once dirname(dirname(__FILE__)).\"\u002Fclass\u002FFinalseg.php\";\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\nJieba::init(array('cjk'=>'all'));\nFinalseg::init();\n\n$seg_list = Jieba::cut(\"한국어 또는 조선말은 제주특별자치도를 제외한 한반도 및 그 부속 도서와 한민족 거주 지역에서 쓰이는 언어로\");\nvar_dump($seg_list);\n\n$seg_list = Jieba::cut(\"日本語は、主に日本国内や日本人同士の間で使われている言語である。\");\nvar_dump($seg_list);\n\n\u002F\u002F 加载自定义日语词典可以进行简单的分词\nJieba::loadUserDict(\"\u002Fpath\u002Fto\u002Fyour\u002Fjapanese\u002Fdict.txt\");\n$seg_list = Jieba::cut(\"日本語は、主に日本国内や日本人同士の間で使われている言語である。\");\nvar_dump($seg_list);\n```\n\n输出：\n\n```php\narray(15) {\n  [0]=>\n  string(9) \"한국어\"\n  [1]=>\n  string(6) \"또는\"\n  [2]=>\n  string(12) \"조선말은\"\n  [3]=>\n  string(24) \"제주특별자치도를\"\n  [4]=>\n  string(9) \"제외한\"\n  [5]=>\n  string(9) \"한반도\"\n  [6]=>\n  string(3) \"및\"\n  [7]=>\n  string(3) \"그\"\n  [8]=>\n  string(6) \"부속\"\n  [9]=>\n  string(9) \"도서와\"\n  [10]=>\n  string(9) \"한민족\"\n  [11]=>\n  string(6) \"거주\"\n  [12]=>\n  string(12) \"지역에서\"\n  [13]=>\n  string(9) \"쓰이는\"\n  [14]=>\n  string(9) \"언어로\"\n}\narray(21) {\n  [0]=>\n  string(6) \"日本\"\n  [1]=>\n  string(3) \"語\"\n  [2]=>\n  string(3) \"は\"\n  [3]=>\n  string(3) \"主\"\n  [4]=>\n  string(3) \"に\"\n  [5]=>\n  string(6) \"日本\"\n  [6]=>\n  string(6) \"国内\"\n  [7]=>\n  string(3) \"や\"\n  [8]=>\n  string(6) \"日本\"\n  [9]=>\n  string(3) \"人\"\n  [10]=>\n  string(6) \"同士\"\n  [11]=>\n  string(3) \"の\"\n  [12]=>\n  string(3) \"間\"\n  [13]=>\n  string(3) \"で\"\n  [14]=>\n  string(3) \"使\"\n  [15]=>\n  string(3) \"わ\"\n  [16]=>\n  string(6) \"れて\"\n  [17]=>\n  string(6) \"いる\"\n  [18]=>\n  string(6) \"言語\"\n  [19]=>\n  string(3) \"で\"\n  [20]=>\n  string(6) \"ある\"\n}\narray(17) {\n  [0]=>\n  string(9) \"日本語\"\n  [1]=>\n  string(3) \"は\"\n  [2]=>\n  string(6) \"主に\"\n  [3]=>\n  string(9) \"日本国\"\n  [4]=>\n  string(3) \"内\"\n  [5]=>\n  string(3) \"や\"\n  [6]=>\n  string(9) \"日本人\"\n  [7]=>\n  string(6) \"同士\"\n  [8]=>\n  string(3) \"の\"\n  [9]=>\n  string(3) \"間\"\n  [10]=>\n  string(3) \"で\"\n  [11]=>\n  string(3) \"使\"\n  [12]=>\n  string(3) \"わ\"\n  [13]=>\n  string(6) \"れて\"\n  [14]=>\n  string(6) \"いる\"\n  [15]=>\n  string(6) \"言語\"\n  [16]=>\n  string(9) \"である\"\n}\n```\n\n# 詞性说明\n\n```\na 形容词 (取英语形容词 adjective 的第 1 个字母。)\n  ad 副形词 (直接作状语的形容词，形容词代码 a 和副词代码 d 并在一起。)\n  ag 形容词性语素 (形容词性语素，形容词代码为 a，语素代码 ｇ 前面置以 a。)\n  an 名形词 (具有名词功能的形容词，形容词代码 a 和名词代码 n 并在一起。)\nb 区别词 (取汉字「别」的声母。)\nc 连词 (取英语连词 conjunction 的第 1 个字母。)\nd 副词 (取 adverb 的第 2 个字母，因其第 1 个字母已用于形容词。)\n  df 副词*\n  dg 副语素 (副词性语素，副词代码为 d，语素代码 ｇ 前面置以 d。)\ne 叹词 (取英语叹词 exclamation 的第 1 个字母。)\neng 外语\nf 方位词 (取汉字「方」的声母。)\ng 语素 (绝大多数语素都能作为合成词的「词根」，取汉字「根」的声母。)\nh 前接成分 (取英语 head 的第 1 个字母。)\ni 成语 (取英语成语 idiom 的第 1 个字母。)\nj 简称略语 (取汉字「简」的声母。)\nk 后接成分\nl 习用语 (习用语尚未成为成语，有点「临时性」，取「临」的声母。)\nm 数词 (取英语 numeral 的第 3 个字母，n，u 已有他用。)\n  mg 数语素\n  mq 数词*\nn 名词 (取英语名词 noun 的第 1 个字母。)\n  ng 名语素 (名词性语素，名词代码为 n，语素代码 ｇ 前面置以 n。)\n  nr 人名 (名词代码n和「人(ren)」的声母并在一起。)\n  nrfg 名词*\n  nrt 名词*\n  ns 地名 (名词代码 n 和处所词代码 s 并在一起。)\n  nt 机构团体 (「团」的声母为 t，名词代码 n 和 t 并在一起。)\n  nz 其他专名 (「专」的声母的第 1 个字母为 z，名词代码 n 和 z 并在一起。)\no 拟声词 (取英语拟声词 onomatopoeia 的第 1 个字母。)\np 介词 (取英语介词 prepositional 的第 1 个字母。)\nq 量词 (取英语 quantity 的第 1 个字母。)\nr 代词 (取英语代词 pronoun的 第 2 个字母，因 p 已用于介词。)\n  rg 代词语素\n  rr 代词*\n  rz 代词*\ns 处所词 (取英语 space 的第 1 个字母。)\nt 时间词 (取英语 time 的第 1 个字母。)\n  tg 时语素 (时间词性语素，时间词代码为 t，在语素的代码 g 前面置以 t。)\nu 助词 (取英语助词 auxiliary 的第 2 个字母，因 a 已用于形容词。)\n  ud 助词*\n  ug 助词*\n  uj 助词*\n  ul 助词*\n  uv 助词*\n  uz 助词*\nv 动词 (取英语动词 verb 的第一个字母。)\n  vd 副动词 (直接作状语的动词，动词和副词的代码并在一起。)\n  vg 动语素\n  vi 动词*\n  vn 名动词 (指具有名词功能的动词，动词和名词的代码并在一起。)\n  vq 动词*\nw 标点符号\nx 非语素字 (非语素字只是一个符号，字母 x 通常用于代表未知数、符号。)\ny 语气词 (取汉字「语」的声母。)\nz 状态词 (取汉字「状」的声母的前一个字母。)\n  zg 状态词*\n```\n\n# 功能 8)：内存管理\n\n为了处理大量文本时的内存使用问题，jieba-php 提供了新的 JiebaMemory 类来统一管理所有类别的内存使用。\n\n## JiebaMemory - 统一内存管理\n\n```php\nini_set('memory_limit', '1024M');\n\nuse Fukuball\\Jieba\\JiebaMemory;\n\n\u002F\u002F 初始化所有类别\nJiebaMemory::initAll();\n\n\u002F\u002F 检查初始化状态\n$status = JiebaMemory::getInitializationStatus();\nvar_dump($status);\n\n\u002F\u002F 获取内存使用统计\n$stats = JiebaMemory::getMemoryStats();\necho \"当前内存使用：\" . $stats['current_memory_usage_formatted'] . \"\\n\";\necho \"峰值内存使用：\" . $stats['peak_memory_usage_formatted'] . \"\\n\";\n\n\u002F\u002F 清除所有缓存但保持类别初始化\nJiebaMemory::clearAllCaches();\n\n\u002F\u002F 销毁所有类别释放内存\nJiebaMemory::destroyAll();\n```\n\n## 详细缓存统计\n\n```php\n\u002F\u002F 获取所有类别的缓存统计\n$cacheStats = JiebaMemory::getAllCacheStats();\necho \"Jieba DAG 缓存大小：\" . $cacheStats['jieba']['dag_cache_size'] . \"\\n\";\necho \"Posseg 词性标注数量：\" . $cacheStats['posseg']['word_tag_size'] . \"\\n\";\necho \"JiebaAnalyse IDF 频率数量：\" . $cacheStats['jieba_analyse']['idf_freq_size'] . \"\\n\";\n```\n\n## 缓存管理（原有功能）\n\n当处理大量文本时，jieba-php 使用内部缓存来提高性能。以下功能可用于管理缓存内存使用：\n\n### clearCache()\n\n清除所有内部缓存以释放内存。处理多个大型文本文件时很有用。\n\n```php\nini_set('memory_limit', '1024M');\n\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\n\nJieba::init();\nFinalseg::init();\n\n\u002F\u002F 处理第一个文件\n$text1 = file_get_contents('large_file1.txt');\n$seg_list1 = Jieba::cut($text1);\n\n\u002F\u002F 处理下一个文件前清除缓存\nJieba::clearCache();\n\n\u002F\u002F 处理第二个文件\n$text2 = file_get_contents('large_file2.txt');\n$seg_list2 = Jieba::cut($text2);\n```\n\n### getCacheStats()\n\n返回当前缓存使用情况以便监控。\n\n```php\n$stats = Jieba::getCacheStats();\necho \"DAG 缓存大小：\" . $stats['dag_cache_size'] . \"\\n\";\necho \"Trie 缓存大小：\" . $stats['trie_cache_size'] . \"\\n\";\necho \"内存使用：\" . round($stats['total_memory_usage'] \u002F 1024 \u002F 1024, 2) . \"M\\n\";\necho \"峰值内存：\" . round($stats['peak_memory_usage'] \u002F 1024 \u002F 1024, 2) . \"M\\n\";\n```\n\n### clearCacheIfNeeded()\n\n如果缓存超过指定大小限制则自动清除。\n\n```php\n\u002F\u002F 如果 DAG 缓存超过 50,000 条目或 trie 缓存超过 50,000 条目则清除缓存\n$cleared = Jieba::clearCacheIfNeeded(50000, 50000);\nif ($cleared) {\n    echo \"由于大小限制，缓存已被清除\\n\";\n}\n\n\u002F\u002F 自定义限制\n$cleared = Jieba::clearCacheIfNeeded(10000, 10000);\n```\n\n## 内存使用提示\n\n- 对于处理多个文件的 CLI 应用程序，在每个文件后调用 `clearCache()` 或使用 `JiebaMemory::clearAllCaches()`\n- 使用 `getCacheStats()` 或 `JiebaMemory::getMemoryStats()` 监控内存使用情况\n- 考虑使用 `clearCacheIfNeeded()` 进行自动缓存管理\n- 注意清除缓存会重置性能优化，直到重新建立缓存\n- 使用 `JiebaMemory::destroyAll()` 完全释放内存，但需要重新初始化才能再次使用\n\n# 捐赠\n\n如果您觉得 fuku-ml 很有用，请考虑捐赠。谢谢！\n\n- bitcoin: 1BbihQU3CzSdyLSP9bvQq7Pi1z1jTdAaq9\n- eth: 0x92DA3F837bf2F79D422bb8CEAC632208F94cdE33\n\n# 许可证\n\nMIT 许可证（MIT）\n\n版权所有 © 2015 fukuball\n\n特此授予任何人免费获取本软件及与其相关的文档文件（“软件”）副本的权利，以便对软件进行处理，包括但不限于使用、复制、修改、合并、发布、分发、再许可和出售软件副本的权利，以及允许向任何获得软件的人提供软件以供其使用的权利，但须遵守以下条件：\n\n上述版权声明和本许可声明应包含在软件的所有副本或重要部分中。\n\n“软件”按“原样”提供，不提供任何形式的明示或暗示担保，包括但不限于适销性、特定用途适用性和非侵权性担保。在任何情况下，作者或版权所有者均不对因本软件或其使用而引起的任何索赔、损害或其他责任承担任何责任，无论该等责任是基于合同、侵权行为或其他原因产生的，且与本软件或其使用有关。","# jieba-php 快速上手指南\n\njieba-php 是著名的中文分词组件 \"结巴\" 的 PHP 版本，支持精确模式、全模式、搜索引擎模式，并具备繁体中文、自定义词典、关键词提取及词性标注等功能。\n\n## 环境准备\n\n- **系统要求**：支持 PHP 5.4+ 或 PHP 7+\u002F8+ 的操作系统（Linux, macOS, Windows）。\n- **前置依赖**：\n  - 已安装 **Composer**（PHP 包管理工具）。\n  - 确保 PHP 内存限制足够（处理大文本时建议调整 `memory_limit`）。\n\n## 安装步骤\n\n推荐使用 Composer 进行自动安装，这是最便捷的方式。\n\n### 1. 使用 Composer 安装\n\n在项目根目录下执行以下命令：\n\n```bash\ncomposer require fukuball\u002Fjieba-php\n```\n\n> **国内加速提示**：如果下载速度较慢，可配置阿里云或腾讯云镜像源：\n> ```bash\n> composer config -g repo.packagist composer https:\u002F\u002Fmirrors.aliyun.com\u002Fcomposer\u002F\n> composer require fukuball\u002Fjieba-php\n> ```\n\n### 2. 引入依赖\n\n在 PHP 代码中引入自动加载文件：\n\n```php\nrequire_once \"\u002Fpath\u002Fto\u002Fyour\u002Fvendor\u002Fautoload.php\";\n```\n\n## 基本使用\n\n以下是三种最常用的分词模式示例。使用前需初始化组件。\n\n### 1. 初始化组件\n\n```php\nuse Fukuball\\Jieba\\Jieba;\nuse Fukuball\\Jieba\\Finalseg;\n\n\u002F\u002F 可选：增加内存限制以防大文本溢出\nini_set('memory_limit', '1024M');\n\n\u002F\u002F 初始化主词典和隐马尔可夫模型\nJieba::init();\nFinalseg::init();\n```\n\n### 2. 精确模式（默认）\n\n试图将句子最精确地切开，适合大多数文本分析场景。\n\n```php\n$seg_list = Jieba::cut(\"我来到北京清华大学\");\n\u002F\u002F 输出：[\"我\", \"来到\", \"北京\", \"清华大学\"]\nforeach ($seg_list as $word) {\n    echo $word . \"\\n\";\n}\n```\n\n### 3. 全模式\n\n把句子中所有的可以成词的词语都扫描出来，速度非常快，但不能解决歧义。\n\n```php\n\u002F\u002F 第二个参数设为 true 开启全模式\n$seg_list = Jieba::cut(\"我来到北京清华大学\", true);\n\u002F\u002F 输出包含：[\"我\", \"来\", \"来到\", \"到\", \"北\", \"北京\", \"京\", \"清\", \"清华\", \"清华大学\", ...]\nforeach ($seg_list as $word) {\n    echo $word . \"\\n\";\n}\n```\n\n### 4. 搜索引擎模式\n\n在精确模式基础上，对长词再次切分，提高召回率，适合用于搜索引擎构建倒排索引。\n\n```php\nuse Fukuball\\Jieba\\Jieba;\n\n$seg_list = Jieba::cutForSearch(\"小明硕士毕业于中国科学院计算所\");\n\u002F\u002F 输出会包含细粒度切分，如：[\"小明\", \"硕士\", \"毕业\", \"于\", \"中国\", \"科学\", \"学院\", \"科学院\", \"中国科学院\", ...]\nforeach ($seg_list as $word) {\n    echo $word . \"\\n\";\n}\n```\n\n### 进阶：繁体中文支持\n\n若需处理繁体中文，初始化时指定 `big` 字典模式：\n\n```php\nJieba::init(array('mode'=>'default','dict'=>'big'));\nFinalseg::init();\n\n$seg_list = Jieba::cut(\"憐香惜玉也得要看對象啊！\");\n```","某电商平台的 PHP 后端团队需要构建一个商品评论情感分析系统，以实时监测用户反馈并优化搜索推荐。\n\n### 没有 jieba-php 时\n- **分词精度极低**：只能简单按字符或空格切割，导致“清华大学”被拆成“清”、“华”、“大”、“学”，完全丢失语义，无法识别具体实体。\n- **新词识别困难**：面对“杭研大厦”等未登录的新品牌或专有名词，系统直接将其拆解为单字，导致情感分析模型误判语意。\n- **搜索召回率低**：用户搜索“笔记本电脑”时，因评论中的“笔记本”和“电脑”未被正确关联，导致大量相关商品无法被检索到。\n- **开发成本高昂**：团队需自行编写复杂的正则规则或调用昂贵的第三方 API 来处理中文断词，维护难度大且响应速度慢。\n\n### 使用 jieba-php 后\n- **语义理解精准**：利用精确模式自动将“怜香惜玉”、“清华大学”等成语和专名完整切分，大幅提升了后续情感分析的准确度。\n- **智能识别新词**：基于 HMM 模型和 Viterbi 算法，无需更新字典即可自动识别“杭研大厦”等未登录词，确保新兴品牌不被遗漏。\n- **搜索体验升级**：通过搜索引擎模式对长词进行细粒度二次切分，显著提高了倒排索引的覆盖率，让用户能更轻松地找到目标商品。\n- **部署高效轻量**：直接在 PHP 项目中通过 Composer 集成，支持自定义词典和繁体中文，无需依赖外部服务，降低了运营成本并提升了响应速度。\n\njieba-php 让 PHP 开发者能以低成本获得工业级的中文分词能力，彻底解决了非 Python 生态下中文文本处理的核心痛点。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Ffukuball_jieba-php_15f77061.png","fukuball","Fukuball Lin","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Ffukuball_c03acb8a.jpg","我是林志傑，網路上常用的名字是 Fukuball。我使用 PHP 及 Python，最近對機器學習感到興趣。 \u002F 我也是一個快樂的吉他手～ www.fukuball.com","iNDIEVOX Inc.","Taipei, Taiwan","fukuball@gmail.com",null,"http:\u002F\u002Fwww.fukuball.com","https:\u002F\u002Fgithub.com\u002Ffukuball",[83],{"name":84,"color":85,"percentage":86},"PHP","#4F5D95",100,1378,258,"2026-04-07T08:52:09","MIT",1,"未说明 (适用于任何支持 PHP 的操作系统)","不需要","建议 600MB - 1024MB (根据代码示例中的 memory_limit 设置)",{"notes":96,"python":97,"dependencies":98},"这是一个纯 PHP 实现的中文分词库，不依赖 Python 或 GPU。使用时需通过 ini_set 设置足够的内存限制（示例中为 600M 或 1024M），以加载字典文件。支持繁体中文（需切换字典模式为 'big'）。","不适用 (这是一个 PHP 库)",[84,99,100],"Composer (推荐用于自动安装)","multi-array\u002Fmulti-array (内部依赖)",[14,35,15],[103,104,105,106],"nlp","natural-language-processing","chinese-text-segmentation","machine-learning","2026-03-27T02:49:30.150509","2026-04-10T10:34:33.197261",[110,115,120,125,130,135],{"id":111,"question_zh":112,"answer_zh":113,"source_url":114},27516,"如何为自定义词典中的词语设置或调整权重（IDF 值）？","默认加载自定义词典不会自动覆盖 IDF 权重。若需批量调整权重，建议继承 JiebaAnalyse 类并添加自定义方法载入 IDF 文件。示例代码如下：\n\nclass MyJiebaAnalyse extends JiebaAnalyse {\n    public static function setIdf($idf_path) {\n        $content = fopen($idf_path, \"r\");\n        while (($line = fgets($content)) !== false) {\n            $explode_line = explode(\" \", trim($line));\n            $word = $explode_line[0];\n            $freq = (float) $explode_line[1];\n            self::$idf_freq[$word] = $freq;\n        }\n        fclose($content);\n        \u002F\u002F 重新计算最大和中位 IDF 值\n        $keys = array_keys(self::$idf_freq);\n        self::$max_idf = max(self::$idf_freq);\n        self::$median_idf = self::$idf_freq[$keys[count($keys)\u002F2]];\n    }\n}\n\n使用时调用 MyJiebaAnalyse::setIdf('path\u002Fto\u002Fyour\u002Fidf.txt'); 即可合并自定义权重。","https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php\u002Fissues\u002F51",{"id":116,"question_zh":117,"answer_zh":118,"source_url":119},27517,"在 CLI 模式下处理大量文件时内存无限增长怎么办？","这是由于新词发现机制导致 Jieba::$dag_cache 和 Jieba::$trie->cache 不断累积所致。解决方案是在每处理完一个文件后手动清空缓存。可以使用新增的缓存管理方法：\n\n1. 手动清空：Jieba::clearCache();\n2. 自动管理：Jieba::clearCacheIfNeeded();\n3. 监控状态：Jieba::getCacheStats();\n\n注意：清空缓存会导致之前发现的新词失效，后续文本需重新发现新词，可能轻微影响性能，但能有效控制内存占用。","https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php\u002Fissues\u002F77",{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},27518,"分词速度太慢（如 20 字句子需 30 秒），如何优化执行效率？","主要瓶颈在于初始化时的字典构建和词频运算。优化方案包括：\n\n1. 启用缓存机制：将 Trie 树、总词频数（total）、最小频率（min）等计算结果序列化后缓存到文件或 Redis。\n2. 初始化时优先读取缓存：修改 init() 逻辑，若存在缓存则直接反序列化加载，避免重复计算。\n3. 注意：反序列化仍有 1-2 秒开销，可考虑使用更高效的序列化格式或预编译二进制缓存。\n\n维护者建议：将构建及词频运算结果缓存，自定义词典单独运算，可显著提升启动速度。","https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php\u002Fissues\u002F16",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},27519,"如何在分词时同时获取词性标注和 TF-IDF 分数？","从 v2.0+ 版本起，Jieba::cut() 和 Posseg::cut() 支持通过 options 数组启用增强功能：\n\n1. 仅获取词性：\n   Jieba::cut($text, ['with_pos' => true]);\n   返回格式：['word' => '大厦', 'tag' => 'n']\n\n2. 仅获取 TF-IDF 分数：\n   Jieba::cut($text, ['with_scores' => true]);\n   返回格式：['word' => '大厦', 'tf' => 0.1, 'tfidf' => 0.85]\n\n3. 同时获取词性和分数：\n   Jieba::cut($text, ['with_pos' => true, 'with_scores' => true]);\n   返回格式：['word' => '大厦', 'tag' => 'n', 'tf' => 0.1, 'tfidf' => 0.85]\n\n注意：使用 with_scores 时需确保 JiebaAnalyse 已初始化。","https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php\u002Fissues\u002F48",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},27520,"如何处理中文、日文、韩文混合文本的分词？","项目已统一过滤模式以支持 CJK 混合文本。使用方法如下：\n\n1. 全模式分词（cut_all=true）：会提取所有可能的字词组合，适合日韩文。\n2. 精确模式分词（cut_all=false）：默认模式，对中文优化较好。\n\n示例代码（参考 src\u002Fcmd\u002Fdemo_japanese_korean.php）：\n\n$text = \"这是一句中文。これは日本語です。이것은 한국어 문장입니다.\";\n$words_all = Jieba::cut($text, ['cut_all' => true]);\n$words_precise = Jieba::cut($text, ['cut_all' => false]);\n\n注意：早期版本存在韩文被跳过的 bug，现已修复，请确保使用最新版。","https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php\u002Fissues\u002F61",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},27521,"在 Laravel 5.5 中调用 Jieba::init() 导致 500 错误，如何解决？","该问题通常由权限或路径配置引起。请按以下步骤排查：\n\n1. 检查字典文件路径是否正确，确保 storage_path() 或 base_path() 指向的目录存在且可读。\n2. 确认 web 服务器用户（如 www-data）对字典文件及缓存目录有读取权限。\n3. 在 Laravel 控制器中初始化时，建议包裹在 try-catch 中捕获异常并记录日志：\n\ntry {\n    Jieba::init();\n    Finalseg::init();\n} catch (\\Exception $e) {\n    \\Log::error('Jieba init failed: ' . $e->getMessage());\n    throw $e;\n}\n\n4. 检查 php.ini 中 memory_limit 是否足够（建议 ≥256M），因初始化过程较耗内存。","https:\u002F\u002Fgithub.com\u002Ffukuball\u002Fjieba-php\u002Fissues\u002F42",[141,146,151,156,161,166,171,176,181,186,191,196,201,206,211,216,221,226,231],{"id":142,"version":143,"summary_zh":144,"released_at":145},180648,"0.42","## 🚀 jieba-php v0.42 - 重大功能发布\n\n本次发布为 jieba-php 引入了多项重要增强，包括全新的内存管理能力、集成的 TF-IDF 分数计算以及多语言支持的提升。\n\n### ✨ 新特性\n\n#### 🧠 JiebaMemory 类 - 统一内存管理\n- **新增**：`JiebaMemory` 类，用于在所有 jieba-php 类中实现集中式内存管理\n- **内存统计**：通过 `getMemoryStats()` 和 `getAllCacheStats()` 提供全面的内存使用监控\n- **批量操作**：提供 `initAll()`、`destroyAll()` 和 `clearAllCaches()` 方法，以高效管理资源\n- **状态监控**：通过 `getInitializationStatus()` 和 `isAllInitialized()` 进行系统健康检查\n\n#### 📊 TF-IDF 与词性标注的增强集成\n- **新增**：`Jieba::cut()` 现在支持 `with_pos` 和 `with_scores` 选项\n- **新增**：`Posseg::cut()` 现在支持 `with_scores` 选项，便于与 TF-IDF 集成\n- **模块化 API**：新增 `JiebaAnalyse::calculateTF()` 和 `calculateTFIDF()` 方法\n- **向后兼容性**：所有现有 API 均保持不变\n- **自动初始化**：当使用评分功能时，JiebaAnalyse 会自动初始化\n\n#### 🌍 改进的多语言 CJK 支持\n- **增强**：更好地处理中日韩混合文本\n- **复杂场景**：提升了对多语言文档的处理能力\n- **性能**：优化了 CJK 字符的识别与分词效果\n\n### 🛠️ 演示脚本与示例\n- **新增**：`demo_tf_idf_pos.php` - TF-IDF 与词性标注集成示例\n- **新增**：`demo_mixed_cjk.php` - 多语言 CJK 文本处理示例\n\n### 🧪 测试增强\n- **新增**：`TfIdfPosTest.php` - 全面的 TF-IDF 集成测试\n- **新增**：`MixedCJKTest.php` - 多语言文本处理验证\n- **覆盖率**：70 多项测试，包含 300 多个断言\n- **向后兼容性**：全面验证现有 API 的兼容性\n\n### 📚 文档更新\n- **全面**：更新了 README.md 和 CLAUDE.md，涵盖所有新特性\n- **最佳实践**：提供了内存管理指南和性能优化建议\n- **API 示例**：详细展示了所有新特性的使用方法\n- **多语言支持**：文档同时提供中文和英文版本\n\n### 🔧 技术改进\n- **安全性**：增强了输入验证和注入防护\n- **性能**：优化了内存使用和缓存管理\n- **可靠性**：改进了错误处理和优雅降级机制\n- **兼容性**：保持与所有现有代码的向后兼容性\n\n### 📦 安装与使用\n\n```bash\ncomposer require fukuball\u002Fjieba-php:^0.42\n```\n\n```php\nuse Fukuball\\Jieba\\JiebaMemory;\n\n\u002F\u002F 快速入门：统一内存管理\nJiebaMemory::initAll();\n\n\u002F\u002F 增强型分词：包含词性和 TF-IDF 分数\n$result = Jieba::cut($text, false, array(\n    'with_pos' => true,\n    'with_scores' => true\n));\n\n\u002F\u002F 内存监控\n$stats = JiebaMemory::getMemoryStats();\necho \"内存使用情况：\" . $stats['current_memory_usage_formatted'];\n```\n\n","2025-07-19T05:55:25",{"id":147,"version":148,"summary_zh":149,"released_at":150},180649,"0.34","jieba-php 0.34 支持 PHP 8","2022-08-15T06:38:03",{"id":152,"version":153,"summary_zh":154,"released_at":155},180650,"0.33","jieba-php 0.33 翻译自 jieba Python 0.33 版本","2017-11-22T10:06:01",{"id":157,"version":158,"summary_zh":159,"released_at":160},180651,"0.32","jieba-php 0.32 翻译自 jieba Python 0.32 版本","2017-11-22T09:37:40",{"id":162,"version":163,"summary_zh":164,"released_at":165},180652,"0.31","jieba-php 0.31 翻译自 jieba Python 0.31 版本","2017-11-21T10:09:06",{"id":167,"version":168,"summary_zh":169,"released_at":170},180653,"0.29","jieba-php 0.29 翻译自 jieba Python 0.29 版本","2017-11-09T05:57:54",{"id":172,"version":173,"summary_zh":174,"released_at":175},180654,"0.28","jieba-php 0.28 翻译自 jieba Python 0.28 版本","2017-11-07T09:59:32",{"id":177,"version":178,"summary_zh":179,"released_at":180},180655,"0.27","jieba-php 0.27 翻译自 jieba Python 0.27 版本","2017-11-04T17:11:10",{"id":182,"version":183,"summary_zh":184,"released_at":185},180656,"0.26","可以使用英文词典","2017-11-04T15:53:20",{"id":187,"version":188,"summary_zh":189,"released_at":190},180657,"0.25","jieba-php 0.25 翻译自 jieba Python 0.25 版，功能完全一致，后续将继续翻译新版本并不断升级。","2016-02-16T18:37:08",{"id":192,"version":193,"summary_zh":194,"released_at":195},180658,"0.24","jieba-php 0.24 翻譯自 jieba python 0.24 版，功能完全一致，後續將在繼續翻譯新版本往上升級。\n","2016-02-06T19:22:17",{"id":197,"version":198,"summary_zh":199,"released_at":200},180659,"0.23","jieba-php 0.23 翻譯自 jieba python 0.23 版，功能完全一致，後續將在繼續翻譯新版本往上升級。\n","2016-01-28T09:43:10",{"id":202,"version":203,"summary_zh":204,"released_at":205},180660,"0.22","jieba-php 0.22 翻譯自 jieba python 0.22 版，功能完全一致，後續將在繼續翻譯新版本往上升級。\n","2016-01-28T09:02:20",{"id":207,"version":208,"summary_zh":209,"released_at":210},180661,"0.21","jieba-php 0.21 翻譯自 jieba python 0.21 版，功能完全一致，後續將在繼續翻譯新版本往上升級。\n","2016-01-27T18:56:55",{"id":212,"version":213,"summary_zh":214,"released_at":215},180662,"0.20","jieba-php 0.20 翻譯自 jieba python 0.20 版，功能完全一致，後續將在繼續翻譯新版本往上升級。\n","2015-11-30T07:47:54",{"id":217,"version":218,"summary_zh":219,"released_at":220},180663,"0.19","jieba-php 0.19 翻譯自 jieba python 0.19 版，功能完全一致，後續將在繼續翻譯新版本往上升級。\n","2015-07-27T10:50:43",{"id":222,"version":223,"summary_zh":224,"released_at":225},180664,"0.18","jieba-php 0.18 翻譯自 jieba python 0.18 版，功能完全一致，後續將在繼續翻譯新版本往上升級。\n","2015-05-27T08:00:10",{"id":227,"version":228,"summary_zh":229,"released_at":230},180665,"0.17","jieba-php 0.17 翻譯自 jieba python 0.17 版，功能完全一致，後續將在繼續翻譯新版本往上升級。\n","2015-05-02T10:15:45",{"id":232,"version":233,"summary_zh":234,"released_at":235},180666,"0.16","jieba-php 0.16 翻譯自 jieba python 0.16 版，功能完全一致，後續將在繼續翻譯新版本往上升級。\n","2015-04-30T21:00:39"]