2017-02-17 1 views
0

У меня есть прусский газетный корпус, охватывающий годы с 1863 по 1894 год, и вы хотите использовать его во времени. Тело содержит примерно 2400 xml файлов, по одному файлу для каждой проблемы. Если бы я построил график ConditionalFreqDist, я бы получил график с 2400 точками данных по оси x, что делает график нечитаемым.Слияние данных точек в NLTK's ConditionalFreqDist

Как я могу объединить информацию о том же году, отображая среднее использование каждого слова в моем списке поиска u_input? Например: у меня есть 3 файла для 1863 года, ища слово «König» - король (среди других условий поиска), первый файл содержит 1 упоминание, второй файл 3 и третий файл 2. Я бы хотел, чтобы график только одна точка данных «1863» со значением «2».

Функция зарисовки:

def _plot_input(): 
    cfd = nltk.ConditionalFreqDist(
     (target, fileid[:-4]) # takes first 4 characters as lable names = year 
     for fileid in reader.fileids() # for all files in directory 
     for w in reader.words(fileid) # for all words in each file 
     for target in u_input 
     if w.lower().startswith(target) # includes words like 'könliglich' if search term was 'König' 
    ) 
    cfd.plot(title='Word usage over time in Prussian Newspapers') 

u_input список, содержащий слова, я анализирующих, reader мой объект corpusreader, файлы именуются как этот гггг-мм-dd.xml, например, "1867-03-06.xml".

Заранее спасибо.

Редактировать: Быстрое исправление будет состоять в том, чтобы перебрать все файлы, прочитать все файлы, начинающиеся с того же года, и записать содержимое в один новый файл за каждый год.

ответ

1

Чтобы извлечь год с имени файла, вы должны написать fileid[:4], а не fileid[:-4]. Как только вы это сделаете, у вас будет только столько позиций x, сколько лет в вашем корпусе. Это в точности эквивалентно «быстрому исправлению», которое вы предлагаете.

Однако значения y будут составлять итоговые значения за год, а не средние значения в течение каждого года, как вы просите. Если это действительно то, что вам нужно, отредактируйте свой вопрос, чтобы уточнить. (Я подозреваю, что то, что вам действительно нужно, составляет в среднем по сравнению с общим количеством слов в год, а все остальное - бред, если все ваши файлы не имеют одинакового размера.)

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