中文垃圾邮件分类。2种特征提取,词袋特征,IFIDF分布特征,贝叶斯NB,LR,SVM各自表现的实战示例代码

2023-11-08

结论:

数据:

ham_data.txt

spam_data.txt

stop_words.utf8

数据处理:

"""

@author: liushuchun
"""
import re
import string
import jieba

# 加载停用词
with open("dict/stop_words.utf8", encoding="utf8") as f:
    stopword_list = f.readlines()


def tokenize_text(text):
    tokens = jieba.cut(text)
    tokens = [token.strip() for token in tokens]
    return tokens


def remove_special_characters(text):
    tokens = tokenize_text(text)
    pattern = re.compile('[{}]'.format(re.escape(string.punctuation)))
    filtered_tokens = filter(None, [pattern.sub('', token) for token in tokens])
    filtered_text = ' '.join(filtered_tokens)
    return filtered_text


def remove_stopwords(text):
    tokens = tokenize_text(text)
    filtered_tokens = [token for token in tokens if token not in stopword_list]
    filtered_text = ''.join(filtered_tokens)
    return filtered_text


def normalize_corpus(corpus, tokenize=False):
    normalized_corpus = []
    for text in corpus:

        text = remove_special_characters(text)
        text = remove_stopwords(text)
        normalized_corpus.append(text)
        if tokenize:
            text = tokenize_text(text)
            normalized_corpus.append(text)

    return normalized_corpus

特征提取

"""

@author: liushuchun
"""

from sklearn.feature_extraction.text import CountVectorizer


def bow_extractor(corpus, ngram_range=(1, 1)):
    vectorizer = CountVectorizer(min_df=1, ngram_range=ngram_range)
    features = vectorizer.fit_transform(corpus)
    return vectorizer, features


from sklearn.feature_extraction.text import TfidfTransformer


def tfidf_transformer(bow_matrix):
    transformer = TfidfTransformer(norm='l2',
                                   smooth_idf=True,
                                   use_idf=True)
    tfidf_matrix = transformer.fit_transform(bow_matrix)
    return transformer, tfidf_matrix


from sklearn.feature_extraction.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

中文垃圾邮件分类。2种特征提取,词袋特征,IFIDF分布特征,贝叶斯NB,LR,SVM各自表现的实战示例代码 的相关文章

