zoukankan      html  css  js  c++  java
  • 机器学习11贝叶斯处理邮件分类问题------待更新

    1. 读邮件数据集文件,提取邮件本身与标签。

    列表

    numpy数组

    import csv
    path = r'C:UsersChen ZhenruiPycharmProjectsuntitled机器学习SMSSpamCollection'
    sms = open(path, 'r', encoding='utf-8')
    csv_reader = csv.reader(sms, delimiter='	')
    sms.close()

    2.邮件预处理

    • 邮件分句
    • 名子分词
    • 去掉过短的单词
    • 词性还原
    • 连接成字符串
    •  传统方法来实现
    •  nltk库的安装与使用
    
    
    import nltk
    from nltk.corpus import stopwords
    from nltk.stem import WordNetLemmatizer
    def preprocessing(text):
        tokens = []
        #text为文本内容(字符串)
        for sent in nltk.sent_tokenize(text):  # 分句
            for word in nltk.word_tokenize(sent):  # 分词
                tokens.append(word)
    
        # 去除停用词
        stops = stopwords.words("english")
        tokens = [token for token in tokens if token not in stops]
    
        # 词性标注
        nltk.pos_tag(tokens)
    
        # 词性还原
        lemmatizer = WordNetLemmatizer()  # 定义还原对象
        tokens = [lemmatizer.lemmatize(token, pos='n') for token in tokens]  # 名词
        tokens = [lemmatizer.lemmatize(token, pos='v') for token in tokens]  # 动词
        tokens = [lemmatizer.lemmatize(token, pos='a') for token in tokens]  # 形容词
    
        return tokens
    
    #开始预处理 sms_data
    = []#存放标签(x) sms_label = []#存放期望值(y) for line in csv_reader: sms_label.append(line[0]) sms_data.append(preprocessing(line[1])) print("标题内容:", sms_label) print("处理后内容:") for line in sms_data: print(line)

    pip install nltk

    import nltk

    nltk.download()     # sever地址改成 http://www.nltk.org/nltk_data/

    https://github.com/nltk/nltk_data下载gh-pages分支,里面的Packages就是我们要的资源。

    将Packages文件夹改名为nltk_data。

    网盘链接:https://pan.baidu.com/s/1iJGCrz4fW3uYpuquB5jbew    提取码:o5ea

    放在用户目录。

    ----------------------------------

    安装完成,通过下述命令可查看nltk版本:

    import nltk
    print nltk.__doc__

    2.1 nltk库 分词

    nltk.sent_tokenize(text) #对文本按照句子进行分割

    nltk.word_tokenize(sent) #对句子进行分词

    2.2 punkt 停用词

    from nltk.corpus import stopwords

    stops=stopwords.words('english')

    *如果提示需要下载punkt

    nltk.download(‘punkt’)

    或 下载punkt.zip

    https://pan.baidu.com/s/1OwLB0O8fBWkdLx8VJ-9uNQ  密码:mema

    复制到对应的失败的目录C:UsersAdministratorAppDataRoaming ltk_data okenizers并解压。

    2.3 NLTK 词性标注

    nltk.pos_tag(tokens)

    2.4 Lemmatisation(词性还原)

    from nltk.stem import WordNetLemmatizer

    lemmatizer = WordNetLemmatizer()

    lemmatizer.lemmatize('leaves') #缺省名词

    lemmatizer.lemmatize('best',pos='a')

    lemmatizer.lemmatize('made',pos='v')

    一般先要分词、词性标注,再按词性做词性还原。

    2.5 编写预处理函数

    def preprocessing(text):

    sms_data.append(preprocessing(line[1])) #对每封邮件做预处理

    3. 训练集与测试集

    4. 词向量

    5. 模型

  • 相关阅读:
    9.11 eventbus
    9.10,,,实现new instanceof apply call 高阶函数,偏函数,柯里化
    9.9 promise实现 写完了传到gitee上面了,这里这个不完整
    9.5cors配置代码
    9.5 jsonp 实现
    9.5 http tcp https总结
    9.3 es6 class一部分 and es5 class 发布订阅
    8.30 cookie session token jwt
    8.30vue响应式原理
    warning: LF will be replaced by CRLF in renard-wx/project.config.json. The file will have its original line endings in your working directory
  • 原文地址:https://www.cnblogs.com/renshenbenzuig/p/12924133.html
Copyright © 2011-2022 走看看