ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Semantica数据归一化教程:文本清洗、日期标准化、编码修复

Semantica数据归一化教程:文本清洗、日期标准化、编码修复 Semantica数据归一化教程文本清洗、日期标准化、编码修复【免费下载链接】semanticaGraph-Native Infrastructure for Context and Accountable AI Systems项目地址: https://gitcode.com/GitHub_Trending/sema/semanticaSemantica 是一个面向 AI 系统的图原生基础设施框架Graph-Native Infrastructure for Context and Accountable AI Systems其数据归一化模块semantica.normalize能在实体抽取和知识图谱构建之前自动完成文本清洗、日期标准化、编码修复、数字转换与语言检测把脏乱的原始数据一次性洗干净。本文将带你从零理解 Semantica 数据归一化的核心用法。为什么要在抽取前做数据归一化非结构化数据天生不一致。如果不做归一化同一个真实世界对象会以几十种变体出现在你的知识图谱中脏数据现象后果归一化之后Jan 1st, 2020/01/01/2020/2020-01-01同一个日期变成 3 个值统一为 ISO 8601 格式$1.2B/1,200,000,000/1.2 billion USD同一个数字变成 3 个字符串统一为1200000000.0Hello WorldvsHello World含不间断空格字符串匹配失败空白字符折叠cp1252 编码混入 UTF-8 流静默破坏整段文本自动检测并转码修复归一化的价值在于在任何抽取器、去重器或图谱构建器看到数据之前先把变体收敛成标准形式从源头减少下游错误。核心组件一览谁负责清洗哪类数据Semantica 的归一化模块把每类数据交给专门的标准化工处理每个组件都提供简洁的便捷函数和有状态的类实例两种用法。源码入口在 semantica/normalize/init.py组件负责什么TextNormalizerUnicode 标准化NFC/NFKC、空白折叠、智能引号与破折号替换DateNormalizer任意日期格式解析为 ISO 8601支持相对日期与时区NumberNormalizer货币、百分比、科学计数法、单位换算EncodingHandler编码检测chardet、UTF-8 转换、BOM 去除LanguageDetector检测文本语言50 语言并给出置信度EntityNormalizer实体别名解析与名称歧义消解DataCleaner记录级去重、缺失值处理、模式校验最快上手推荐的 5 步处理顺序官方文档给出了经过验证的处理顺序——编码修复必须最先执行因为坏掉的字节会污染下游所有环节详见 docs/reference/normalize.md编码修复EncodingHandler检测原始字节编码并转为 UTF-8文本清洗TextNormalizer处理 Unicode 形式、空白与特殊字符实体规范化EntityNormalizer统一实体名称变体结构化值解析DateNormalizerNumberNormalizer处理日期与数字语言检测在干净文本上运行LanguageDetector一个最小化的完整示例from semantica.normalize import ( EncodingHandler, TextNormalizer, DateNormalizer, NumberNormalizer, LanguageDetector, ) handler EncodingHandler() encoding, confidence handler.detect(raw_bytes) # 检测编码 text handler.convert_to_utf8(raw_bytes) # 修复编码 clean TextNormalizer().normalize_text(text) # 文本清洗 date DateNormalizer().normalize_date(Jan 1st, 2020) # → 2020-01-01T00:00:0000:00 num NumberNormalizer().normalize_number($1.2B) # → 1200000000.0 lang LanguageDetector().detect(text) # → 语言代码⚠️ 两个高频踩坑点不要在实体抽取前转小写caselower会破坏 NER 依赖的大小写信号大小写归一化应放在抽取之后。企业别名需要显式映射EntityNormalizer没有内置公司后缀扩展如 Inc. → Incorporated需在alias_map中手动注册键用小写。文本清洗细节Unicode 形式怎么选TextNormalizer.normalize_text()支持四种 Unicode 形式见 semantica/normalize/text_normalizer.py选择建议如下形式适用场景NFC默认首选适合存储与展示NFKC搜索索引统一连字、全角字符与分数NFD去除重音符号先分解 é → e 音调再剥离NFKD同 NFD但额外分解兼容字符此外还支持空白折叠、智能引号替换‘’→、破折号统一、HTML 标签剥离以及process_batch()批量处理大批量文本以提升性能。日期标准化把所有格式变成 ISO 8601DateNormalizer能把January 1st, 2020、01/01/2020甚至yesterday、3 weeks ago这类相对表达统一解析为 ISO 8601实现见 semantica/normalize/date_normalizer.py。配套子组件TimeZoneNormalizer时区转换与 UTC 标准化支持夏令时处理RelativeDateProcessor基于参考日期计算相对表达式TemporalExpressionParser解析from January 2020 to March 2021这样的时间范围 提示完整的日期解析依赖python-dateutilpip install python-dateutil未安装时会自动降级到datetime.fromisoformat()。编码修复自动检测 UTF-8 兜底转换EncodingHandler实现见 semantica/normalize/encoding_handler.py基于chardet完成三件事detect(data)返回(编码名, 置信度)元组如(windows-1252, 0.73)convert_to_utf8(data)未指定源编码时自动检测并按latin-1 → cp1252 → iso-8859-1的兜底链尝试转换remove_bom(data)去除 UTF-8 / UTF-16 的字节序标记BOM还支持整文件场景detect_file()探测文件编码convert_file_to_utf8()直接转换磁盘文件。接入流水线作为命名步骤嵌入 Pipeline归一化可以作为一个命名步骤嵌入 Semantica 的完整流水线Ingest → Parse →Normalize→ Extract → Build KGfrom semantica.pipeline import PipelineBuilder, ExecutionEngine from semantica.ingest import FileIngestor from semantica.normalize import TextNormalizer from semantica.semantic_extract import NERExtractor builder PipelineBuilder() builder.add_step(ingest, file_ingest, handlerFileIngestor().ingest_file) builder.add_step(normalize, text_normalize, handlerTextNormalizer().normalize) builder.add_step(extract, ner_extract, handlerNERExtractor(methodml).extract) builder.connect_steps(ingest, normalize) builder.connect_steps(normalize, extract) pipeline builder.build(normalize_pipeline) result ExecutionEngine().execute_pipeline(pipeline, datadata/documents/)最佳实践清单永远先修编码一个 cp1252 字符混入 UTF-8 流就会静默破坏整段文本NFC 优先多数场景用 NFC搜索索引用 NFKC实体类型要传normalize_entity(..., entity_typePerson)能触发标题大小写等类型感知处理日期用 ISO 8601 显式时区保证跨系统一致性语言检测文本要够长少于 10 个字符会直接返回默认语言批量场景用批处理 APIprocess_batch()等接口可显著提升大数据集性能异常要兜住捕获ValidationError与ProcessingError延伸阅读模块完整用法手册semantica/normalize/normalize_usage.mdAPI 参考含参数与返回值说明docs/reference/normalize.md配置项与环境变量NORMALIZE_UNICODE_FORM等semantica/normalize/config.py相关模块去重 semantica/deduplication/、文档解析 semantica/parse/、流水线编排 semantica/pipeline/【免费下载链接】semanticaGraph-Native Infrastructure for Context and Accountable AI Systems项目地址: https://gitcode.com/GitHub_Trending/sema/semantica创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表