当前位置:首页>python>面向Python的阿拉伯语NLP工具:CAMeL Tools、Farasa、AraBERT与MARBERT

面向Python的阿拉伯语NLP工具:CAMeL Tools、Farasa、AraBERT与MARBERT

  • 2026-06-30 00:36:40
面向Python的阿拉伯语NLP工具:CAMeL Tools、Farasa、AraBERT与MARBERT
一、阿拉伯语 NLP 的基本技术问题
阿拉伯语自然语言处理与英语、汉语等语言的处理方式不同。主要原因在于阿拉伯语具有较强的形态复杂性,词语内部经常包含前缀、后缀、冠词、代词附着形式以及丰富的屈折变化。
例如:
والجامعة
这个词可以分析为:
و + ال + جامعة
如若不进行分词、规范化和词形处理等规范化操作,后续的词频统计、文本分类、命名实体识别、信息检索和语义分析都会受到影响。
因此,阿拉伯语 NLP 通常需要两类工具:
第一类是语言分析工具,例如 CAMeL Tools 和 Farasa。其二者主要负责文本规范化、分词、词干提取、词形分析、词性标注和命名实体识别。
第二类是预训练语言模型,例如 AraBERT 和 MARBERT。主要用于文本分类、情感分析、语义表示、问答、NER 微调等任务。
AraBERT 和 MARBERT 属于 BERT 系列的 Encoder-only 模型而非生成式大语言模型,简而述之其二者主要功能是文本理解,而不是长文本生成。
二、Python 环境准备
01
使用 conda 创建环境
conda create -n arabic_nlp python=3.11conda activate arabic_nlp
02
使用 venv 创建环境
Linux / macOS:
python -m venv arabic_nlpsource arabic_nlp/bin/activate
Windows PowerShell:
python -m venv arabic_nlparabic_nlp\Scripts\activate
03
推荐基础依赖
pip install -U pippip install transformers torch
若后续使用 HuggingFace 模型,需要保证网络能够访问模型仓库,或者提前下载模型到本地。
三、CAMeL Tools:Python 阿语 NLP 综合工具箱
01
工具定位
CAMeL Tools 是一个面向阿拉伯语自然语言处理的 Python 工具套件,适用于文本规范化、分词、词形分析、词性标注、命名实体识别、情感分析和方言识别等任务。
适合作为阿语 NLP 项目的基础文本清洗和语料预处理
02
安装方式
Linux / macOS 建议先安装系统依赖:
sudo apt-get updatesudo apt-get install cmake libboost-all-dev
安装 CAMeL Tools:
pip install camel-tools
安装数据包:
camel_data -i light
如果需要完整数据包:
camel_data -i all
一般测试阶段使用 light 即可。如果需要更多组件,再安装 all
03
CAMeL Tools:文本规范化示例
下面代码只依赖 CAMeL Tools 的工具函数
不需要加载深度模型,利于测试环境可用性
from camel_tools.utils.dediac import dediac_arfrom camel_tools.utils.normalize import (    normalize_alef_ar,    normalize_alef_maksura_ar,    normalize_teh_marbuta_ar,    )def normalize_arabic_text(text: str) -> str:    """    对阿拉伯语文本进行基础规范化。    处理内容:    1. 去除元音符号;    2. 统一不同形式的 ألف;    3. 统一 ألف مقصورة;    4. 规范化 تاء مربوطة。    """    text = dediac_ar(text)    text = normalize_alef_ar(text)    text = normalize_alef_maksura_ar(text)    text = normalize_teh_marbuta_ar(text)    return textif __name__ == "__main__":    sample = "إِنَّ اللُّغَةَ العَرَبِيَّةَ جَمِيلَةٌ."    result = normalize_arabic_text(sample)    print(result)
这类规范化适合文本分类、检索、词频统计等任务。但如研究目标涉及字形差异、古典文本、元音符号或精细词法现象,就不应过度规范化。
04
CAMeL Tools:简单分词示例
from camel_tools.tokenizers.word import simple_word_tokenizedef tokenize_arabic(text: str) -> list[str]:       """    使用 CAMeL Tools 进行简单词语切分    """    return simple_word_tokenize(text)if __name__ == "__main__":    text = "تعد اللغة العربية من أهم اللغات في العالم."    tokens = tokenize_arabic(text)    print(tokens)
此法适合基础 tokenization,需要更深入的词形分析的话建议使用 CAMeL Tools 的 morphological analysis 或 disambiguation 模块。
四、Farasa:阿语分词与词法处理工具
Farasa 是阿拉伯语 NLP 中常用的工具,主要用于分词、词干提取、词性标注、命名实体识别、词形还原和加元音符号等任务。
在 Python 中使用 Farasa 常用两种方式:
第一种: farasapy,即 Python 包装库
第二种:使用subprocess调用 Farasa Java JAR 文件
两种方式的区别如下:
方法
优点
局限
farasapy
Python 调用简单,代码简洁
首次运行可能自动下载资源;依赖 Java;封装层可能受环境影响
Python 调 Java JAR
控制更直接,适合工程部署
需要手动准备 JAR 文件和路径;需要理解命令行参数
01
方法一:使用 farasapy
1. 安装 Java
Farasa 底层依赖 Java。先检查 Java 是否可用:
java -version
系统能输出 Java 版本的话说明 Java 已加入 PATH。
Linux 安装 Java:
sudo apt-get updatesudo apt-get install openjdk-11-jdk
Windows 用户需要安装 JDK
确认 java 命令可以在 PowerShell 或 CMD 中运行。
2. 安装 farasapy
pip install farasapy
3. farasapy 分词示例
from farasa.segmenter import FarasaSegmenterdef farasa_segment(text: str) -> str:    """ 使用 farasapy 调用 Farasa Segmenter。    interactive=True 适合多次处理短文本。    """    segmenter = FarasaSegmenter(interactive=True)    return segmenter.segment(text)if __name__ == "__main__":    text = "ذهبت إلى الجامعة الأردنية صباح اليوم."    result = farasa_segment(text)    print(result)
第一次运行时,farasapy 可能会检查 Java 环境并下载 Farasa 工具资源
如果网络环境不稳定,可能会卡在下载阶段。
4. farasapy 词干提取示例
from farasa.stemmer import FarasaStemmerdef farasa_stem(text: str) -> str:    """    使用 farasapy 调用 Farasa Stemmer。    """    stemmer = FarasaStemmer(interactive=True)    return stemmer.stem(text)if __name__ == "__main__":    text = "الطلاب يدرسون اللغة العربية في الجامعة."    result = farasa_stem(text)    print(result)
5. farasapy 使用建议
只是快速测试 Farasa,优先使用 farasapy。
但是如果需要处理大量文本,建议如下方法:
短文本、多次调用:使用 interactive=True
大文件、一次性处理:使用 standalone 模式,或直接调用 Java JAR;
正式部署:优先考虑手动管理 JAR 路径,减少自动下载带来的不确定性。
02
方法二:Python 直接调用 Farasa Java JAR
这种方式适合工程项目,相比之下的特点是 Python 不通过 farasapy,而是直接调用本地 Farasa JAR 文件。
Farasa Segmenter 的常见命令行形式是:
java -jar farasaSeg.jar -i input.txt -o output.txt
有些版本使用:
java -Dfile.encoding=UTF-8 -jar Farasa.jar -i input.txt -o output.txt
因此,Python 中可以用 subprocess.run() 进行调用。
1. 准备 Farasa JAR
假设目录结构如下:
project/├── run_farasa_java.py└── farasa/└── farasaSeg.jar
如果使用的是其他文件名,例如 Farasa.jar,只需要修改代码中的 JAR 路径。
2. Python 调用 Java JAR 的完整代码
from pathlibimport Pathimport subprocessimport tempfiledef run_farasa_jar(    text: str,    jar_path: str,    java_cmd: str = "java",    farasa_data_dir: str | None = None,    timeout: int = 60,) -> str:    """    使用 Python subprocess 调用 Farasa Java JAR。    参数: text: 输入的阿拉伯语文本。    jar_path: Farasa JAR 文件路径    java_cmd: Java 命令,默认使用系统 PATH 中 java    farasa_data_dir: 可选。如需要 FarasaDataDir,可传入数据目录。    timeout: 超时时间,单位秒。    返回:    Farasa 输出文本。    """    jar = Path(jar_path).expanduser().resolve()    if not jar.exists():        raise FileNotFoundError(f"找不到 Farasa JAR 文件:{jar}")    with tempfile.TemporaryDirectory() as tmpdir:        tmpdir_path = Path(tmpdir)        input_file = tmpdir_path / "input.txt"        output_file = tmpdir_path / "output.txt"        input_file.write_text(text, encoding="utf-8")        cmd = [            java_cmd,            "-Dfile.encoding=UTF-8",            "-jar",            str(jar),            "-i",            str(input_file),            "-o",            str(output_file),        ]        env = None        if farasa_data_dir is not None:            import os            env = os.environ.copy()            env["FarasaDataDir"] =str(Path(farasa_data_dir).expanduser().resolve())        completed = subprocess.run(            cmd,            cwd=str(jar.parent),            env=env,            stdout=subprocess.PIPE,            stderr=subprocess.PIPE,            text=True,            encoding="utf-8",            timeout=timeout,        )        if completed.returncode != 0:            raise RuntimeError(                "Farasa Java 调用失败。\n"                f"命令:{' '.join(cmd)}\n"                f"标准输出:{completed.stdout}\n"                f"错误输出:{completed.stderr}"            )        if not output_file.exists():            raise FileNotFoundError(                "Farasa 没有生成输出文件。请检查 JAR 文件版本和命令行参数。"            )        return output_file.read_text(encoding="utf-8").strip()if __name__ == "__main__":    sample_text = "ذهبت إلى الجامعة الأردنية صباح اليوم."    result = run_farasa_jar(        text=sample_text,        jar_path="./farasa/farasaSeg.jar",    )     print(result)
3. 如果 JAR 需要 FarasaDataDir
有些 Farasa 版本需要设置数据目录,可以这样写:
result = run_farasa_jar(        text="ذهبت إلى الجامعة الأردنية صباح اليوم.",    jar_path="./farasa/Farasa.jar",    farasa_data_dir="./farasa/FarasaData",)
4. Java 调用方式的优点
直接调用 Java JAR 的优点是:不依赖 farasapy 的自动下载逻辑;可以固定 JAR 版本;便于处理大文件;便于记录命令行日志。
5. Java 调用方式的常见错误
第一,找不到 Java。
检查:
java -version
如果提示找不到命令,需要安装 JDK 并加入 PATH。
第二,找不到 JAR 文件。
检查 Python 代码中的路径是否正确:
jar_path="./farasa/farasaSeg.jar"
第三,JAR 需要额外数据目录。
如果报错中出现数据路径相关信息,需要设置 FarasaDataDir
第四,输入输出编码错误。
建议始终使用:
-Dfile.encoding=UTF-8
并且 Python 读写文件时使用:
encoding="utf-8"
五、AraBERT:现代标准阿语文本理解模型
01
模型定位
AraBERT 是基于 BERT 架构的阿拉伯语预训练语言模型,主要用于文本理解任务,包括文本分类、情感分析、命名实体识别、问答和语义匹配。
AraBERT 适合用于分类、判断和编码文本语义。
02
安装依赖
pip install transformers torch arabert
03
AraBERT 预处理示例
from arabert import ArabertPreprocessor   def preprocess_with_arabert(text: str, model_name: str) -> str:"""使用 AraBERT 官方预处理器处理文本。"""    preprocessor = ArabertPreprocessor(model_name=model_name)    return preprocessor.preprocess(text)  if __name__ == "__main__":    model_name = "aubmindlab/bert-base-arabertv2"    text = "ولن نبالغ إذا قلنا إن اللغة العربية لغة غنية ومعقدة."    processed = preprocess_with_arabert(text, model_name)    print(processed)
04
AraBERT 加载模型并获取向量表示
下面代码将会使用 HuggingFace Transformers 加载 AraBERT
并输出最后一层隐藏状态的维度。
import torchfrom transformers import AutoTokenizer, AutoModeldef encode_with_arabert(text: str, model_name: str = "aubmindlab/bert-base-arabertv2"):    """    使用 AraBERT 编码阿语文本。    返回 last_hidden_state。    """    tokenizer = AutoTokenizer.from_pretrained(model_name)    model = AutoModel.from_pretrained(model_name)    inputs = tokenizer(        text,        return_tensors="pt",        truncation=True,        padding=True,    )    model.eval()    with torch.no_grad():        outputs = model(**inputs)    return outputs.last_hidden_stateif __name__ == "__main__":    text = "اللغة العربية لغة ذات نظام صرفي غني."    hidden_states = encode_with_arabert(text)    print(hidden_states.shape)
输出通常类似:
torch.Size([1, sequence_length, 768])
其中:
1 表示 batch size;
sequence_length 表示分词后的序列长度;
768 是 BERT-base 隐藏层维度。
05
AraBERT 文本分类代码框架
下面代码可以正确加载模型结构,但分类头是随机初始化的
如果想得到可靠分类结果
必须使用标注数据进行训练或加载已经微调好的模型
from transformers import AutoTokenizer, AutoModelForSequenceClassificationdef load_arabert_classifier(    model_name: str = "aubmindlab/bert-base-arabertv2",    num_labels: int = 3,):    """    加载 AraBERT 分类模型结构。    注意:如果使用基础模型,分类头需要训练。    """    tokenizer = AutoTokenizer.from_pretrained(model_name)    model = AutoModelForSequenceClassification.from_pretrained(        model_name,        num_labels=num_labels,    )    return tokenizer, modelif __name__ == "__main__":    tokenizer, model = load_arabert_classifier(num_labels=3)    text = "هذا المنتج ممتاز جدا."    inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)    outputs = model(**inputs)    print(outputs.logits)
这段代码适合仅仅用于说明模型结构
不能把未微调模型的输出直接解释为情感分类结果
六、MARBERT:方言阿语与社交媒体文本理解模型
01
模型定位
MARBERT 是面向阿拉伯语的 BERT 类预训练模型,重点覆盖方言阿语和社交媒体文本。它适合处理推文、评论、口语化表达、方言混合文本等场景。
如果文本是现代标准阿语新闻,AraBERT 通常更直接;如果文本来自社交媒体、短评论或方言材料,MARBERT 更适合。
02
安装依赖
pip install transformers torch
03
MARBERT 加载模型并获取向量表示
import torchfrom transformers import AutoTokenizer, AutoModeldef encode_with_marbert(text: str, model_name: str = "UBC-NLP/MARBERT"):    """    使用 MARBERT 编码阿语文本。    返回 last_hidden_state。    """    tokenizer = AutoTokenizer.from_pretrained(model_name)    model = AutoModel.from_pretrained(model_name)    inputs = tokenizer(        text,        return_tensors="pt",        truncation=True,        padding=True,    )    model.eval()    with torch.no_grad():        outputs = model(**inputs)    return outputs.last_hidden_stateif __name__ == "__main__":    text = "الخدمة كتير ممتازة والأسعار مناسبة."    hidden_states = encode_with_marbert(text)    print(hidden_states.shape)
该代码会输出 MARBERT 对输入文本的隐藏层表示
可用于分类、聚类、语义匹配或进一步训练
04
MARBERT Masked Language Model 示例
MARBERT 是 masked language model,可以进行掩码预测:
import torchfrom transformers import AutoTokenizer, AutoModelForMaskedLMdef predict_mask_with_marbert(    text: str,    model_name: str = "UBC-NLP/MARBERT",    top_k: int = 5,):    """    使用 MARBERT 对 [MASK] 位置进行预测。    """    tokenizer = AutoTokenizer.from_pretrained(model_name)    model = AutoModelForMaskedLM.from_pretrained(model_name)    inputs = tokenizer(text, return_tensors="pt")    mask_token_index = torch.where(inputs["input_ids"] == tokenizer.mask_token_id)[1]    if len(mask_token_index) == 0:        raise ValueError("输入文本中必须包含 [MASK]。")    model.eval()    with torch.no_grad():        outputs = model(**inputs)    mask_logits = outputs.logits[0, mask_token_index, :]    top_tokens = torch.topk(mask_logits, top_k, dim=1).indices[0].tolist()    return [tokenizer.decode([token]).strip() for token in top_tokens]if __name__ == "__main__":    text = "الجو اليوم [MASK] جدا."    predictions = predict_mask_with_marbert(text)    print(predictions)
输出是模型认为最可能填入 [MASK] 的若干 token
具体结果会随模型版本、tokenizer 和运行环境略有差异
七、四类任务的 Python 工作流
01
阿语语料库预处理
适合任务:
  • 词频统计
  • 关键词抽取
  • 检索索引构建
  • 语料库清洗
  • 术语抽取前处理
