su anda bır tane Part of speech ve taggıng konularıyla ılgılı nltk ıle kelımelerın taranılması ve negatıv/pos olarak sınıflandırlması uzerıne bır proje uzeırne ugrasıyorum
kodlar kulandıgım proejedendır
part of speech ıle ılgılenen arkadasların ısıen yarabılır



from nltk.tag.sequential import SequentialBackoffTagger
from nltk.probability import FreqDist
from nltk.tag import ClassifierBasedPOSTagger
from concept.stems import phonetics
from concept.stems.metaphone import dm

class PhoneticClassifierBasedPOSTagger(ClassifierBasedPOSTagger):
	def __init__(self, double_metaphone=False, metaphone=False, soundex=False, nysiis=False, caverphone=False, *args, **kwargs):
		self.funs = {}
		
		if double_metaphone:
			self.funs['double-metaphone'] = lambda s: dm(unicode(s))
		
		if metaphone:
			self.funs['metaphone'] = phonetics.metaphone
		
		if soundex:
			self.funs['soundex'] = phonetics.soundex
		
		if nysiis:
			self.funs['nysiis'] = phonetics.nysiis
		
		if caverphone:
			self.funs['caverphone'] = phonetics.caverphone


		ClassifierBasedPOSTagger.__init__(self, *args, **kwargs)
	
	def feature_detector(self, tokens, index, history):
		feats = ClassifierBasedPOSTagger.feature_detector(self, tokens, index, history)
		s = tokens[index]
		
		for key, fun in self.funs.iteritems():
			feats[key] = fun(s)
		
		return feats

class MaxVoteBackoffTagger(SequentialBackoffTagger):
	def __init__(self, *taggers):
		self._taggers = taggers
	
	def choose_tag(self, tokens, index, history):
		tags = FreqDist()
		
		for tagger in self._taggers:
			tags.inc(tagger.choose_tag(tokens, index, history))
		
		return tags.max()