我想知道是否有人可以帮助我通过一个代码片段,演示如何训练朴素的贝叶斯分类器使用特征频率方法,而不是特征的存在。
我假设下面如第6章所示的link text是指使用Feature Presence(FP)创建一个featureset-
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行,它创建了一个包含所有单词的列表。
在第二行中,最常用的是2000个单词。
3功能的定义
4转换文档列表(我认为它必须是列表)并将列表转换为集合。
5声明字典
在所有最频繁的2000个单词中重复6次
7创建一个字典,其中键为“contains(theword)”,值为true或false。如果文档中有单词,则为True;否则为false
8返回显示文档是否包含最常用的2000个单词的字典。
这能回答你的问题吗?
对于训练,创建适当的频率检测器,可以用来创建probdist,然后可以传递到NaiveBayesClassifier。但这种分类实际上适用于使用布尔值而不是频率的特征集。因此,如果您想基于FreqDist进行分类,就必须实现自己的分类器,它不使用NLTK特性集。
这里有一个方法可以帮助您:
相关问题 更多 >
编程相关推荐