当前位置:
文档之家› 基于Python的文本分类系统开发研究_孙强
基于Python的文本分类系统开发研究_孙强
图 1 文本分类流程示意图 各环节对文本分 类系统 TmPy开发 提 出了 不同 需求 :输 入 环节需要灵活的文本处理 以及根 据需要 进行网页 抓取 ;预处 理 环节则包括文件格式解析 以及字 符编码 判定与转 换 ;文本索 引 环节涉及 字符串处理 、分词 软件自动 调用 、算法实现等 领域 ;特 征选择 、分类算 法和测试评估环节是系统核心环节 , 重点是矢 量 数据处理 、分类和优化算法设计等 。 由此可知 , 文本分类系统研 究与开 发过程 要求编 程语言 应 当具备优秀的字符串处理 、灵活的数值处理和算法实现能力 , 且 对全面需求均有较完善处理能力 , 而且由于涉及多个环节 , 编 写 程序易读易维护也有助于文本分类系统开发 。
0 引 言
文本分类 [ 1, 2] 研究 将一 篇文 章判 定为 预先 设定 类别 问题 , 相关 研究成果广 泛应用于 信息分发 、邮件过 滤 、网 页主题归类 、 查询结果分类 、网络内容安全等领域 。
在文本分类研究中 , 理论与实践环节之间相互紧密结合 :自 然语言理解 [ 3] 、特征选 择 [ 4] 、机器学 习 [ 5] 等学 科为 文本 分类 提 供了坚实的理论基础 ;文本分类还属于实践性很强的研究领域 , 索引项语义级别 的选 定 [ 6] 、特 征选 择方 式 [ 7] 的 选取 、不 同机 器 学习算法 [ 1] 的选用都需要大量实践操作来 进行检验 。
Abstract Inthispaper, wedescribetheconvenienceofapplyingPythoninthedevelopmentprocessoftextclassificationsystem.ThespecialitiesandadvantagesofPythoninthewholechainworksofdevelopmentareaddressed.AfinalsectionwillbedevotedtoexhibitsomeadvantagesofapplyingPythonintextclassification:theexamplesdemonstratedare:LinearKernelParameterSelectionwithDataVisualization andAdaptivekNNTextClassificationModel. Keywords Python Scientificprogramming Textclassification
.735
.854
以上算法全部由 Python实现 , 各个 环节具 体开发 过程从 图 形直观显示 、粘合现有软件 、算法实现等多个方 面展示了 Python 的开发特点 。
4 结 论
本文详述了 Python语言在文本分类 系统开 发时的 特点 , 并 以线性核参数寻优结 合可视 化与 自适应 kNN分 类算法 等来 具 体描述其特点 , 表明 Python适合作为文 本分类 等科学 计算领 域 的开发语言 。
选择合适的比值 ak, N作为 k步进停止标准 。 利用公开的搜狗 语 料库进行对比实验 , 精简版 本共 9个 类别 (N=9), 每个 类别 以 训练样本文件名切分 前 70%文 件为训 练集 , 后 30%为测 试集 , 以两分分词法进行分 词 , 信 息增益 方式选 择 6000 维特征 , 以 正 则化的 TFIDF为特 征权 重方 式 。 以 两个 样本 的余 弦值 为相 似 性度量 , 对比 结果见 表 1, 由 表 1可 知 , 无论是准 确率还 是召 回 率 , 自 适应 kNN方式均有明显提高 。
择 k为 N+1, 然后 k步进增加 N, 对比随着 k增大时新增加的 N
个近邻与目标样本的 平均相似程度以及原来选中近邻的平均相
似程度之比 :
∑∑ ak, N
=
N1 (k i=+1k)××NNSim(t, xi)
1 k×N-1 k×N i=0
Sim(t, xi)
(1)
随着在训练集上 分类准确 率的变 化 , 同 样以交 叉验证 方式
.816 .957
.755
.922
.699
.918
.685 .801
.728 .895
.637
.785
.739
.852
召回率
kNN adaptiveKNN
.745
.863
.755
.858
.725 .772
.845 .862
.710
.848
.751
.853
.701 .748
Hale Waihona Puke .855 .851.711
.849
综上所述 , Python的各种 特点使 得文 本分类 系统 各个 环节 的需求得以顺利实现 。
3 基于 Python的文本分类系统开发
本节结合文本分 类系统 TmPy开发 过程中的若 干环节 来具 体展示 Python语言开发的快捷与灵活 。
3.1 基于线性核函数的参数选择
线性核函数进行 文本分类需要考虑惩 罚因子 C的寻优 。 C 选择过大时容易受噪 声影响 , 过小时 又容易 产生学 习能力 不足 问题 。 利用 Python的黏合功能可以方便地调 用 LibSVM软 件相 关功能 , 设计算法遍历 C参 数 , 将输 出分 类准 确率 以图 形方 式 直观显示 。 以 LibSVM自带 heart数据为例 , 遍历 log(C)从 -15 到 10的处理结果如图 2所示 , 可见左侧较高准确率处 (C较小 ) 表现稳定 , 比右侧 (C较大 )更为可靠 。
丰富的标准库与第三方库 , 许多辅助环节如字符编码 、网络 信息抓取等已有实现 可以借鉴 , 从而可以避免重复开发 。
良好的嵌入扩展与 “胶水 ”能力 , 利用 “胶水 ”特性可将 已有 程序 “黏合 ”在一起自动运行 ;嵌入与扩 展可与其它 编程语 言互 操作 , 发挥混合语言编程的优势 。
相关研究的丰富积累 , 如同在其它众多科学计算领域一样 , Python在自然语言理解 、文 本处理和 机器 学习等 领域 也有 广泛 的研究 , 有许多优秀的相 关模块 与研究 专著 。 丰富 的研究 成果 为进一步研究提供了 坚实基础 。
表 1 kNN与自适应 kNN分类性能对比
文本类别 分类算法 C000008 C000016 C000014 C000024 C000013 C000022 C000020 C000010 C000023
Average
精确率
kNN adaptiveKNN
.929
.786
.760
.864
.695 .689
图 2 线性核函数参数时寻优示意图
3.2 自适应 kNN分类法
应用 kNN分类方法时需 要选择 适当 k值 , k过小 易受 噪声
数据影响 , 过大时又容易 受样本 类别先 验分布 影响 。 通常 采用
交叉验证方式选择合 适的 k。
考虑采用动态自 适应策略来选择 k, 对于 N类 样本 , 起 始选
参 考 文 献
[ 1 ] FabrizioS.Machinelearninginautomatedtextcategorization.ACM ComputingSurveys(CSUR), 2002, 34:1 -47.
[ 2 ] YangY.AnEvaluationofStatisticalApproachestoTextCategorization. InformationRetrieval, 1999(1):69 -90.
第 28卷第 3期 2011年 3月
计算机应用与软件 ComputerApplicationsandSoftware
Vol.28 No.3 Mar.2011
基于 Python的文本分类系统开发研究
孙 强 李建华 李生红
(上海交通大学电子工程系 上海 200240)
摘 要 介绍了 Python在文本分类系统开发过程中的便捷之处 , 讨论 了 Python在 整个开发 过程中 各个环 节的特 点与优 点 , 并 以 线性核函数参数寻优 结合数据可视化和自适应 kNN分类 算法为例具体展示了应用 Python语言开发文本分类系统的优点 。 关键词 Python 科学计算 文本分类
14
计算机应用与软件
2011 年
富的数据结构 、算法和标准库等方面均有体现 , 从而使 得 Python 代码易 于阅读和 维护 , 有利于涉及 多个环节 、多人参 与 、需 借鉴 参考他人研究成果等 情况的系统开发维护 。
内置常用数据结构与算法 , 不仅有利于提高程序易读性 , 且 使得开发重心集中在 文本系统本身关键算法实现方面 。
ON DEVELOPING PYTHON-BASEDTEXTCLASSIFICATION SYSTEM
SunQiang LiJianhua LiShenghong
(DepartmentofElectronicEngineering, ShanghaiJiaotongUniversity, Shanghai200240, China)
当然 , 如同常用编程语言一样 , Python也有其 不足之 处 , Python在运行性能方 面比 C、Fortran等 编译类 型语 言仍有 较明 显 差距 , 对于运算 密集型应用应 当考虑通 过将耗 费计算 量特别 大 的部分重写为 C模块供 Python调用 , 或 者通过胶水特性直 接调 用 C、Fortran等语言的已有程序来进行弥 补 , Python最大优势 在 于活跃和友好的社区 , 开发遇到问题可以得到及时真诚的反馈 , 进而完善文本分类系统 , 提高其实用性 , 并将其用于网络信息 处 理 、邮 件过滤等应用领域 。
2 Python在开发文本系统中的特点
Python具有许多特点 , 使得 其在 文本分 类等 科学计 算领 域 有广泛应用 。