считаем последовательные пары букв в тексте

есть текст в файле txt

потому что так

потомучтотак

разбиваем пары всех комбинаций букв и считаем их повторы

по то му чт от ак
от ом уч то та

далее выводим это в виде таблицы
по = 1
то = 2
му = 1
и так далее ..

Для выполнения этой задачи можно использовать Python. Вот шаги, которые нужно выполнить:

Прочитать содержимое текстового файла.
Разбить текст на все возможные пары букв.
Посчитать частоту появления каждой пары.
Вывести результаты в виде таблицы.
Вот пример кода, который реализует эти шаги:

from collections import Counter
import pandas as pd

# Шаг 1: Прочитать содержимое текстового файла
def read_file(filename):
    with open(filename, 'r', encoding='utf-8') as file:
        return file.read()

# Шаг 2: Разбить текст на пары букв
def get_letter_pairs(text):
    # Удаляем пробелы и знаки препинания
    text = ''.join(filter(str.isalpha, text))
    pairs = [text[i:i+2] for i in range(len(text)-1)]
    return pairs

# Шаг 3: Посчитать частоту появления каждой пары
def count_pairs(pairs):
    return Counter(pairs)

# Шаг 4: Вывести результаты в виде таблицы
def display_table(counts):
    df = pd.DataFrame(counts.items(), columns=['Pair', 'Count'])
    df = df.sort_values(by='Count', ascending=False).reset_index(drop=True)
    print(df)

# Основная часть программы
def main():
    filename = 'ваш текст.txt'  # Замените на имя вашего файла
    text = read_file(filename)
    pairs = get_letter_pairs(text)
    counts = count_pairs(pairs)
    display_table(counts)

if __name__ == "__main__":
    main()


Объяснение работы алгоритма:

Чтение файла: Функция read_file читает текст из указанного файла.
Разделение на пары: Функция get_letter_pairs удаляет пробелы и знаки препинания из текста, затем создает список всех возможных пар букв.
Подсчет пар: Функция count_pairs использует Counter для подсчета частоты каждой пары.
Вывод таблицы: Функция display_table использует библиотеку pandas для создания и вывода таблицы с частотами пар.
Убедитесь, что у вас установлена библиотека pandas. Если нет, вы можете установить её с помощью команды pip install pandas.




import re
from collections import Counter

# Функция для разбивки текста на пары букв
def split_into_pairs(text):
    text = re.sub(r'\s+', '', text)  # Удаление пробелов
    pairs = [text[i:i+2] for i in range(0, len(text) - 1, 2)]
   
    # Если длина текста нечетная, добавляем последнюю букву к предыдущей паре
    if len(text) % 2 != 0:
        pairs[-1] += text[-1]
   
    return pairs

# Функция для подсчета частоты пар букв
def count_pairs(pairs):
    return Counter(pairs)

# Чтение текста из файла и выполнение подсчета
def process_file(filename):
    with open(filename, 'r', encoding='utf-8') as file:
        text = file.read()
       
    pairs = split_into_pairs(text)
    pair_counts = count_pairs(pairs)
   
    # Вывод результата в виде таблицы
    print(f"{'Пара букв':<10} {'Частота'}")
    print("-" * 20)
    for pair, count in pair_counts.items():
        print(f"{pair:<10} {count}")

# Замените 'yourfile.txt' на имя вашего файла
process_file('текст1.txt')





  **  коррекция кода =>





from collections import Counter
import pandas as pd

def read_file(filename):
    with open(filename, 'r', encoding='utf-8') as file:
        return file.read()

def get_letter_pairs(text):
    text = ''.join(filter(str.isalpha, text))
    pairs = [text[i:i+2] for i in range(len(text)-1)]
    return pairs

def count_pairs(pairs):
    return Counter(pairs)

def display_table(counts):
    df = pd.DataFrame(counts.items(), columns=['Pair', 'Count'])
    df = df.sort_values(by='Count', ascending=False).reset_index(drop=True)
    pd.set_option('display.max_rows', None)  # Отображать все строки
    print(df)

def main():
    filename = 'your_file.txt'  # Замените на имя вашего файла
    text = read_file(filename)
    pairs = get_letter_pairs(text)
    counts = count_pairs(pairs)
    display_table(counts)

if __name__ == "__main__":
    main()







   Pair  Count
0    то     12
1    от     10
2    та      7
3    ом      6
4    по      5
5    чт      5
6    уч      5
7    му      5
8    ак      4
9    оо      3
10   тт      3
11   би      2
12   ры      2
13   ыв      2
14   ае      2
15   ви      2
16   ем      2
17   ко      2
18   ле      2
19   ст      2
20   ов      2
21   ит      1
22   чч      1
23   сч      1
24   уу      1
25   мм      1
26   чи      1
27   ап      1
28   ми      1
29   ып      1
30   хп      1
31   вт      1
32   ор      1
33   их      1



  **