推荐流程:
原始阿语文本CAMeL Tools 规范化Farasa 分词或词干提取保存为 JSON / CSV / SQLite进入统计分析或检索系统
02
现代标准阿语文本理解
适合任务:
  • 新闻分类
  • 政策文本分类
  • 正式评论分类
  • 主题分类
  • 文本匹配
推荐流程:
现代标准阿语文本
↓
必要的文本清洗
↓
AraBERT tokenizer
↓
AraBERT 模型
↓
分类器或向量表示
03
方言阿语和社交媒体文本理解
适合任务:
  • 评论情感分析
  • 推文分类
  • 方言文本分析
  • 网络舆情分析
推荐流程:
社交媒体文本轻度清洗MARBERT tokenizerMARBERT 模型分类器或向量表示
社交媒体文本不宜过度规范化,因为重复字母、表情、拼写变体、混合语言等信息可能具有情感或语用价值。
04
Farasa 工程化调用
建议使用 Python 直接调用 Java JAR 的方式
而不是依赖 farasapy 自动下载资源。
推荐流程:
Python 输入文本
↓
写入临时 UTF-8 文件
↓
subprocess 调用 java -jar farasaSeg.jar
↓
读取输出文件
↓
返回 Python 字符串
这种方式更适合批量任务、生产环境和可复现实验。
八、工具选择结论
CAMeL Tools 适合作为阿语文本清洗、规范化和基础 NLP 处理工具。
Farasa 适合分词、词干提取和词法处理。Python 中可以使用 farasapy,也可以直接通过 subprocess 调用 Java JAR。前者适合快速实验,后者适合工程部署。
AraBERT 适合现代标准阿语文本理解任务,如分类、情感分析、NER 微调和语义匹配。
MARBERT 则是适合方言阿语、推文、评论和社交媒体文本分析。
如果项目以 Python 为主,可以采用以下组合:
CAMeL Tools:规范化与基础处理Farasa:分词与词干提取AraBERT:现代标准阿语文本理解MARBERT:方言和社交媒体文本理解
想要任务进入问答、摘要或生成式系统
还需要额外接入生成式大语言模型
AraBERT 和 MARBERT 本身承担理解任务,不承担生成任务
以上皆为个人浅见,如有不当之处
敬请海涵并不吝赐教,非常感谢您的阅读!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-02 23:33:24 HTTP/2.0 GET : https://f.mffb.com.cn/a/502081.html
  2. 运行时间 : 0.384738s [ 吞吐率:2.60req/s ] 内存消耗:4,690.38kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=6281288c4fc593d54a1f5720855676b4
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000911s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001504s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.008038s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.017220s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001507s ]
  6. SELECT * FROM `set` [ RunTime:0.013924s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001427s ]
  8. SELECT * FROM `article` WHERE `id` = 502081 LIMIT 1 [ RunTime:0.021527s ]
  9. UPDATE `article` SET `lasttime` = 1783006404 WHERE `id` = 502081 [ RunTime:0.001425s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000568s ]
  11. SELECT * FROM `article` WHERE `id` < 502081 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001562s ]
  12. SELECT * FROM `article` WHERE `id` > 502081 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004022s ]
  13. SELECT * FROM `article` WHERE `id` < 502081 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.075748s ]
  14. SELECT * FROM `article` WHERE `id` < 502081 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.038399s ]
  15. SELECT * FROM `article` WHERE `id` < 502081 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.068891s ]
0.388284s