Форум сайта python.su
Всем привет!
Я пишу курсовую, нужно реализовать код на языке Python.
Не могли бы помочь в некоторых вопросах по синтаксису.
Я считал текстовый файл,разбил его на слова с помощью функции tokenize().
Дальше использую функцию FreqDist(),которая выводит мне в порядке убывания наиболее повторяющиеся слова в моём тексте.
fdist = nltk.FreqDist(my_tokenize)
Как мне изменить код чтобы в fdist сохранялись только первые 3 слова с наибольшей частотой повторения в тексте?
пробовал через цикл ,но не получилось, синтаксис плохо знаю)
Заранее спасибо.
Офлайн
наверное так?
fdist = nltk.FreqDist(my_tokenize)[:3]
Отредактировано doza_and (Июнь 10, 2012 22:21:38)
Офлайн
doza_andНе надо:
Но надо добавить обработку ошибок - вдруг там не будет 3 слов.
In [1]: a=[1] In [2]: a[:3] Out[2]: [1]
Офлайн
lavrtonнет, fdist не лист, а словарь
наверное так?
most_frequent = fdist.keys()[:3]
no_punkt = [word.lower() for word in my_tokenize if word.isalnum()] fdist = nltk.FreqDist(no_punkt) most_frequent = fdist.keys()[:3]
Офлайн
Спасибо большое за ответы!)
Ещё одна проблемка.
Программа должна определять тематику(жанр) считанного текста из файла.
Использовал в качестве библиотеки NLTK.
Проблема в последних строчках,видимо в test_docs.туда я заношу самые “популярные” слова из моего текста,и классификатор по ним ищет схожесть с словами из базы Brown.
# Text Classification Demo Version import nltk #Connect to library #nltk.usage(nltk.classify.ClassifierI) from nltk.corpus import brown import random f=open("C:\\Test\check.txt") text=f.read() f.close() words=nltk.tokenize.word_tokenize(text) #Split text on words stopw=open("C:\\Test\stopwords.txt") #Text including stop words stop=stopw.read() stopw.close() stopwords=nltk.tokenize.word_tokenize(stop) filteredtext = [t for t in words #Delete all stop words from input text if t.lower() not in stopwords] filtertext = [word.lower() for word in filteredtext if word.isalnum()] filttext=nltk.FreqDist(filtertext) test = filttext.keys()[:3] #Find 3 most popular words print test def word_feats(words): return dict([(word,True) for word in words]) train_docs = [(word_feats(brown.words(fileid)),category) for category in brown.categories() for fileid in brown.fileids(category)] test_docs = [test] classifier = nltk.classify.NaiveBayesClassifier.train(train_docs) print classifier.classify(test_docs)
Офлайн
Ksenon2611Видимо, в функцию classify необходимо передавать словарь
AttributeError: ‘list’ object has no attribute ‘copy’
... test_docs = word_feats(test)
Офлайн
reclosedev,даааа,Работает!!!
Спасибо большое тебе)
Офлайн