码迷,mamicode.com
首页 > 其他好文 > 详细

Part of Speech Tagging

时间:2015-04-24 00:48:43      阅读:304      评论:0      收藏:0      [点我收藏+]

标签:

Natural Language Processing with Python

Charpter 6.1

suffix_fdist处代码稍微改动。

 1 import nltk
 2 from nltk.corpus import brown
 3 
 4 def common_suffixes_fun():
 5     suffix_fdist=nltk.FreqDist()
 6     for word in brown.words():
 7         word=word.lower()
 8         suffix_fdist[word[-1:]] +=1
 9         suffix_fdist[word[-2:]] +=1
10         suffix_fdist[word[-3:]] +=1
11     most_freqent_items=[it for it in sorted(suffix_fdist.items(),key=lambda x:(-x[1],x[0]))[:100]]
12     return [su[0] for su in most_freqent_items]
13 
14 common_suffixes = common_suffixes_fun()
15 
16 def pos_features(word):
17     features={}
18     for su in common_suffixes:
19         features[endswith(%s) % su]=word.lower().endswith(su)
20     return features
21     
22 def test_pos():
23     tagged_words = brown.tagged_words(categories=news)[:5000]
24     featuresets=[(pos_features(word),tag) for (word,tag) in tagged_words]
25     
26     size= int(len(tagged_words)*0.1)
27     train_set, test_set = featuresets[size:],featuresets[:size]
28     classifier=nltk.NaiveBayesClassifier.train(train_set)
29     
30     print nltk.classify.accuracy(classifier,test_set)
31     classifier.show_most_informative_features(5)

运行结果为:

0.652
Most Informative Features
endswith(o) = True TO : NN = 423.2 : 1.0
endswith(es) = True DOZ : NN = 319.5 : 1.0
endswith(om) = True WPO : NN = 319.5 : 1.0
endswith(as) = True BEDZ : IN = 303.3 : 1.0
endswith(s) = True BEDZ : IN = 303.3 : 1.0

 

Part of Speech Tagging

标签:

原文地址:http://www.cnblogs.com/gui0901/p/4452192.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!