随机推荐

  • 工作能力构架框架图——我对工作的理解

    工作架构图 最近对工作内容进行了一次review 归纳如下 做简单地分享 job层 job层是我们最容易理解的一层 即我们平时的工作title 可能是销售 售前 产品等等 那么做产品的人能不能做售前呢 我想 肯定可以 因为在人力资源市场上
  • 解决eclipse出现launch failed,binary not found 的问题

    解决eclipse出现launch failed binary not found 的问题 仅作为解决问题的记录 问题描述 1 之前一直用eclipse写C 文件 后面学了java就用eclipse写了一些 java文件 但是偶然一次想要再
  • ValueError: column index (256) not an int in range(256)

    pandas 保存为xls时最大列为256 改为保存csv格式可避免该限制 解决方法 pd DataFrame in shp pre to csv 各区站点 file 14 17 csv
  • 软件开发管理参考网站

    BDD http en wikipedia org wiki Behavior Driven Development Scrum http zh wikipedia org zh Scrum UserCase http www hudong
  • Kubernetes 资源管理:最大化集群性能

    今天是 DevOps云学堂 与你共同进步的第 54天 Kubernetes 资源管理是部署和管理容器化应用程序的一个关键方面 它允许管理员控制系统不同部分之间计算资源的分配 例如CPU 内存和存储 有效的资源管理可确保应用程序获得正确运行所
  • Latex 字体的设置

    一 字体族的设置 1 说明 1 字体命令 textrm Roman Family 在花括号内的字体都是Roman Family 字体 2 字体声明 rmfamily Roman Family 该命令下面的字体都是是Roman Family字
  • Vim几种跳转方式

    Vim几种跳转方式 ps 以下时我常用的一些跳转指令 用于参考和复习记忆 还有一些后续会更新 文件内跳转 移动光标 普通模式下左h 右l 上k 下j 可以使用数字 hlkj 实现跳跃式移动 字符间跳转 跳转到当前字符的前面 普通模式下i 跳
  • CesiumJS三维案例

    WebGL近几年越来越被人们所关注 但是二三维开发难度也比普通web要高出许多 不管我们是在在开发或者是学习过程中 往往需要耗费大量的时间去查阅资料和研究官方案例 让本来就非常紧张的而宝贵的精力卷到了不关紧要的地方 而大多二三维的包 ope
  • apk文件结构解析一

    Apk文件用WINRAR压缩软件解压缩后 如下图所示 主要是三个文件 lib META INF res 和三个文件夹 AndroidManifest xml classes dex resources arsc 用工具展开可以看到如下所示的
  • Protobuf在java中的简单使用实例

    TTprotobuf是一种跨语言的数据转换协议 由google开源的 已支持大部份语言 在一般的数据交互过程中都是使用json xml等来做数据的转换 这其中涉及复杂的解析与序列化反序列化问题 如果在大量数据并发请求时 也会导致性能问题 p
  • Vue-过滤器

    Vue 过滤器 过滤器 过滤器 Filters 是vue 为开发者提供的功能 常用于文本的格式化 过滤器可以用在两个地方 插值表达式 和 v bind 属性绑定 过滤器应该被添加在JavaScript 表达式的尾部 由 管道符 进行调用 p
  • 图像增强之同态滤波python实现——20221204工作总结

    目录 参考 同态滤波python实现 代码 效果 参考 1 https wenku baidu com view 4eb598180a12a21614791711cc7931b765ce7ba9 html wkts 167005422236
  • IDEA 调试前端代码JS 及安装JetBrains IDE Support

    收藏从未间断 学习从未开始 不需要F12窗口 不需要JS代码写debugger断点 不需要写console log 输出 一 JetBrains IDE Support 1 必须使用谷歌浏览器 安装JetBrains IDE Support
  • go 进阶 sync相关: 一. sync.atomic​ 原子操作

    sync atomic 原子操作 一 sync atomic 基础 sync atomic Value 二 sync atomic 源码分析 1 ifaceWords 2 Store 添加 3 Load 获取 一 sync atomic 基
  • c#Replace用法

    string txt 333 333 txt Replace Console WriteLine 赋值前 txt txt txt Replace Console WriteLine 赋值后 txt
  • Grape 依赖管理器

    本文参考自Groovy文档 The Grape dependency manager 本文代码大部分来自Groovy官方文档 Groovy自带了一个嵌入式的jar依赖管理器 这个管理器的主要作用应该是配合Groovy脚本使用 让我们不需要任
  • Struts2 几种校验

    1 Struts2手动校验 1 重写actionsupport类的validate方法 action需要继承ActionSupport类 public class StrutshAction extends ActionSupport 在v
  • 三种基于感知哈希算法的相似图像检索技术

    大家都用google或baidu的识图功能 上面就是我搜索一幅图片的结果 该引擎实现相似图片搜素的关键技术叫做 感知哈希算法 Perceptual hash algorithm 它的作用是对每张图片生成一个 指纹 fingerprint 字
  • Unity插件-NGUI

    1 基本使用 NGUI gt 选项 gt Reset Perfab Toolbar 显示预制体UI组件 可以直接拖拽到场景中 使用NGUI 必须要有一个UIRoot作为父组件 在场景中的UIRoot中右键单击 然后点Create来创建组件
  • 中文垃圾邮件分类。2种特征提取,词袋特征,IFIDF分布特征,贝叶斯NB,LR,SVM各自表现的实战示例代码

    结论 数据 ham data txt spam data txt stop words utf8 数据处理 author liushuchun import re import string import jieba 加载停用词 with