токенизируем тексты на группы слов

def generate_trigrams(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        text = file.read()

    # Токенизация текста: разбиваем текст на слова
    tokens = text.split()

    # Генерация триграмм
    trigram_list = []
    for i in range(len(tokens) - 2):
        trigram = (tokens[i], tokens[i + 1], tokens[i + 2])
        trigram_list.append(trigram)

    return trigram_list

# это путь к вашему файлу
file_path = 'текст1.txt'
trigram_model = generate_trigrams(file_path)

# Вывод триграмм без скобок и кавычек
for trigram in trigram_model:
    print(' '.join(trigram))




вывод троек слов


нам нужна простая
нужна простая модель
простая модель этого
модель этого текста
этого текста в
текста в том
в том смысле
том смысле того
смысле того что
того что в
что в нём
в нём здесь
нём здесь есть
здесь есть достаточно
есть достаточно много
достаточно много эти
много эти вещи
эти вещи и
вещи и вопросы
и вопросы могут
вопросы могут изменить
могут изменить весь
изменить весь наш
весь наш мир
наш мир а
мир а чего
а чего может
чего может быть
может быть и
быть и немного
и немного не
немного не хватает
не хватает для
хватает для этого
для этого мы
этого мы найдём
мы найдём в
найдём в тексте
в тексте все
тексте все наши
все наши тройки
наши тройки слов
тройки слов автор
слов автор этих
автор этих слов
этих слов нашего
слов нашего текста
нашего текста остался
текста остался не
остался не таким
не таким простым
таким простым он
простым он нам
он нам здесь
нам здесь вроде
здесь вроде как
вроде как пока
как пока что
пока что не
что не известен
не известен я
известен я почему
я почему то
почему то об
то об это
об это не
это не думал
не думал до
думал до этого
до этого раньше
этого раньше может
раньше может быть
может быть так
быть так всё
так всё и
всё и было
и было в
было в этом
в этом смысле
этом смысле в
смысле в нашей
в нашей жизни
нашей жизни обычно
жизни обычно происходит
обычно происходит нечто
происходит нечто такое
нечто такое что
такое что нам
что нам сложно
нам сложно бывает
сложно бывает вот
бывает вот так
вот так понять
так понять без
понять без проблем
без проблем эти
проблем эти домыслы
эти домыслы нам
домыслы нам теперь
нам теперь кажется
теперь кажется почти
кажется почти что
почти что не
что не нужны
не нужны тогда
нужны тогда или
тогда или теперь
или теперь я
теперь я попробую
я попробую понять
попробую понять это
понять это немного
это немного лучше


*


Чтение файла: Открываем текстовый файл в кодировке UTF-8 и читаем его содержимое.
Токенизация: Разбиваем текст на слова, используя метод split(), который по умолчанию разделяет строку по пробелам.
Генерация триграмм: Используем цикл для создания триграмм. Мы проходим по индексам списка токенов и собираем группы из трех последовательно идущих слов.
Вывод триграмм: Печатаем каждую триграмму в формате, который вы хотите, с помощью метода join.
этот код будет работать без использования дополнительных библиотек и будет выводить триграммы слов из текста txt  текст1

* это код берет триграммы без учета разбиения текста на строки


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


* другой вариант этого кода ->



import nltk
from nltk import trigrams
from nltk.tokenize import word_tokenize

# Убедитесь, что вы скачали необходимые ресурсы NLTK
nltk.download('punkt')

# Функция для чтения файла и генерации триграмм
def generate_trigrams(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        text = file.read()

    # Токенизация текста
    tokens = word_tokenize(text)

    # Генерация триграмм
    trigram_list = list(trigrams(tokens))

    return trigram_list

# Укажите путь к вашему файлу
file_path = 'path/to/your/file.txt'
trigram_model = generate_trigrams(file_path)

# Вывод триграмм без скобок
for trigram in trigram_model:
    print(' '.join(trigram))



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



* ещё один вариант этого кода
 с сохранением групп слов в файл и очисткой от лишних символов
->




import re

# Чтение текста из файла
with open('текст2.txt', 'r', encoding='utf-8') as file:
    text = file.read()

# Удаление лишних символов, оставляя только буквы и пробелы
cleaned_text = re.sub(r'[^а-яА-ЯёЁa-zA-Z\s]', '', text)

# Разделение текста на слова
words = cleaned_text.split()

# Группировка слов по три
grouped_words = [' '.join(words[i:i + 3]) for i in range(0, len(words), 3)]

# Сохранение группированных слов в файл
with open('слова.txt', 'w', encoding='utf-8') as output_file:
    for group in grouped_words:
        output_file.write(group + '\n')

print("Группировка слов завершена. Результат сохранен в 'слова.txt'.")







это так ну и что -
есть на всё свой исход
что господняя воля
приносит нам время
и приходит опять
в этот мир новый год
чтобы разум людей
вновь во что то поверил
так поняв суть вещей
век нашёл свой ответ
на возглас в тиши
душ своих покаянных
что несут нам лишь свет
в мир сознаний желанных
средь желаний небес
всё нетленное вечно
то понятно не всем
что возникло средь звезд
пред душой как исток
мыслей всех скоротечных






**


import pymorphy2

# Функция для чтения пар слов из файла
def read_word_pairs(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        pairs = [line.strip().split() for line in file if line.strip()]
    return pairs

# Инициализация морфологического анализатора
morph = pymorphy2.MorphAnalyzer()

# Функция для анализа слова
def analyze_word(word):
    return morph.parse(word)

# Функция для получения информации о слове
def get_word_info(word):
    parsed = analyze_word(word)
    return parsed[0]  # Возвращаем первую (наиболее вероятную) форму

# Функция для группировки слов по склонению и роду
def group_words(pairs):
    grouped = {}
   
    for pair in pairs:
        word1_info = get_word_info(pair[0])
        word2_info = get_word_info(pair[1])
       
        # Используем род, падеж и число для группировки
        key = (word1_info.tag.gender, word1_info.tag.case, word1_info.tag.number)
       
        if key not in grouped:
            grouped[key] = []
        grouped[key].append(pair)
   
    return grouped

# Функция для создания новых комбинаций
def create_combinations(grouped):
    combinations = []
   
    for key, pairs in grouped.items():
        if len(pairs) >= 2:  # Нужно как минимум 2 пары для создания комбинаций
            for i in range(len(pairs)):
                for j in range(i + 1, len(pairs)):
                combinations.append((pairs[i][0], pairs[i][1], pairs[j][0], pairs[j][1]))
   
    return combinations

# Основная функция
def main():
    file_path = 'пары2.txt'  # Здесь укажите путь к вашему файлу с парами слов
    pairs = read_word_pairs(file_path)
    grouped = group_words(pairs)
    combinations = create_combinations(grouped)

    # Выводим найденные комбинации в нужном формате
    for combo in combinations:
        print(' '.join(combo))  # Объединяем слова в строку с пробелами

if __name__ == "__main__":
    main()


Рецензии