2014-10-03 3 views
1

У меня этот код. У меня есть две функции. Как мне собрать две функции вместе?Поезд двух функций вместо одного

from textblob import TextBlob, Word, Blobber 
from textblob.classifiers import NaiveBayesClassifier 
from textblob.taggers import NLTKTagger 
import re 
import nltk 



def get_word_before_you_feature(mystring): 
    keyword = 'you' 
    before_keyword, keyword, after_keyword = mystring.partition(keyword) 
    before_keyword = before_keyword.rsplit(None, 1)[-1] 
    return {'word_after_you': before_keyword} 


def get_word_after_you_feature(mystring): 
    keyword = 'you' 
    before_keyword, keyword, after_keyword = mystring.partition(keyword) 
    after_keyword = after_keyword.split(None, 1)[0] 
    return {'word_after_you': after_keyword} 
    classifier = nltk.NaiveBayesClassifier.train(train) 



lang_detector = NaiveBayesClassifier(train, feature_extractor=get_word_after_you_feature) 
lang_detector = NaiveBayesClassifier(train, feature_extractor=get_word_before_you_feature) 


print(lang_detector.accuracy(test)) 
print(lang_detector.show_informative_features(5)) 

Это выход, который я получаю.

word_before_you = 'делать' refere: GENERI = 2,2: 1,0
word_before_you = 'когда' GENERI: refere = 1,1: 1,0

Это только кажется, чтобы получить последнюю функцию. Как получить классификатор для обучения обеих функций вместо одного.

ответ

1

Вы определяете lang_detector дважды, а второе определение просто переопределяет первое. Определить функция экстрактора, которая возвращает словарь функций, причем каждое имя функции является ключом. В вашем случае, вы бы определить get_word_features(mystring) и он может вернуться словарем как это:

return { 
    'word_after_you': after_keyword, 
    'word_before_you': before_keyword 
     } 

Остальное, как вы делали это: передать функции детектора функции конструктору классификатор, и изучить результаты.

lang_detector = NaiveBayesClassifier(train, feature_extractor=get_word_features) 
lang_detector.show_most_informative_features(5) 
+0

Благодарим за консультацию. Он работает сейчас! – user3078335

Смежные вопросы