0
def add_lexical_features(fdist, feature_vector):
for word, freq in fdist.items():
fname = "unigram:{0}".format(word)
if selected_features == None or fname in selected_features:
feature_vector[fname] = 1
if selected_features == None or fname in selected_features:
feature_vector[fname] = float(freq)/fdist.N()
print(feature_vector)
if __name__ == '__main__':
file_name = "restaurant-training.data"
p = process_reviews(file_name)
for i in range(0, len(p)):
print(p[i]+ "\n")
uni_dist = nltk.FreqDist(p[0])
feature_vector = {}
x = add_lexical_features(uni_dist, feature_vector)
什么,这是试图做的是输出字的评语表的频率(p是评论列表,p [0]是字符串)。这是有效的......除了它是通过信,而不是我的话。
我还是NLTK的新手,所以这可能很明显,但我真的无法得到它。
例如,这个目前输出的东西像一个大名单:
{“一元模型:N”:0.0783132530120482}
这是好的,我认为这是正确的数量(时间数n出现在整个字母上),但我希望它是通过字,而不是通过字母。
现在,我也希望它通过bigrams来完成,一旦我可以通过单个单词来实现它,使双重单词可能很容易,但是我不太明白它,所以一些指导他们会很好。
感谢。
宾果,谢谢。我可以将它分成两个单词,每个单词都有分割的列表。我知道如何用nltk做到这一点,如果没有,没问题。 –