Самоанализ языка Wolfram Language
База знаний Wolfram Knowledgebase содержит не только информацию об объектах и явлениях внешнего мира, но и подробные сведения о языке Wolfram, Wolfram Language. Эти знания могут быть использованы для изучения структуры (и эволюции) данного языка. Они также могут помочь в обнаружении функциональных аспектов интересующих пользователя вопросов. Для этого, неявно определенные классы сущностей используются для идентификации символов языка, удовлетворяющих заданным критериям.
Воспользуемся неявно определенным классом сущностей, чтобы идентифицировать символы Wolfram Language, введенные в версии 11.
![Click for copyable input](assets.ru/wolfram-language-self-analysis/In_61.png)
EntityList[
EntityClass["WolframLanguageSymbol", "VersionIntroduced" -> 11]] //
Take[#, 20] &
![](assets.ru/wolfram-language-self-analysis/O_46.png)
Запросим список символов, добавленых в версии 10 и измененных в версии 11.
![Click for copyable input](assets.ru/wolfram-language-self-analysis/In_62.png)
EntityList[EntityClass["WolframLanguageSymbol",
{"VersionIntroduced" -> Interval[{10, 10.4}],
"VersionsModified" -> ContainsAny[{11}]}]]
![](assets.ru/wolfram-language-self-analysis/O_47.png)
Найдем символы, содержащие в их названии слова "Фридриха Гаусс".
![Click for copyable input](assets.ru/wolfram-language-self-analysis/In_63.png)
EntityList[
EntityClass[
"WolframLanguageSymbol", {"EponymousPeople" ->
ContainsAny[{Entity["Person", "CarlFriedrichGauss::4vctc"]}]}]]
![](assets.ru/wolfram-language-self-analysis/O_48.png)
Найдем графические символы, введенные в версиях 8-11 программного обеспечения Mathematica.
![Click for copyable input](assets.ru/wolfram-language-self-analysis/In_64.png)
EntityList[EntityClass["WolframLanguageSymbol", {
"FunctionalityAreas" -> ContainsAny[{"GraphicsPrimitiveSymbols"}],
"VersionIntroduced" -> Interval[{8, 11}]
}]]
![](assets.ru/wolfram-language-self-analysis/O_49.png)
Найдем наиболее часто используемые символы (во всех разделах), используя классификатор EntityProperty в сочетании с неявно определенным классом сущностей.
![Click for copyable input](assets.ru/wolfram-language-self-analysis/In_65.png)
EntityClass["WolframLanguageSymbol",
EntityProperty["WolframLanguageSymbol",
"Frequencies", {"Corpus" -> "All"}] -> TakeLargest[10]]
![](assets.ru/wolfram-language-self-analysis/O_50.png)
Рассмотрим содержание полученного отформатированного неявного класса сущностей, нажав на [+].
![](assets.ru/wolfram-language-self-analysis/O_51.png)
Разложим класс сущностей на составляющие компоненты с помощью функции EntityList.
![Click for copyable input](assets.ru/wolfram-language-self-analysis/In_66.png)
EntityClass["WolframLanguageSymbol",
EntityProperty["WolframLanguageSymbol",
"Frequencies", {"Corpus" -> "All"}] -> TakeLargest[10]];
EntityList[%]
![](assets.ru/wolfram-language-self-analysis/O_52.png)
Запросим частоту использования этих символов.
![Click for copyable input](assets.ru/wolfram-language-self-analysis/In_67.png)
EntityList[
EntityClass["WolframLanguageSymbol", "VersionIntroduced" -> 11]] //
Take[#, 20] &;
EntityList[%];
top10 = EntityValue[%,
EntityProperty["WolframLanguageSymbol",
"Frequencies", {"Corpus" -> "All"}], "EntityAssociation"]
![](assets.ru/wolfram-language-self-analysis/O_53.png)
Построим круговую диаграмму частоты использования этих символов.
![](assets.ru/wolfram-language-self-analysis/O_54.png)