Python - среднее количество слов для нескольких папок - PullRequest
0 голосов
/ 30 апреля 2020

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

corpus - french - negative - [text files]
corpus - french - positive - [text files]
corpus - german - negative - [text files]
corpus - german - positive - [text files]

Вот код, который я написал до сих пор:

import glob

files_list = glob.glob("corpus/*/*/*")

for path in files_list:
    elems = re.split("\\\\", path)
    corpus, ln, classe, nom = elems
    file = open(path, mode="r", encoding="utf", errors="ignore")
    read_file = file.read()
    words = read_file.split()
average = sum(len(word) for word in words) / len(words)
print(ln, classe, average)

Моя цель состоит в том, чтобы создайте код, который дает среднее количество слов для всех текстовых файлов, упорядоченных по языку и классу (положительный / отрицательный). Поэтому я хочу, чтобы результаты выглядели так:

french negative 34.2
french positive 23.4
german negative 9.3
german positive 8.23

Вот что я получаю из функции печати: german positive 9.416666666666666

Файлы - это просто твиты, сохраненные под именами 1.txt, 2.txt и др. c.

1 Ответ

0 голосов
/ 01 мая 2020

Поэтому я попросил своего профессора и реализовал его предложения, чтобы получить этот код, который подсчитывает общее количество слов (токенов) в каждой папке и систематизирует результаты так, как я хотел, чтобы они были:

import glob

files_list = glob.glob("corpus/*/*/*")

dic = {}

for path in files_list:
    elems = re.split("\\\\", path)
    corpus, ln, classe, nom = elems
    file = open(path, mode="r", encoding="utf", errors="ignore")
    read_file = file.read()

    words = read_file.split(' ')

    #print(ln, classe, nom, len(words))

    dic.setdefault(ln, {})
    dic[ln].setdefault(classe, 0)

    dic[ln][classe]+=len(words)

    file.close()

print(dic)

Это код дал это в виде печати: {'french': {'negative': 4982, 'positive': 1807}, 'german': {'negative': 25140, 'positive': 6817}}

Так как я знаю, сколько файлов в каждой папке, я просто сделал средние значения вручную, что не самый автоматический c способ сделать это, но по крайней мере это сделало работу.

...