Итак, я беру класс обработки естественного языка, и мне нужно создать модель языка триграмм для генерации случайного текста, который в определенной степени выглядит «реалистичным» на основе некоторой выборки данные.Как создать словарь словарей словарей в Python
Нужно создать «триграмму» для хранения различных комбинаций слов трех грамматической грамматики. Мой профессор намекает, что это может быть сделано при наличии словаря словарей словарей, которые я пытался создать с помощью:
trigram = defaultdict(defaultdict(defaultdict(int)))
Однако я получаю ошибку, которая говорит:
trigram = defaultdict(dict(dict(int)))
TypeError: 'type' object is not iterable
Как бы я делать создал 3-слойный вложенный словарь или словарь словарей словарей значений int
?
Я думаю, люди голосуют за вопрос о переполнении стека, если они не знают, как ответить на него. Я добавлю несколько примеров, чтобы лучше объяснить вопрос тем, кто хочет помочь.
Эта триграмма используется для отслеживания тройных шаблонов слов. Они используются в программном обеспечении для обработки текстового языка и почти повсюду в процессе обработки естественного языка «думаю, сири или google сейчас».
Если обозначить 3 уровня словарей как dict1 dict2 и dict3 затем разбор текстового файла и чтение о «Мальчик бежит» бы следующее:
dict1, который имеет ключ из". Доступ к этому ключу будет возвращать dict2, который содержит ключ «мальчик». Доступ к этому ключу будет возвращать окончательный dict3, который будет содержать ключевые «прогоны», которые теперь будут обращаться к этому ключу, вернет значение 1.
Это символизирует, что в этом тексте «мальчик бежит» появился 1 раз. Если мы снова столкнемся с этим, мы будем следовать одному и тому же процессу и с шагом 1 на два. Если мы столкнемся с «прогулкой девушки», тогда dict2 «словарь ключей» теперь будет содержать еще один ключ для «девушки», который будет иметь dict3, который имеет ключ «прогулки» и значение 1 и так далее. В конце концов после разбора тонны текста (и отслеживания количества слов) у вас будет триграмма, которая может определить вероятность определенного стартового слова, ведущего к комбинации из трех слов, основанной на частоте появления в предыдущем анализируемом тексте .
Это может помочь вам создать правила грамматики для идентификации языков или в моем случае созданный случайно сгенерированный текст, который очень похож на грамматический английский. Мне нужен трехслойный словарь, потому что в любой позиции 3-х словной комбинации может быть другой слово, которое может создать целый набор комбинаций. Я хотел бы лучше всего объяснить триграммы и цель, стоящую за ними, насколько это возможно ... предоставил я только что сказал класс пару недель назад.
Теперь .. со всем этим . Как мне приступить к созданию словаря словарей словарей, базовый словарь которых содержит значения типа int в python?
триграмма = defaultdict (defaultdict (defaultdict (целое)))
бросает ошибка для меня
Вы действительно сумасшедший кодер. –
@AlexA. Как я уже сказал, это классный профессор, который рекомендовал нам это сделать. Я думаю, это потому, что мы используем его для создания языковой модели, и у нас есть неизвестное количество ключей для каждого уровня словаря. – crazyCoder
Хе-хе, да, меня просто развлекал словарь словарей словарей. Насколько я знаю, для вашего случая использования это похоже на довольно разумный подход в мире Python. Не будьте слишком обескураженными вниз, так как ваш вопрос кажется справедливым, если вы спросите меня. –