модель фразы из слов
нужно сделать словарь из текста txt
и затем определить части речи слов нашей фразы
(существительное, глагол, прилагательное, наречие, местоимение и так далее )
- затем найти эти же части речи в словаре
и сделать предложение в котором слова не связаны склонением
но имеют те же части речи и в той же последовательности что в первичной фразе
определить части речи слов можем с помощью NLTK
import collections
def create_dictionary(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read().lower()
words = text.split()
dictionary = collections.defaultdict(list)
for word in words:
dictionary[len(word)].append(word)
return dictionary
import nltk
from nltk import pos_tag, word_tokenize
def get_pos_tags(sentence):
tokens = word_tokenize(sentence)
tagged = pos_tag(tokens)
return tagged
def create_new_sentence(sentence, dictionary):
tagged = get_pos_tags(sentence)
new_sentence = []
for word, tag in tagged:
word_length = len(word)
if word_length in dictionary and dictionary[word_length]:
new_word = dictionary[word_length].pop()
new_sentence.append(new_word)
else:
new_sentence.append(word)
return ' '.join(new_sentence)
file_path = 'текст.txt'
sentence = input("Введите фразу: ")
dictionary = create_dictionary(file_path)
new_sentence = create_new_sentence(sentence, dictionary)
print(new_sentence)
= ещё один другой алгоритм ->
import random
def define_ideas(words):
# Для примера, просто вернем слова без изменений
return words
def group_words(words):
# Пример группировки слов по темам
groups = {
'природа': [],
'время': [],
'действие': []
}
for word in words:
if word in ['солнце', 'море']:
groups['природа'].append(word)
elif word == 'лето':
groups['время'].append(word)
elif word == 'отдых':
groups['действие'].append(word)
return groups
def create_basic_sentences(groups):
sentences = []
if groups['природа']:
sentences.append(f"{random.choice(groups['действие'])} у {random.choice(groups['природа'])}.")
return sentences
def add_context(sentences, groups):
if groups['время']:
context_sentence = f"{random.choice(groups['время'])} я люблю " + ' '.join(sentences)
return context_sentence
return sentences[0]
def check_meaning(phrase):
# В данном случае просто выведем фразу
print("Полученная фраза:", phrase)
def main():
words = ["солнце", "море", "лето", "отдых"]
# Шаг 1: Определение основных идей
ideas = define_ideas(words)
# Шаг 2: Группировка слов
grouped_words = group_words(ideas)
# Шаг 3: Создание базовых предложений
basic_sentences = create_basic_sentences(grouped_words)
# Шаг 4: Добавление контекста
final_phrase = add_context(basic_sentences, grouped_words)
# Шаг 5: Проверка на смысл
check_meaning(final_phrase)
if __name__ == "__main__":
main()
Объяснение кода:
Определение идей: В функции define_ideas мы просто возвращаем слова без изменений. В реальном приложении можно было бы использовать более сложные методы для анализа слов.
Группировка слов: В функции group_words мы создаем словарь, в котором слова группируются по темам. Здесь вы можете добавить больше тем и слов по вашему усмотрению.
Создание базовых предложений: В функции create_basic_sentences мы формируем простые предложения, выбирая случайные слова из групп.
Добавление контекста: В функции add_context мы добавляем временной контекст к базовым предложениям.
Проверка на смысл: В функции check_meaning мы просто выводим полученную фразу
import itertools
# Чтение файла
with open('слова.txt', 'r', encoding='utf-8') as file:
content = file.read()
# Разделение на наборы слов
word_sets = [set.split() for set in content.split('=\n')]
# Генерация всех возможных комбинаций
combinations = list(itertools.product(*word_sets))
# Форматирование и вывод результата
for combo in combinations:
print(' '.join(combo))
файл данных txt
набор слов 1
=
набор слов 2
=
набор слов 3
Свидетельство о публикации №125012803936