Я думаю, что венгерская запись является интересной сноской вдоль 'пути' к большему количеству читаемого кода, и, если сделано правильно, предпочтительна для не сделанного он.
В высказывании этого, хотя, я покончил бы с ним, и вместо этого:
int vBox = aBottom * lVerticalSide;
запись это:
int boxVolume = bottomArea * verticalHeight;
Это - 2008. У нас больше нет починенных экранов ширины 80 символов!
кроме того, если Вы написали имена переменной, которые намного более длинны, чем это, необходимо смотреть на рефакторинг в объекты или функции так или иначе.
Вы можете выйти из коробки с именованным фрагментированием сущностей с помощью метода nltk.ne_chunk (). Требуется список кортежей с тегами POS:
nltk.ne_chunk ([('Barack', 'NNP'), ('Obama', 'NNP'), ('live', 'NNS'), ('in ',' IN '), (' Washington ',' NNP ')])
приводит к:
Tree (' S ', [Tree (' PERSON ', [(' Barack ',' NNP ') ]), Tree ('ORGANIZATION', [('Obama', 'NNP')]), ('живет', 'NNS'), ('in', 'IN'), Tree ('GPE', [( «Вашингтон», «ННП»)])])
Он идентифицирует Барака как человека, а Обаму как организацию. Так что не идеально.
Я также не смог найти блокировщик / мелкий парсер по умолчанию. Хотя в книге описано, как создать и обучить его, на примерах функций. Придумать дополнительные функции для достижения хорошей производительности не должно быть слишком сложно.
См. Раздел главы 7 о Обучение чанкеров на основе классификатора .