словарь из групп 3 слов
вот скрипт на Python который решает эту задачу.
```python
import os
import re
def is_russian_word(word):
# Проверяем, что слово содержит только русские буквы и длина >= 3
return bool(re.fullmatch(r'[а-яё]{3,}', word))
def normalize_word(word):
# Приводим к нижнему регистру и заменяем ё на е (если нужно)
return word.lower().replace('ё', 'е')
def get_txt_files(folder):
return [f for f in os.listdir(folder) if f.endswith('.txt')]
def extract_triples_from_text(text):
# Разбиваем текст на слова
words = re.findall(r'[а-яёА-ЯЁ]{3,}', text, flags=re.IGNORECASE)
words = [normalize_word(w) for w in words if is_russian_word(normalize_word(w))]
triples = set()
for i in range(len(words) - 2):
triple = (words[i], words[i+1], words[i+2])
triples.add(triple)
return triples
def save_triples(triples, filenames):
# Сортируем по первому слову
sorted_triples = sorted(triples, key=lambda x: x[0])
# Делим на 3 части примерно поровну
n = len(sorted_triples)
part_size = n // 3
parts = [
sorted_triples[:part_size],
sorted_triples[part_size:2*part_size],
sorted_triples[2*part_size:]
]
for i, part in enumerate(parts):
with open(filenames[i], 'w', encoding='utf-8') as f:
for triple in part:
f.write(' '.join(triple) + '\n')
def main():
folder = '.' # текущая папка
txt_files = get_txt_files(folder)
all_triples = set()
for filename in txt_files:
with open(filename, 'r', encoding='utf-8') as f:
text = f.read()
triples = extract_triples_from_text(text)
all_triples.update(triples)
save_triples(all_triples, ['word1.txt', 'word2.txt', 'word3.txt'])
print(f"Обработано {len(txt_files)} файлов, найдено {len(all_triples)} уникальных групп.")
if __name__ == "__main__":
main()
```
Как работает скрипт:
Сканирует все .txt файлы в текущей папке.
Извлекает из каждого файла слова, состоящие из русских букв длиной не менее 3, приводя их к нижнему регистру.
Формирует уникальные тройки соседних слов (триады).
Собирает все тройки из всех файлов в одно множество (чтобы избежать повторов)
Сортирует тройки по первому слову
Делит результат на три части и записывает в три файла
word1.txt, word2.txt, word3.txt
Обработано 3 файла txt,
найдено 7 515 990 уникальных групп слов
размер полученного словаря - 308 Мб
Свидетельство о публикации №125080606313