i2 Analyst‘s Notebook 8 与 .doc 双向处理:导入清洗与导出报告的完整避坑指南

发布时间:2026/10/14 1:26:54
i2 Analyst‘s Notebook 8 与 .doc 双向处理:导入清洗与导出报告的完整避坑指南 简介这是基于IBM i2 Analysts Notebook 8标准培训教材整理的中文学习文档面向安全、金融等领域的数据分析师及调查人员用于解决话单、银行交易等复杂数据的关联挖掘与可视化分析问题。文档围绕入门、基本绘图、基础功能与功能演练四条主线展开覆盖节点与边、时间线分析、聚类算法、数据接口配置等核心概念并具体演示话单关系分析、案件串并、人员物品动态、银行账户交易、话单ABC分析、手机串号分析、活动轨迹跟踪等典型场景可帮助零基础到中级用户快速建立分析思路。资源压缩包内为1份doc格式文档容量约25.9MB目录结构清晰前四章讲原理与操作后几章以案例演练为主适合按章节系统学习或作为日常查阅手册。当前已有1583人学习下载对需要掌握i2 Analysts Notebook 8实际操作和调查分析方法的读者具有较强参考价值。1. i2 Analysts Notebook 8 与 .doc一个被低估的“最后一公里”问题做情报分析和调查业务的人大多对 i2 Analysts Notebook 8 的图不陌生资金往来的网络、通话记录的关系链、物流节点的时序拖进画布后一张图能顶十页文字。但分析的成果最终要交出去而交付物往往是 Word 文档——把图、关键属性、时间线和结论说明整理成 .doc 报告归档反过来你也会频繁拿到从 Word 名单或旧报告里导出的 .doc 文件需要把里面的人、事、关系重新铺进 i2 的图里建模。这个 .doc 就是连接分析与交付的桥。可它恰恰是最容易被忽略、最容易翻车的一环导出格式错乱、中文乱码、链接重复、时间字段丢失每一条都是实际工作中反复踩过的坑。这篇笔记围绕 i2 Analysts Notebook 8 和 .doc 文件的正向与反向流程展开给出能直接照做的方案。适合做调查分析、风控、反欺诈、合规审计的从业者以及正在给分析团队搭工具链的技术人员。2. 先搞清楚信息流.doc 在 i2 分析里到底扮演什么角色2.1 两种常见场景报告导出与文档数据导入i2 Analysts Notebook 8 本身不依赖 Word 文档来存图图有自己的原生格式画布上的实体、链接、时间事件、属性全都在那套格式里。但实际业务里.doc 文件会出现在两个完全不同的环节。第一类是“导出报告”。你把一张分析图整理完毕图上有几十个实体、上百条链接需要把这张图连同图例、属性清单、时间线一起交付出去常见做法就是通过导出向导生成一份 Word 报告。这份 .doc 本质上是“图的影子”内容可以再编辑但它不再是动态分析图。第二类是“文档数据导入”。你收到一批旧系统的资料对方没有结构化数据库只有一份由 Word 打印出来的往来记录。你需要把文档里的人名、账号、时间、关系提取出来清洗成一个文本文件再借助导入向导变成 i2 里的实体和链接。这两种场景的处理逻辑完全不一样一个是从图到文档一个是从文档到图。很多人把这两件事混在一起用同一个习惯去处理结果就是两边都做不顺。先分清你属于哪条流向后面每一步才谈得上对。2.2 版本差异的迷雾.doc 与 .docx 不是一回事在展开流程前先泼一盆冷水.doc 是老版二进制格式.docx 是后来基于 XML 的压缩包格式。i2 Analysts Notebook 8 时期老模板导出的往往是 .doc在新版 Office 里打开会触发兼容模式。而你在导入场景里拿到的 .doc也可能因为保存工具的差异内部结构五花八门。.doc 文件的开头是一段 OLE 复合文档头不是普通文本流你不能直接按文本去读。有些“ .doc”实际是 PDF 换了个后缀或者是一个有格式的 HTML 文件这类文件用传统方式根本打不开。从 .doc 里复制出来的文本编码经常是 GB2312 或 GB18030不是 UTF-8直接进 i2 导入向导就是一片乱码。所以我在处理 i2 相关的 .doc 时第一条准则永远是先验证文件真实格式再决定走哪条路。别拿到 .doc 就急着解析先看文件头几秒钟就能省下后面两小时的排错时间。2.3 先定格式再动手你的文档是“给人读”还是“给机器算”第三个要提前想清楚的问题是这份 .doc 最终是给人读的报告还是给机器解析的数据源。给人读的场景重点是版面、图例、可读性导出时要管的是纸张方向、字体、图表的清晰度给机器算的场景重点是字段切分、编码、日期格式的一致性。这两种目标对内容的组织方式完全不同。我在实际项目中见过不少血泪教训有人拿一份排版精细的 .doc 当数据源结果程序解析出来的全是表格边框和空行还有人把临时导入用的清洗文本文件直接打印成报告版面乱成一团。同一份 .doc 不要试图同时完美满足两个目标先定角色再决定后面的每一步操作。2.4 文件格式快检用两条命令判断 .doc 真假不管你是要导入还是要导出拿到 .doc 的第一步都应该是验证文件格式。我习惯用一个最简单的办法读文件头。下面这段命令在任何常见环境下都能跑# 查看文件类型与真实编码特征 file 目标报告.doc # 读取文件前 8 字节判断是否老版 OLE 复合文档 head -c 8 目标报告.doc | od -An -tx1如果输出里能明确看到这条开头的特征说明这确实是个老版二进制 .doc如果看到的内容是PK那它其实是个 docx 压缩包只是后缀叫 .doc如果看到的是%PDF那它本质上是个 PDF。逻辑说明很简单老版 .doc 的 OLE 复合文档头固定以D0 CF 11 E0 A1 B1 1A E1开头这是一条硬性特征不会变。参数说明就一个——head -c 8只读 8 个字节避免把大文件整个加载到内存任何环境都能秒出结果。3. 把 .doc 当数据源从文档清洗到构建链接图3.1 从 .doc 到纯文本不直接解析二进制先转成中间格式如果你手里的 .doc 是数据源最忌讳的操作就是直接写程序去读二进制。老版 .doc 的段落、表格、样式全部混在 OLE 结构里直接解析等于自己造一个 Word 解析器成本高且根本不可维护。常见做法是先把 .doc 转成纯文本或 CSV再做字段清洗。我一般会先用工具完成一次“降级转换”把 .doc 变成 UTF-8 编码的纯文本文件# antiword 提取 .doc 中的文本输出到 txt antiword -m UTF-8 目标报告.doc 目标报告.txt # 若提取出的文本是 GBK 编码转换为 UTF-8 iconv -f GB18030 -t UTF-8 目标报告.txt 目标报告_utf8.txtantiword 这个工具的用途就是提取老版 .doc 里的可读文本不保留复杂排版这对数据导入来说反而是好事因为我们要的只有字段内容。第一条命令里的-m UTF-8是强制指定映射文件让输出统一成 UTF-8 编码避免后续导入 i2 时编码打架。第二条是兜底逻辑有些 .doc 提取出来还是 GB18030 编码如果不转码后面进入 i2 的文本导入向导时会直接乱码。注意如果 antiword 处理不了的加密或损坏文件那就回到 Word 里手动另存为 txt再走后续流程。3.2 用脚本把名单切成实体、链接和属性拿到干净的文本后第二步是把它整理成结构化表格。以最常见的“通话记录”或“资金往来”文档为例原文每行通常长这样张三|李四|资金往来|2023-05-01。你需要做的是把不同位置的字段拆出来形成实体列表和链接列表。下面这段脚本解决的就是这个环节import csv relations [] entities set() seen_pairs set() with open(目标报告_utf8.txt, encodingutf-8) as f: for line in f: line line.strip() if not line or line.startswith(#): continue # 跳过空行和注释行 parts line.split(|) if len(parts) ! 4: print(f[警告] 跳过异常行: {line}) continue src, dst, rel, dt [p.strip() for p in parts] if not src or not dst: continue entities.add(src) entities.add(dst) # 用排序元组做去重只保留一条无向关系 pair_key tuple(sorted([src, dst])) if pair_key in seen_pairs: continue seen_pairs.add(pair_key) relations.append((src, dst, rel, dt)) with open(人员关系_导入.csv, w, newline, encodingutf-8) as f: w csv.writer(f) w.writerow([source, source_type, destination, destination_type, relationship, date]) for src, dst, rel, dt in relations: w.writerow([src, Person, dst, Person, rel, dt]) print(f实体数: {len(entities)}) print(f链接数: {len(relations)})这段代码的逻辑分三块第一块逐行读取清洗后的文本按|切分字段并做异常行过滤保证不完整数据不会混进导入文件第二块维护entities集合和seen_pairs集合完成实体去重和无向关系去重第三块把结果写成 CSV列名source、source_type、destination、destination_type是给后面 i2 导入向导做字段映射用的。参数说明集中在split(|)上如果你的源文档用的是逗号、Tab 或全角竖线这里要同步改。另外sorted([src, dst])的去重策略只适用于无向关系如果业务上明确“A 打给 B”和“B 打给 A”是需要区分的两种链接就去掉这一段去重逻辑改用别的方式。3.3 导入向导的关键参数实体类型、链接方向、时间格式清洗好的 CSV 还不能直接进图需要在 i2 Analysts Notebook 8 的文本导入向导里做三组映射。第一组是实体映射把source和destination两列对应到 Person 实体类型。如果你文档里还有账号、地址、手机号需要分别映射到不同的实体类型比如 BankAccount、Address、Phone而不是一刀切全部设成 Person。第二组是链接映射把relationship列对应到链接类型字段。这里有个常见错误——把关系类型当成链接的“方向”来填。方向是由源实体和目标实体决定的关系类型只是语义标签。i2 里的链接一般有 A→B 的方向方向在导入时由源列和目标列的位置决定。我在实际项目里习惯为每一种业务关系单独建一个链接类型比如“资金往来”“通话记录”“亲属关系”不要用一个通配类型名不然图上颜色和样式完全无法区分。第三组是时间映射把date列绑定到时间事件。i2 的时间线功能依赖这个字段如果日期格式不统一时间线就会变成一堆堆在原点上的点。建议所有日期先在脚本里统一成YYYY-MM-DD字符串整数或 Excel 序列号不要直接放进导入文件。时间格式设置里选“自定义”输入yyyy-MM-dd绝大部分场景都能对上。3.4 导入后建模用颜色和图例区分信息来源数据导入不是终点导入只是把文本变成了裸实体和裸链接。实际业务里从不同 .doc 文件导入的数据需要区分来源否则后期排查会非常痛苦。我的做法是给不同来源文件的数据加上一个“来源文档”属性然后在图例里针对这个属性做颜色区分。举例来说来源 A 的实体用橙色边框来源 B 的实体用蓝色边框两批数据交叉的地方自然就能看出重合点。这一步的要点是不要在一开始就给实体加太多属性。导入前只保留真正参与分析的字段人员姓名、账号、时间、关系类型、来源文档。至于其他杂项如备注、年龄、地址先放进属性面板备用不要全部堆到图上的标签里。否则图上每一个节点都挂着一串文字视觉分析的效率会断崖式下降。4. 把分析图导出成 .doc 报告最小可复现流程4.1 导出前的图表治理命名、颜色、图例从图到 .doc 的方向常见需求是把 i2 Analysts Notebook 8 里已经成型的图生成为一份 Word 报告。但很多人直接点导出出来的 Word 文档要么图例缺了一块要么节点标签糊成一片。导出前必须先把图本身治理一遍。实体命名规整图里每个节点的显示名要能自解释别出现“实体 205”“Entity 12”这类默认名。统一视觉编码同类型实体用同一颜色和形状等级感用边框粗细表达不要五颜六色乱标。打开图例面板i2 里图例会记录实体类型、链接类型和对应的颜色样式导出报告时图例会作为独立段落生成。我一般会在图治完后先放大到“适合页面”视图确认图上没有大量重叠的标签再进入导出向导。4.2 导出向导里的三个参数组模板、页面布局、内容范围导出 Word 报告的向导通常涉及三组参数分别控制报告的外壳、版面和内容范围。先选模板模板决定页眉页脚、封面和章节结构。如果公司有统一报告格式优先用自制模板没有的话先用自带模板。这里面最容易出错的是模板里嵌的字体老模板默认字体对中文字符支持奇差导出的 .doc 在另一台机器上打开标题直接变成方框。建议在模板里把正文和标题的中文字体显式改成宋体或黑体。第二组是页面布局。分析图大多是横宽比例导出报告时纸张方向必须选“横向”大小看图的复杂程度常见的是 A4 横向或 A3。页边距适当收窄一点给图和属性表留白。还有缩放选项选“适合页面宽度”不要选“原始大小”——原始大小会把一张超宽的图切成好几段Word 页面根本看不全。第三组是内容范围。你可以选择导出整个图、当前选中的几个节点、或者按实体类型过滤后的子图。我的建议是如果图太大不要整图导出先按业务主题拆分成多个子图每个子图单独导一个章节。否则一张几百个节点的巨图塞进 Word 里浪费纸张不说读的人什么也看不出来。参数设置归纳下来就是模板选对字体、纸张用横向、范围控到可视规模。4.3 导出后的验证文件头、图片分辨率、附件完整性导出完成后不要急着发出去先用前面提到的文件头判断方式确认输出的真是 .doc。有些向导生成的报告实际是 docx只是后缀被写成了 .doc。这一步能用三条命令完成# 验证输出文件格式 file 分析报告.doc # 若需要快速检查里面是否嵌入了图表位图解包后统计图片 unzip -l 分析报告.docx | grep -i media | wc -l第二条命令的前提是你确认输出其实是 docx因为 docx 才是一个 zip 包。如果grep -i media统计出的图片数是 0说明图没有成功嵌入报告里只有文字没有分析图这是导出前忘了勾选“包含插图”之类选项造成的。逻辑说明就在这里格式验证要放在打开文档之前一旦用 Word 打开后再保存文件结构就可能被改写后面想定位到底哪一步出了问题难度会成倍增加。4.4 在报告里保留“人可读”的结论属性表和时间线一起导出一份交付级的分析报告光有图是不完整的。常见做法是在图之后追加两部分内容关键实体属性表和事件时间线。属性表用来回答“这些人是谁”的问题时间线用来回答“事情的先后顺序”的问题。如果向导里没有提供这两种内容类型可以导出图后在 Word 里手工补一个简表把每个关键实体的核心属性列出来再附一串时间事件。我见过很多分析报告翻车不是图画得有问题而是没有把图里的信息转译成人能直接读的结论。图是思考工具Word 报告是沟通工具两者不能互相代替。导出完成后至少要在报告里用三到五句话写明主要关系、关键节点、时间上的异常点。5. i2 Analysts Notebook 8 导出/导入 .doc 的常见问题与避坑5.1 导出报告在另一台电脑打开时格式错乱现象在同一台机器上生成的 .doc 一切正常换一台电脑用 Word 或 WPS 打开图表位置跑偏文本框叠在一起甚至提示文件损坏。原因老版 .doc 通过 OLE 对象嵌入图表而模板里又引用了当前机器特有的字体和页面设置。换机器后字体缺失Word 自动替换版式图表和文字段落之间就发生了挤压。解决导出后第一时间用目标环境实际打开一次。如果确认字体缺失去模板里把所有字体改成通用中文字体如果还是不行用转换脚本或打开后另存为 docxdocx 对版式兼容好得多。我这几年实际用的办法是导出 .doc 后直接再存一份 PDF 用于对外分发.doc 只留作可编辑原件避免对方机器的字体环境不可控。5.2 导入时中文全部变成问号或方框现象从 .doc 转出来的 txt 用记事本打开正常但进 i2 Analysts Notebook 8 的导入向导后中文属性全部变成???或方框。原因编码不匹配。txt 用的是 GB18030而导入向导默认按 UTF-8 读取或者 i2 运行环境里的地区语言设置不是中文系统。解决所有导入文件在进向导之前强制用 iconv 转成 UTF-8 无 BOM 格式。转换完成后不要用记事本直接另存为记事本的“UTF-8 带 BOM”会往文件头塞三个字节有些解析器会把 BOM 当成字段内容导致第一列表头错位。我在代码里统一用encodingutf-8写文件就是避免带 BOM。5.3 导入后大量链接重复或方向反了现象导入完成后图上出现完全重复的链接或者业务上的“打给”在网络中显示成反向。原因源文档本身存在同一关系的正反两条记录清洗脚本里没有去重导入向导里的源列和目标列映射颠倒。解决清洗阶段做一次无向关系去重前面脚本里的sorted([src, dst])就是干这个的。但要注意去重只适合无向关系。如果业务上有向比如“A 转账给 B”不能等同于“B 转账给 A”就去掉去重改为把源列和目标列映射到正确的方向字段上。最稳妥的验证办法是导入后随机挑三到五条已知关系在图上点击查看属性确认方向和源数据一致再继续。5.4 时间线一片空白或时间点全部堆在一起现象导入之后实体和链接都在但时间线视图为空或者所有事件挤在同一天。原因日期字段被当成了文本属性而不是可解析的时间或者日期格式里含有时分秒但向导配置里只映射了日期还有一种原因是 Excel 日期序列号没有转换。解决在清洗脚本里统一把所有时间列重排成YYYY-MM-DD如果还要保留时间就加一层HH:mm:ss。进入导入向导时明确把时间列映射为时间事件而不是普通属性。如果时间字段解析失败向导一般会在日志里输出类似“时间格式无法识别”的提示这时候回去检查原始文本里是否有全角空格或除日期外的杂字符。5.5 导出的图在 Word 里缩成一团看不清现象报告生成后整个图缩得很小几乎看不清任何标签。原因导出前缩放级别不合适。i2 导出报告时常按“当前视图比例”快照如果你的视图缩得太小快照会跟着缩小如果视图放得太大快照又被裁剪掉一半。解决导出前先将图缩放到 100% 并重置视图居中再在页面设置里选定“适合页面宽度”。如果图本身太大就不要硬塞一张图按主题拆成多个子图分别导出。还有一个技巧把不必要的标注气泡隐藏掉再导出这些气泡在屏幕上很醒目但进 Word 后会盖住关键链接。6. 把工具链再往前推一步从静态报告到可刷新数据包如果你已经稳定跑通了导入和导出接下来值得花半天时间把这套流程固定下来。我见过不少分析团队每次做报告都手动走一遍“从 Word 转文本、从文本改 CSV、从 CSV 导入、再导出 Word”流程一长中间就会有人偷懒跳过清洗或验证错误率直线上升。值得做的不是立刻写大型自动化系统而是先形成两个固定产物清洗脚本和检查清单。清洗脚本负责把 .doc 到导入文件的重复劳动固定下来。你只需要维护一份字段映射规则把源文档里的列名对应到 i2 的目标属性。检查清单则涵盖每次导入导出后必做的三步文件头格式验证、中文显示抽查、时间线抽样比对。我过去一年在各式模拟项目里形成的个人习惯是每次从 .doc 导入数据后不看整体图先抽出三到五条已知的业务关系逐条核对属性和方向每次导出报告后不直接发先用脚本验证文件头并统计嵌入图片数量。这两个动作加起来不到五分钟却挡住了绝大部分低级错误。如果你想走得更远可以把这个流程映射成一个可刷新的数据包。具体做法是把清洗后的 CSV 作为主数据文件之后每次拿到新的 .doc 都只增量更新这个 CSV再重新导入 i2 生成图表。这样做的好处是你的分析图不再是某个时刻的静态快照而是一个随数据更新可再生的分析资产。后续再接到新的数据源时只需要扩展字段映射不用重新发明导入方法。复盘我自己的踩坑经历印象最深的不是某个复杂的技术问题而是导出前忘了检查模板字体导致整套报告在交付时打开全是方框。那次以后我把验证步骤前置到了模板修改阶段从此再没在这类问题上浪费时间。技术上的东西都是可学的真正的区别在于你愿不愿意把重复劳动固化成步骤。希望这篇笔记能帮你在 i2 Analysts Notebook 8 和 .doc 的往返里少踩几个坑把精力留到分析本身上去。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询