文档分类(特征提取)

import nltk
import random
from nltk.corpus import movie_reviews
documents = [(list(movie_reviews.words(fileid)), category)
             for category in movie_reviews.categories()
             for fileid in movie_reviews.fileids(category)]
random.shuffle(documents)
all_words = nltk.FreqDist(w.lower() for w in movie_reviews.words())
word_features=list(all_words.keys())[:2000]  #[word for (word, freq) in all_words.most_common(2000)]
def document_features(document):
    document_words = set(document)
    features = {}#
    for word in word_features:
        features['contains(%s)'% word] = (word in document_words)
    return features
print(movie_reviews.words('pos/cv957_8737.txt'))
print(document_features(movie_reviews.words('pos/cv957_8737.txt')))


这个来自于自然语言处理-Python第211页的一个例子。书是基于Python2写的,所以修改了一个地方word_features=list(all_words.keys())[:2000]

代码主要是检测目标文档中是否包含movie_reviews.words中的前2000 个词,包含的话返回true。

遇到的问题主要有1、 TypeError: 'dict_keys' object is not subscriptable

改成word_features=list(all_words.keys())[:2000]报错消失

2.return features缩进导致代码在那个地方break。返回的就只有一个特征的判断。修改后问题解决。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值