ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python NLTK代码片段,用于使用特征频率训练分类器(朴素贝叶斯)

2019-08-27 14:47:11  阅读:260  来源: 互联网

标签:stanford-nlp python nlp nltk


我想知道是否有人可以通过代码片段来帮助我,该代码片段演示了如何使用特征频率方法而不是特征存在来训练朴素贝叶斯分类器.

我认为下面第6章link text中所示的是指使用Feature Presence(FP)创建一个特征集 –

def document_features(document): 
    document_words = set(document) 

    features = {}
    for word in word_features:
        features['contains(%s)' % word] = (word in document_words)

    return features

请指教

解决方法:

在您发送的链接中,该功能是功能提取器,它只检查给定文档中是否存在这些单词.

以下是每行代码的完整代码:

1     all_words = nltk.FreqDist(w.lower() for w in movie_reviews.words())
2     word_features = all_words.keys()[:2000] 

3     def document_features(document): 
4          document_words = set(document) 
5          features = {}
6          for word in word_features:
7               features['contains(%s)' % word] = (word in document_words)
8          return features

在第1行中,它创建了所有单词的列表.

在第2行中,最常用的是2000个单词.

3功能的定义

4转换文档列表(我认为它必须是一个列表)并将列表转换为一个集合.

5宣布一本字典

6迭代所有最常见的2000个单词

7创建一个字典,其中键是’contains(theword)’,值为true或false.如果文档中存在该单词,则为True,否则为false

8返回字典,显示文档是否包含最频繁的2000个单词.

这回答了你的问题了吗?

标签:stanford-nlp,python,nlp,nltk
来源: https://codeday.me/bug/20190827/1741760.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有