По сути, мне нужно создать «триграмму», чтобы хранить различные комбинации трехбуквенных грамматических слов. Мой профессор намекает, что это можно сделать, имея словарь словарей словарей, который я пытался создать, используя:
Код: Выделить всё
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
Мобильная версия