У меня есть прусский газетный корпус, охватывающий годы с 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".
Заранее спасибо.
Редактировать: Быстрое исправление будет состоять в том, чтобы перебрать все файлы, прочитать все файлы, начинающиеся с того же года, и записать содержимое в один новый файл за каждый год.