2015-06-07 12 views
1

Я не супер опытный с Python, но я хочу сделать некоторые аналитики данных с корпусом, поэтому я делаю эту часть в NLTK Python ,Python NLTK - создание словаря из корпуса и сохранение числа тегов

Я хочу пройти весь корпус и сделать словарь, содержащий каждое слово, которое появляется в наборе данных корпуса. Я хочу, чтобы иметь возможность затем найти слово в этом словаре и найти количество раз, когда это слово появилось как часть речи (тега). Так, например, если бы я искал «собаку», я мог бы найти 100 именных тегов и 5 глагольных тегов и т. Д.

Конечная цель - сохранить этот файл как .txt или что-то еще и загрузить его в другой чтобы проверить вероятность того, что слово является тегом.

Я бы сделал это с помощью Counter и ngrams?

ответ

2

Поскольку вы просто хотите, чтобы POS свободных слов вам не нужны ngrams, вам нужен тэгированный корпус. Предполагая, что ваш корпус уже отмечен, вы можете сделать это так.

>>> from nltk.corpus import brown 
>>> wordcounts = nltk.ConditionalFreqDist(brown.tagged_words()) 
>>> wordcounts["set"].tabulate(10) 
VBN VB NN VBD VBN-HL NN-HL 
159 88 86 71 2 2 

ConditionalFreqDist в основном словарь Counter объектов, с некоторыми массовки придачу. Посмотрите на него в NLTK документы.

PS. Если вы хотите нормализовать свои слова до подсчета, используйте

wordcounts = nltk.ConditionalFreqDist((w.lower(), t) for w, t in brown.tagged_words()) 
+0

Хорошо, это работает очень хорошо! Благодаря! Можно ли использовать json для печати содержимого wordcounts в текстовый файл? –

+0

Почему бы и нет? Пойдите в город. – alexis

+0

json.dump (wordcounts, open ("corpus_dict.txt", 'w')) выводит текстовый файл бессмыслицы. Я предполагаю, что это связано с тем, что он представляет собой объект объектов? –