# cellinfo → sector 逆推调研笔记 > 目标:用 `celldata.cellinfo`(自动处理、有数据源)逆推出 `celldata.sector`(人工据 cellinfo 整理)。 > 现有 sector 作为基准/参考。逆推时**不清空** sector:仅补充缺失 CGI,已有的保留(避免人工纠正被自动运行冲掉)。 > 脚本与特征库写入 `CellData.sql`。本文件记录字段映射、规则、每轮测试的优化点与准确率。 ## 一、两表结构(celldata) cellinfo(数据源,66778 行):`CGI, eNodeBID, CellID, PLMN, 基站名称, 小区名称, 频点, 带宽, 制式, 功率, 网络` sector(目标,66969 行):`CGI, 扇区, 物理站, 制式, 频段, 带宽, 站型, 网络`(原 `区域` 列已删除:全项目无引用,最终不使用) 连接键:`CGI`。sector 比 cellinfo 多 ~191 行(历史/其他来源),逆推以 cellinfo 为准。 ## 二、字段来源结论 | sector 字段 | 来源 | 说明 | |---|---|---| | CGI | 复制 cellinfo.CGI | 连接键 | | 网络 | 复制 cellinfo.网络 | 4G / 5G | | 带宽 | 复制 cellinfo.带宽 | cellinfo 已规范化为如 `20M` | | ~~区域~~ | **已删除该列** | 全项目无引用,已 `ALTER TABLE sector DROP COLUMN 区域` | | 制式 + 频段 | 频点 + PLMN 推导(特征表) | 见三 | | 站型 | 名称关键字 + 设备码推导 | 见四 | | 物理站 | 小区名称解析 | 见五 | | 扇区 | 物理站 + 扇区号 | 扇区号见五 | ## 三、频点 → 制式 / 频段(特征库核心) cellinfo.制式 已给出粗类(FDD/TDD/700M/2.6G),频段再按频点细分;个别需 PLMN 区分: | 网络 | 频点范围 | PLMN | 制式 | 频段 | 实测样本 | |---|---|---|---|---|---| | 5G | ≥4000 | 任意 | 4.9G | 4.9G | 4827.36、4919.52 | | 5G | 700–800 | 460-00 | 700M | 700M | 763.25(移动)9808 | | 5G | 700–800 | 460-15 | 广电 | 广电 | 763.25(广电)9802 | | 5G | 2000–3000 | 任意 | 2.6G | 2.6G | 2524.95 等 | | 4G | 900–1000 | 任意 | FDD | FDD900 | 939.0 | | 4G | 1000–1880 | 任意 | FDD | FDD1800 | 1810–1827 | | 4G | 1880–1920 | 任意 | TDD | F频 | 1895.0、1909.4 | | 4G | 1920–2110 | 任意 | TDD | A频 | 2017.5 | | 4G | 2300–2400 | 任意 | TDD | E频 | 2330、2349.8、2364.6 | | 4G | 2400–2700 | 任意 | TDD | D频 | 2624.6 等 | **关键歧义** 1. **700M vs 广电**:同频点 763.25,由 **PLMN** 区分(460-00=移动 700M,460-15=中国广电)。✅ 可完美区分。 2. **D频 vs 3DMM**:**cellinfo 完全没有 3DMM 标注**——`cellinfo.制式` 仅 4 值 `700M/TDD/FDD/2.6G`;sector 中标 3DMM 的 1400 个小区在 cellinfo 里**全部是 `TDD`(4G)**。3DMM 是 3D-MIMO 天线属性,人工额外打在 sector 上,源表不可还原。 - **分类策略(已采纳用户规则)**:3DMM 按频点对应的"非 3DMM 实际制式"分类——这些频点(2624.6 等 2.6GHz)的非 3DMM 小区都是 `TDD/D频`,而 FDD 仅在 900/1800,频点不重叠。故脚本对这 1400 个判 `TDD/D频` 即正确(与"3DMM 用 TDD 制式规则"一致)。 - 因此"制式 97.88%"是对照 sector 人工 3DMM 标签的数字,**按制式规则 TDD 才是正确分类,制式实际正确率≈100%**。现有 sector 的 3DMM 因「不覆盖已有行」保留不变。 ## 四、站型规则(实测覆盖度) | 站型 | 规则 | 命中 | 总数 | 备注 | |---|---|---|---|---| | 室分 | 小区名设备码尾 `Z[A-Z]W`(如 ZLW/ZRW/ZFW,末字母 W) | 10146 | 10168 | 99.8% | | 微站 | 小区名含「微小」(如 (微小M)/(微小I)) | 1086 | 1086 | 100% | | 宏站 | 其余(设备码尾 H,如 Z5H/ZLH/ZFH,且无微小) | — | 54747 | 仅 18 行宏站名含微小(误差≈0.03%) | 判定顺序:室分(W 码) → 微站(微小) → 宏站。W 码与微小在数据中互斥。 ## 五、物理站 / 扇区解析 预处理(仅为解析可靠):全角 `()【】`→半角 `()[]`、去空格。 **设备码**(位于小区名尾部):`<频率前缀>-Z<尾字母>-<扇区号>`,正则 `[A-Z0-9]+-Z[A-Z0-9]{2}-[0-9]+$`。 - 频率前缀:U / E / D / F / DC / RD / RDC 等;尾字母 H=室外(宏/微)、W=室分。 - 例:`U-Z5H-0711`、`E-ZLW-8`、`D-ZRH-103`、`F-ZLH-3`、`RDC-ZFH-2`。 **扇区号**(取小区名尾部数字串): - 700M/广电(Z5H 码):取**末位数字**。`0711`→1、`0712`→2、`0713`→3、`30712`→2。 - 其余:取数字串 **% 100**。`-3`→3、`-103`→3、`-113`→13、`-203`→3、`-16`→16。 **物理站**: - **非 700M**:= 小区名去设备码后,删除所有括号/方括号内容,但**保留 `(微小X)`**。 - 例 `江门台山河东家禽(从…搬迁)(微小M)(共…F-ZLH)F-ZLH-2` → `江门台山河东家禽(微小M)`。 - 例 `江门鹤山坚美园52至53栋(共…E-ZLW)E-ZLW-8` → `江门鹤山坚美园52至53栋`。 - **700M/广电**:名称结构 `CBN-<枢纽>(<真实站址>)<码>` 或 `CBN-<站址><码>`。 - 去码后取**最后一个括号内容**作为物理站;若该内容**以「共」开头**(共建标注,如 `(共…E-ZLW)`)则改取**括号前的外层**(去 `CBN-` 前缀);无括号则取外层去 `CBN-`。 - 取到的内容再删除其内部子括号(如 `(搬迁)(重建)`)。 - 注意:`共和` 等地名(括号内容以「江门」开头、共字在中间)**不算共建**,仍取内层。 - 例 `CBN-江门新会圭阳路(江门新会雍翠峰(搬迁))U-Z5H-0712` → `江门新会雍翠峰`。 - 例 `CBN-江门台山通济公园U-Z5H-0713` → `江门台山通济公园`。 - 例 `CBN-江门鹤山铸德(江门鹤山共和鸿江工业区)U-Z5H-0712` → `江门鹤山共和鸿江工业区`。 **扇区** = 物理站 + 扇区号(如 `江门新会五和农村二` + `1` = `江门新会五和农村二1`)。 > 括号宽度:现有 sector 的 `(微小X)` 用全角 `()`。逆推统一转半角输出;对比准确率时两侧都做括号归一化,衡量语义正确性而非宽度。 ## 六、测试与准确率(逐轮更新) 测试方法:在 celldata 建 `sector_band_ref` 特征表 + `_sector_infer` 暂存表逐字段推导, JOIN 现有 `sector`(重叠 CGI **n=66001**)逐字段比对;物理站/扇区比对时两侧做括号+空白归一化。 ### Round 1(基础规则) | 字段 | 准确率 | |---|---| | 网络 | 100%(66001)| | 带宽 | 99.75%(65838)| | 制式 | 97.88%(64601)| | 频段 | 97.60%(64417)| | 站型 | 99.94%(65963)| | 物理站 | 99.12%(65419)| | 扇区 | 98.72%(65159)| 失配定位: - 制式失配 **100% 是 TDD↔3DMM**(1400)——同频/同 PLMN/同带宽/功率重叠,不可还原。 - 频段失配 = 3DMM(1400) + F频↔A频(162,1895/1909 同频人工分档) + E频↔D频(22)。 - 带宽失配主要 cellinfo=20M 而人工=15M(155,源数据人工修正)。 - 站型失配 38:20 个室分码为 `Z[A-Z]R`(如 E-ZLR,高铁 SM 站)未被 W 规则覆盖;18 个宏站名含"微小"被误判微站。 - 物理站/扇区失配:700M 多括号/不闭合、非 700M 共建/拉远不闭合括号。 ### Round 2(物理站 v2/v3:按关键字保留限定括号)——失败回退 尝试只删"共/从/拉远/搬迁…"备注括号、保留 `(龙山路)(红线内)(1)`,物理站反降到 ~98.2%。 原因:① 末尾 `[)]+$` 误删了 `(微小M)` 等合法括号的右括号;② 大量无备注关键字的别名括号本应删除却被保留,净损失。结论:**"删全部括号+回贴微小"才是最优主策略**。 ### Round 3(v4:删全部括号 + 悬空清理 + 700M 取"(江门"内容)——定稿 - 非 700M:去码 → 删全部成对括号(3 轮) → 删悬空开括号 `\([^()]*$` → 删孤立 `)` → 回贴 `(微小X)`。 - 700M/广电:取 `(江门…` 括号内容;无则取外层去 `CBN-`("共"开头自然落外层)。 - 扇区号:700M 末位;其余 %100。 | 字段 | 准确率 | 说明 | |---|---|---| | 网络 | 100% | 复制 | | 制式 | 97.88%(排除 3DMM 即 **100%**)| 仅差不可还原的 3DMM | | 频段 | 97.60% | 差额=3DMM+同频 F/A、E/D 人工分档 | | 带宽 | 99.75% | 差额为人工把 20M 改 15M | | 站型 | 99.94% | | | 物理站 | **99.59%**(65728)| | | 扇区 | **99.20%**(65470)| | 剩余残差为**不可还原的人工差异**,不再继续拟合(避免过拟合): - 室分多载波编号不一致:`E-ZLW-12→2`、`-111→1`、`-115→5`(末位)与 `-16→16`(%100)并存;脚本按用户既定 %100。 - 700M 个别人工编号:`0713→1`、`0712→4`、`0712→空`,与名义 071N→N 规则冲突。 - 物理站个别含区域前缀(`柏怡酒店`↔`江海柏怡酒店`)、保留 `(龙山路)/(1)` 等;真实数据存在尾随制表符。 - 因"不覆盖已有行",上述人工值在自动运行中均被保留,不受影响。 ### 落库策略 仅 `INSERT` sector 中缺失的 CGI(本次快照 **921 条**),已有 CGI 一律保留。区域留空。 ### 复现实测命令(celldata) 按 `CellData.sql` 顺序执行即可;准确率核验 SQL: `SELECT 物理站/扇区 归一化后 = sector 对应值 的占比 FROM _sector_infer JOIN sector USING(CGI)`。