есть текст в файле txt

потому что так

потомучтотак

разбиваем пары всех комбинаций букв и считаем их повторы

по то му чт от ак
от ом уч то та

по
от
то
ом
му
уч
чт
то
от
та
ак

далее выводим это в виде таблицы




    Pair  Count
0     ов      7
1     та      6
2     то      5
3     ем      5
4     эт      4
5     ае      4
6     сл      4
7     ак      4
8     ит      3
9     те      3
10    ом      3
11    ры      3
12    но      3
13    на      3
14    ле      3
15    вс      3
16    вв      2
17    де      2
18    ви      2
19    ва      2
20    кв      2
21    ук      2
22    мп      2
23    па      2
24    ар      2
25    ыв      2
26    сч      2
27    бу      2
28    ди      2
29    мы      2
30    мэ      2
31    мс      2
32    им      2
33    от      2
34    би      2
35    чи      2
36    по      2
37    сё      2
38    ел      2
39    хо      2
40    ми      2
41    ин      2
42    ат      2
43    вт      2
44    лу      2
45    од      2
46    уч      2
47    ча      2
48    за      2
49    ыс      2
50    ис      2
51    ор      2
52    кс      2
53    иб      1
54    бы      1
55    ер      1
56    ки      1
57    рн      1
58    ло      1
59    ве      1
60    ав      1
61    ен      1
62    ст      1
63    ек      1
64    ыб      1
65    еп      1
66    ые      1
67    ыл      1
68    ма      1
69    ёз      1
70    ла      1



 **


задание для gpt
нужно просканировать тексты txt в папках на рабочем столе
C:\Users\MSI\Desktop

в следующих папках и их вложениях
->
стихи
текст книги будущее фантастика
новые тексты ред
мой бот
фразы

и сделать из найденных слов (в этих всех папках) словарь
сохранить его в файле txt

Для выполнения этой задачи вам нужно написать скрипт, который будет искать все .txt файлы в указанных папках и их вложениях, собирать из них все уникальные слова и сохранять их в отдельный файл. Вот как можно сделать это на языке Python:

Импортируйте необходимые модули:

os для работы с файловой системой.
re для регулярных выражений (поиск слов).
collections для хранения уникальных слов.
Пройдитесь по указанным папкам и их вложенным папкам для поиска .txt файлов.

Соберите уникальные слова из найденных файлов.

Запишите уникальные слова в новый файл.

Ниже приведен пример Python-кода, который делает все вышеперечисленное:



  ** ---->


import os
import re
from collections import defaultdict

# Укажите путь к рабочему столу
desktop_path = r'C:\Users\MSI\Desktop'

# Укажите папки для сканирования
folders = [
    'стихи',
    'текст книги будущее фантастика',
    'новые тексты ред',
    'мой бот',
    'фразы'
]

# Создаем пустое множество для хранения уникальных слов
unique_words = set()

# Функция для поиска и чтения всех .txt файлов в папке и вложенных папках
def scan_folder(folder_path):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.endswith('.txt'):
                file_path = os.path.join(root, file)
                with open(file_path, 'r', encoding='utf-8', errors='ignore') as f:
                text = f.read()
                # Используем регулярное выражение для поиска слов
                words = re.findall(r'\b\w+\b', text.lower())
                unique_words.update(words)

# Проходим по всем указанным папкам
for folder in folders:
    folder_path = os.path.join(desktop_path, folder)
    if os.path.isdir(folder_path):
        scan_folder(folder_path)
    else:
        print(f"Папка {folder} не найдена.")

# Записываем уникальные слова в файл
output_file = os.path.join(desktop_path, 'словарь.txt')
with open(output_file, 'w', encoding='utf-8') as f:
    for word in sorted(unique_words):
        f.write(word + '\n')

print(f"Словарь сохранен в {output_file}.")



----------------------------------



Объяснение работы этого кода:
Пути и папки:

desktop_path — путь к рабочему столу.
folders — список папок для сканирования.
Функция scan_folder:

Использует os.walk для рекурсивного поиска файлов.
Открывает каждый .txt файл и извлекает слова с помощью регулярных выражений.
Запись слов в файл:

Сортируем слова и записываем их в файл словарь.txt.
Перед запуском кода убедитесь, что у вас установлен Python и правильно настроены пути и папки.


Рецензии

В субботу 22 февраля состоится мероприятие загородного литературного клуба в Подмосковье в отеле «Малаховский дворец». Запланированы семинары известных поэтов, гала-ужин с концертной программой.  Подробнее →