Как создать словарь словарей словарей в PythonPython

Программы на Python
Ответить
Anonymous
 Как создать словарь словарей словарей в Python

Сообщение Anonymous »

Итак, я посещаю класс обработки естественного языка, и мне нужно создать языковую модель триграммы для генерации случайного текста, который в определенной степени выглядит «реалистично» на основе некоторых выборочных данных.
По сути, мне нужно создать «триграмму», чтобы хранить различные комбинации трехбуквенных грамматических слов. Мой профессор намекает, что это можно сделать, имея словарь словарей словарей, который я пытался создать, используя:

Код: Выделить всё

trigram = defaultdict( defaultdict(defaultdict(int)))
Однако я получаю сообщение об ошибке:

Код: Выделить всё

trigram = defaultdict( dict(dict(int)))
TypeError: 'type' object is not iterable
Как мне создать трехуровневый вложенный словарь или словарь словарей словарей целочисленных значений?
Обновление. Я предполагаю, что люди голосуют против вопроса о переполнении стека, если они не знают, как на него ответить. Я добавлю немного предыстории, чтобы лучше объяснить вопрос тем, кто хочет помочь.
Эта триграмма используется для отслеживания шаблонов тройных слов. Они используются в программном обеспечении для обработки текстового языка и почти везде при обработке естественного языка «подумайте о Siri или Google сейчас».
Если мы обозначим 3 уровня словарей как dict1 dict2 и dict3, то анализ текстового файла и чтение оператора "Мальчик бежит" будет иметь следующее:
Словарь dict1, имеющий ключ "the". Доступ к этому ключу вернет dict2, который содержит ключ «мальчик». Доступ к этому ключу вернет окончательный dict3, который будет содержать ключ «беги», теперь доступ к этому ключу вернет значение 1.
Это символизирует, что в этом тексте «мальчик бежит» появилось 1 раз. Если мы столкнемся с этим снова, мы повторим тот же процесс и увеличим 1 до двух. Если мы встретим «девушка идет», то dict2 словарь ключей «the» теперь будет содержать еще один ключ для «девушки», который будет иметь dict3 с ключом «прогулки» и значением 1 и так далее. В конце концов, после анализа тонны текста (и отслеживания количества слов) у вас будет триграмма, которая может определить вероятность того, что определенное начальное слово приведет к комбинации из трех слов, основываясь на частоте их появления в ранее проанализированном тексте.
Это может помочь вам создать грамматические правила для идентификации языков или, в моем случае, создать случайно сгенерированный текст, который очень похож на грамматический английский. Мне нужен трехслойный словарь, потому что в любой позиции из трех слов комбинация может быть еще одним словом, которое может создать совершенно другой набор комбинаций. Я ПЫТАЛСЯ изо всех сил, чтобы объяснить триграммы и их назначение, насколько это было возможно... правда, я только что описал класс пару недель назад.
Теперь... учитывая ВСЕ сказанное. Как мне создать словарь словарей, базовый словарь которых содержит значения типа int в Python?
trigram = defaultdict( defaultdict(defaultdict(int)))
выдает мне ошибку

Подробнее здесь: https://stackoverflow.com/questions/190 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»